Como codificar? - página 311

 

Olá Mladen, como sempre, u rock!

mladen:
TerranceUse Close[0], nesse caso. Quase todas as EA estão usando Close para esse fim, então eu acho que funcionará para você também
 

...

Se sua EA é executada apenas quando a barra começa, pode ser por algumas razões :

- é limitado a trabalhar apenas em uma nova barra. Esta abordagem tem alguns problemas se as paradas de reboque e algumas coisas semelhantes forem administradas, mas se funcionar com parada fixa e ter lucro do que é tudo o mesmo

- ou é a verificação de sinais em uma barra fechada (que é a forma mais comum (e melhor) de verificação de sinais). Como conseqüência, parece que ela está fazendo isso quando uma nova barra é formada enquanto, na verdade, está recebendo sinais em uma barra fechada que acabou de ser formada. Trabalhar em uma barra fechada é a melhor prática em EAs e, se sua EA está trabalhando assim, é melhor não mudar nada.

Premeus:
Notei que minha EA não funcionava entre a mudança de preço no período M1. Eu sei que a EA será executada a cada tic-tac que entrar.

Mas eu vi que foi executado a cada novo bar que começou.

Estou me entendendo mal?

Existe a maneira como a força ea ativa cada carrapato que entra?

Eu tento controlar meus lucros e perdas usando lucros e perdas não em pips. Quando ocorre um pico, a EA não fecha a ordem quando chega a estabelecer lucros ou perdas até que ocorra uma nova barra.

Qualquer pessoa me ajuda a resolver este problema.

Eu sou novo na codificação da EA.

Agradecemos antecipadamente.
[Excluído]  

Obrigado, mladen.

Vou tentar sua sugestão.

 

Saudações Deuses codificadores,

Preciso de assistência para encontrar uma função de EA que controle a execução do envio de uma ordem, pois uma ordem não pode ser aberta se já existir uma ordem pelo mesmo preço.

lógica simples: se a ordem abre preço e tipo de ordem = uma ordem existente abre preço e tipo de ordem, então saia e procure o próximo critério de entrada

Além disso, preciso de uma função que impeça a execução de uma ordem se ela estiver a x pips de um preço já existente.

lógica simples: se o preço e o tipo de ordem aberta for < último preço e tipo de ordem aberta + x pips, então saia e procure pelo próximo critério de entrada

Obrigado,

Pip

 

...

Tente estas 2 funções
:Primeiro é descobrir se existe uma ordem com exatamente o mesmo preço em aberto já a Second

está verificando se existe uma ordem que está com pontos nnn a partir do preço desejado

Ambos retornam verdadeiros se o preço for igual ou se a distância do preço de algumas ordens atualmente abertas estiver com a distância especificada

bool existsAtSamePrice(int magicNumber, double price)

{

for (int i=OrdersTotal()-1; i>=0 ; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (CompareDouble(OrderOpenPrice(),price)) return(true);

}

return(false);

}

//

//

//

//

//

bool existsAtApproximatePrice(int magicNumber, double price, double distance)

{

for (int i=OrdersTotal()-1; i>=0 ; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (MathAbs(OrderOpenPrice()-price)< distance) return(true);

}

return(false);

}

//

//

//

//

//

bool CompareDouble(double val1, double val2)

{

return(NormalizeDouble(val1,Digits)==NormalizeDouble(val2,Digits));

}

Pip:
Saudações Deuses codificadores,

Preciso de assistência para encontrar uma função de EA que controle a execução do envio de uma ordem, pois uma ordem não pode ser aberta se já existir uma ordem pelo mesmo preço.

lógica simples: se a ordem abre preço e tipo de ordem = uma ordem existente abre preço e tipo de ordem, então saia e procure o próximo critério de entrada

Além disso, preciso de uma função que impeça a execução de uma ordem se ela estiver a x pips de um preço já existente.

lógica simples: se o preço e o tipo de ordem aberta for < último preço e tipo de ordem aberta + x pips, então saia e procure pelo próximo critério de entrada

Obrigado,

Pip
 
mladen:
Podem ser algumas razões, mas as mais comuns são :
- stop loss e/ou take profit estão muito próximos do preço atual -

seu corretor é um corretor do tipo ECN/STP, neste caso você tem que primeiro colocar uma ordem com stop loss e ter lucro ajustado para 0 e somente quando uma ordem é aberta você pode modificar o stop loss e/ou ter lucro para os valores desejados (honrando o ponto anterior, é claro)

Hi!

Obrigado pela ajuda!

Então, se eu não me desentendo, se eu inserir TakeProfit e StopLoss em OrderSend como "regras" Exsternal, esta EA só funciona bem em corretores não pertencentes à CEC?

desculpe pelo meu inglês

 

...

Sim

Com ECN/STP como corretores você tem que abrir um pedido com stop loss e/ou ter lucro definido como 0 e quando o pedido já estiver aberto, somente então você pode modificar o stop loss e/ou ter lucro

pearl1:
Hi!

Obrigado pela ajuda!

Então, se eu não me desentendi, se eu inserir TakeProfit e StopLoss em OrderSend como "regras" Exsternal, esta EA só funciona bem em corretores não pertencentes à CEC?

desculpe pelo meu inglês
 
mladen:
SimCom ECN/STP como corretores você tem que abrir um pedido com stop loss e/ou ter lucro definido como 0 e quando o pedido já estiver aberto, somente então você pode modificar o stop loss e/ou ter lucro

Obrigado novamente, então... como posso consertar isso? desculpe

 

...

Como eu disse, você tem que fazer isso em 2 etapas :

1. etapa - abrir uma ordem (usando OrderSend()) com stop los and take profit set to 0

2. passo - modificar essa ordem (usando OrderModify()) ajustando o stop loss e levar o lucro aos valores desejados

Portanto, o código tem que ser alterado para fazer o trabalho em 2 etapas, em vez disso, em uma

pearl1:
Obrigado novamente, então... como posso consertar isso? desculpe
[Excluído]  

Novo na codificação

Olá a todos,

Sou novo na codificação e tenho aprendido lentamente o idioma e a sintaxe, mas tenho me perguntado como o MT4 atualiza as variáveis.

Eu tentei codificar e simples EA que exibe o maior lucro que um comércio atualmente aberto teve e só deveria atualizar se uma nova alta for atingida, mas o que está acontecendo é que a quantidade está se movendo para baixo e para cima como o lucro faz, eu não consigo ver meu erro na lógica do código.

Eu verifico para ter certeza de que o comércio selecionado ainda está aberto.

t_CloseTime=OrderCloseTime(); //retorna 0 se o pedido não for fechado

if(t_CloseTime==0) //Order is closed if not zero.

{

if(OrderProfit() > LastProfitHigh) LastProfitHigh=OrderProfit();

if(LastProfitHigh >= MinProfit && MinProfitReached===falso) MinProfitReached=verdadeiro;

}//endif

Então se a lógica estiver correta, por que esta variável "LastProfitHigh" sobe e desce....

Obrigado por sua ajuda.