Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 912

 
drknn:

Tenho visto algum comportamento estranho no testador de estratégias. Meus conjuntos EA e redes de arrasto pendentes de ordens de parada. Acontece o seguinte. O Expert Advisor estabelece uma parada de compra e venda a 30 pips do preço atual (símbolo - GbpUsd. Quatro dígitos. Nível mínimo = 3 pips). Depois de um tempo, ele os puxa para cima seguindo o mercado, se eles não acionaram. Então o que eu vejo. a modificação é bem sucedida, a modificação é bem sucedida, e então em algum momento aparece o slams e o erro nº 1. Ou seja, tudo estava bem, a EA estava fazendo as mesmas ações e de repente este erro aparece. Todos os preços foram normalizados em dígitos. Em geral, todos os valores que são passados para a função OrderModify() são normalizados!

Qual pode ser a razão para tal comportamento do Assessor Especialista no testador?

A normalização deve ser feita para verificar se a modificação é necessária. É melhor comparar a diferença de preço modificada com zero.

if(NormalizeDouble(цена1 - цена2, _Digits) != 0)


Dependendo da condição, pode ser melhor colocar < ou > zero.

 
Viktorline14:

Muito obrigado mais uma vez!

Agora há um problema, a EA abre vários pedidos seguidos, não um como eu queria(

int start()



  { S1a = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_MAIN, 1), 0);

   S1b = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_SIGNAL, 1), 0);

   

   if(MyOrderStateB == 1)Sleep(300000);

    else MyOrderStateB = 0;

   if(MyOrderStateS == 1)Sleep(300000);

    else MyOrderStateS = 0;

    

 

     

   if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, Bid - SL * Point, Ask + TP * Point, NULL, 0, 0,clrBlue))

   Print("Opening Buy error #", GetLastError());  

     else Sleep(2);

   MyOrderStateB = 1;

  

   


      

   if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )


    

    

       if(!OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point , NULL, 0, 0,clrRed))

       Print("Opening Sell error #", GetLastError()); 

       else Sleep(2);

       MyOrderStateS = 1;

       

      

       

       

       

   return(0);}


É mais ou menos assim.

  int start()

     {
      S1a=NormalizeDouble(iStochastic(NULL,0,S1_period,3,S1_slowing,MODE_SMA,1,MODE_MAIN,1),0);
      S1b=NormalizeDouble(iStochastic(NULL,0,S1_period,3,S1_slowing,MODE_SMA,1,MODE_SIGNAL,1),0);

      if(S1a==S1b && S1a<20.0000 && S1b<20.0000 && MyOrderStateB==0)
         (
        if(!OrderSend(Symbol(),OP_BUY,OrderValue,NormalizeDouble(Ask,Digits),Slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,clrBlue))
            Print("Opening Buy error #",GetLastError());
          else
            MyOrderStateB=1;
         )

      if(S1a==S1b && S1a>80.0000 && S1b>80.0000 && MyOrderStateS==0)
        {
       if(!OrderSend(Symbol(),OP_SELL,OrderValue,NormalizeDouble(Bid,Digits),Slippage,Ask+SL*Point,Bid-TP*Point,NULL,0,0,clrRed))
            Print("Opening Sell error #",GetLastError());
         else
            MyOrderStateS=1;
        }



      return(0);
     }
 
Olá, você poderia me dizer, por favor, por que empurrar mensagens às vezes com um atraso? Hoje, depois de ligar o terminal, as mensagens chegaram ao meu telefone meia hora mais tarde. A Internet estava OK (o telefone estava perto do meu wifi). Na maior parte do tempo, é claro, tudo acontece sem tais atrasos. Como tornar mais estável o recebimento de mensagens push?
 
halk2009:
Olá, você poderia me dizer, por favor, por que empurrar mensagens às vezes com um atraso? Hoje, depois de ligar o terminal, as mensagens chegaram ao meu telefone meia hora mais tarde. A Internet estava OK (o telefone estava perto do meu wifi). Na maior parte do tempo, é claro, tudo acontece sem tais atrasos. Como tornar mais estável o recebimento de mensagens push?
Alguém garantiu o envio de mensagens instantâneas?
 
evillive:
Alguém garante o envio de mensagens instantâneas?
Não sei) é por isso que estou perguntando. Na maioria das vezes as mensagens vêm instantaneamente, eu só quero que seja assim o tempo todo!) Talvez haja alguns aspectos técnicos que possam ser ajustados para aumentar a confiabilidade da recepção de mensagens push.
 
Rapazes, aqui está o lixo. Coloquei Paysound no EA para tocar o som durante o sinal, mas minha placa de áudio começou a se contrair. Ou seja, há algum tipo de som de curto prazo, sacudindo. Eu desligo o terminal e tudo é normal. O som está tocando o padrão..... O que pode ser?
 
drknn:

Tenho visto algum comportamento estranho no testador de estratégias. Meus conjuntos EA e redes de arrasto pendentes de ordens de parada. Acontece o seguinte. O Expert Advisor estabelece uma parada de compra e venda a 30 pips do preço atual (símbolo - GbpUsd. Quatro dígitos. Nível mínimo = 3 pips). Depois de um tempo, ele os puxa para cima seguindo o mercado, se eles não acionaram. Então o que eu vejo. a modificação é bem sucedida, a modificação é bem sucedida, e então em algum momento aparece o slams e o erro nº 1. Ou seja, tudo estava bem, a EA estava fazendo as mesmas ações e de repente este erro aparece. Todos os preços foram normalizados em dígitos. Em geral, todos os valores que são passados para a função OrderModify() são normalizados!

Qual pode ser a razão para tal comportamento da EA no testador?

Uma tentativa de modificar uma ordem sem alterar os valores de nenhum de seus parâmetros. Eu prestaria atenção às comparações não rígidas, tornando-as rigorosas.
 

Bom dia!

Você pode me dar uma dica? Você pode usar fórmulas para calcular ou uma referência...

Quantos pips no EURUSD o preço deve passar antes de parar = 50%, 200 de alavancagem são as condições comerciais do corretor em 1 lote. Margem de chamada = 100%.

Obrigado.

P.S. Eu sei que você precisa de um preço em pontos. Daí a contagem a partir daqui...

 
_Roman:

Bom dia!

Você pode me dar uma dica? Você pode usar fórmulas para calcular ou uma referência...

Quantos pips no EURUSD o preço deve passar antes de parar = 50%, 200 de alavancagem são as condições comerciais do corretor em 1 lote. Margem de chamada = 100%.

Obrigado.

P.S. Eu sei que você precisa de um preço em pontos. Daí a contagem a partir daqui...


É mais fácil quando a posição aumentou a equidade em 50% para contar pontos! A diferença em pips será a mesma! ;))
 
borilunad:
É mais fácil, quando a posição aumentou a equidade em 50%, contar pontos! A diferença em pips será a mesma! ;))

:-) Lá, a parada é calculada como uma porcentagem do valor do depósito.

Sim e ali na pergunta esqueci de especificar, por exemplo, com US$ 1000 em depósito.