Citar:
Criado Inicialmente por investmax
Bom dia,
Achei o site ótimo, a internet tem carência de um bom site desse assunto em portugues.
Eu tenho boa noção de programação em outras liguaguens, e desenvolvi alguns EA para testes. O problema é que não tenho um amplo conhecimento com essa linguagem, então gostaria de uma ajuda de vcs.
O que estou precisando é simples, aumentar os lotes em função do sucesso ou insucesso da ultima ordem.
O que fiz foi usar o AccountBalance() para definir essa rotina, o problema eh que na pratica se eu operar com outro ativo, fura o esquema do EA.
Então o que eu precisaria, seria Fazer a seguinte pergunta na linguagem mql4 antes de abri uma nova ordem: A ultima ordem enviada (Esteja ela aberta ou fechada) por este EA neste ativo esta em Lucro (ou deu lucro, caso ja esteja fechada)?
tentei usar OrderOpenPrice ou OrderTakeProfit, mas não achei uma forma de definir a ultima ordem enviar pelo mesmo EA àquele mesmo ativo.
Agradeço desde ja por vossa atenção,
|
É assim, no Metatrader, da mesma forma como podemos saber que as ordens dadas ou abertas ou fechadas etc são longas ou curtas e que podemos também saber o seu lucro etc, também podemos saber em que activo foram executadas.
Vejamos este exemplo:
for cnt=1 to TotalTrades {
if OrderValue(cnt,VAL_TYPE)<=OP_SELL and //Está aberta a posição como OP_BUY ou OP_SELL?
OrderValue(cnt,VAL_SYMBOL)=Symbol then {//É o activo que queremos? Tipo, EURUSD ou EURGBP, etc...
If OrderValue(cnt,VAL_TYPE)=OP_BUY then {//Está aberta posição longa...
//Código aqui...
}
}
}
Neste exemplo vemos que ele vai ver todas as trades que estão abertas (pelo valor da OrderValue), em que neste caso vemos se está aberta como Buy ou Sell, podemos também ver se é do activo que queremos, neste caso, ele vai ver se as ordens se referem ao activo que temos aberto, se for o EURUSD ele só executa a condição se as ordens se referirem ao activo EURUSD também, senão ignora-as.
A última condição if pergunta se é uma ordem longa, poderia perguntar se a ordem é curta etc.
Se forem estudados estes comandos dá para se fazer isso.
Basicamente, podemos ter 100 activos abertos, e o mesmo Expert Advisor, se tiver no EURUSD, só vai abrir e fechar ordens do EURUSD, e no EURGBP só vai abrir e fechar ordens do EURGBP, devido à condição do Symbol em que verifica se são referentes ao activo actual.
Neste caso são procuradas ordens abertas, e na 3ª condição, longas, mas pode ser alterado.
Mas o importante da dúvida (acho eu) era o querer que ele aja só em ordens referentes ao activo do gráfico actual e isso é resolvido com o Symbol acima.