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.
 

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
 

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.