O preço da lata != preço ? - página 6

 

Isso é o que eu chamo de uma lata dupla de vermes.... (trocadilho pretendido;)

Parece que de várias funções personalizadas propostas, nenhuma chegou a um consenso. Alguém se importa em compartilhar neste ponto (sem intenção de trocadilho), qual deles eles usam como função do dia a dia CompareDouble?

Obviamente, devemos usar alguma função CompareDouble personalizada, se quisermos sistemas confiáveis.

 

O problema pode ser ignorado, principalmente a menos que o valor EXATO seja importante.

Se eu estiver procurando abrir acima de um (possibilidade não padronizada) preço de gatilho, eu uso Bid > gatilho. Se acontecer de acionar pelo preço por causa do arredondamento, eu realmente não me importo.

Se eu estou procurando abrir AT ou em torno de um (possibilidade não normalizada) preço de gatilho, eu testei para uma lacuna: Bid > trigger && Bid < trigger+3*pips2dbl. O mercado pode facilmente mover um pip inteiro em um só tick, então Bid == trigger está sempre errado e MathAbs(bid-trigger) < Point/2 está correto mas o mais provável é que não funcione.

Se o igual é importante, como procurar mover um SL mas estou muito próximo do mercado(nível de parada) então e eu uso Bid - newSL > StopLelvel - Point/2

 
WHRoeder:

O problema pode ser ignorado, principalmente a menos que o valor EXATO seja importante.

Se eu estou procurando abrir acima de um (possibilidade não padronizada) preço de gatilho eu uso Bid > gatilho. Se acontecer de acionar pelo preço devido a arredondamento, eu realmente não me importo.

Se eu estou procurando abrir AT ou em torno de um (possibilidade não normalizada) preço de gatilho, eu testei para uma lacuna: Bid > trigger && Bid < trigger+3*pips2dbl. O mercado pode facilmente mover um pip inteiro em um só tick, então Bid == trigger está sempre errado e MathAbs(bid-trigger) < Point/2 está correto mas o mais provável é que não funcione.

Se o igual é importante, como procurar mover um SL mas estou muito próximo do mercado (nível de parada) então e eu uso Bid - newSL > StopLelvel - Point/2


Obrigado. Isso é o que eu chamaria de fio decocado...

Na verdade, o que você mencionou está muito próximo da minha aplicação: Estou estabelecendo se o novo TakeProfit é diferente (de acordo com os padrões de corretagem ou MQL4) do TakeProfit original já definido e enviado. Estou comparando dois valores indicadores e dois valores TakeProfit antes que a OrderModify seja chamada.

if (Volume[0]>1)return;
 
       for(int b=OrdersTotal()-1;b>=0; b--)
       {
       if(atr2kTP == atr2kTPAdjust|| btphold==btp)) return;//-----------This is where I am comparing them, and where the function would go.
         if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
           if(OrderMagicNumber()==MAGICMA)
             if(OrderSymbol()==Symbol())
                if(OrderType()==OP_BUY)                                  
                  atr2kTPAdjust=atr2kTP; 
                       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),btp,0,CLR_NONE);                          
 
       }              
         for(int s=OrdersTotal()-1;s>=0; s--)
         {
          if(atr2kTP == atr2kTPAdjust|| stphold==stp) return;
           if(OrderSelect(s,SELECT_BY_POS,MODE_TRADES))
             if(OrderMagicNumber()==MAGICMA)
               if(OrderSymbol()==Symbol())
                  if(OrderType()==OP_SELL)                      
                      atr2kTPAdjust=atr2kTP;                      
                        OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),stp,0,CLR_NONE);
         }
 }
 

Este foi meu código final do OrderMod, usando o filtro Point/2 para comparar os valores do Double Order. Erro trabalhado - SEMPRE e ordens modificadas todas as vezes. Obrigado!

void AutoAdjustTakeProfit()
{
if (Volume[0]>1 || atr2kTP == atr2kTPAdjust)return;  

       for(int b=OrdersTotal()-1;b>=0; b--)
          { 
            if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
               if(OrderMagicNumber()==MAGICMA)
                 if(OrderSymbol()==Symbol())
                    {          
                      if(OrderType()==OP_BUY)// buy ordeer section
                        {  
                          if((btphold-btp> Point/2) || (btphold-btp<-Point/2))  //--------------------------This is the DoubleCompare Code
                            {                                                                             
                              atr2kTPAdjust=atr2kTP; 
                              OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),btp,0,CLR_NONE);                          
                            }
                        } 
                     
                      if(OrderType()==OP_SELL) // Sell ordeer section
                        {   
                          if((stphold-stp>Point/2) || (stphold-stp <-Point/2)) //--------------------------This is the DoubleCompare Code
                            {                                                  
                               atr2kTPAdjust=atr2kTP;                      
                               OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),stp,0,CLR_NONE);
                            }
                        }
                    }
           }
}
 
  1. if (Volume[0]>1)return;
    Se você perder alguns carrapatos no início de uma nova barra, seu código não é executado. Use sempre o tempo
  2.   if((stphold-stp>Point/2) || (stphold-stp <-Point/2))
      if( MathAbs(stphold - stp) > Point/2) // Simplified
    Mais uma vez, você realmente se importa com os iguais? Se você usou:
      if( MathAbs(stphold - stp) >= Point)
    pode acionar em pouco menos de um ponto. Isso ainda é o mesmo que não ser igual.
  3. Por que mover um ponto, movê-los por pips e evitar o problema do roundoff, e ERR_TOO_FREQUENT_REQUESTS
 

newBar funciona muito bem.

MathAbs rocks, pensei que só convertia negativos no lado esquerdo das equações, não sabia que também converteria a diferença em valor positivo.

A precisão do ponto/2 não é importante para os meus propósitos de sinal. Eu só queria evitar os erros de arredondamento para evitar uma codificação fraca.

Eu preferiria pisar nos erros de freqüência, assim como nos erros de arredondamento. Portanto, quero usar os cálculos estáveis mais livres de erros, ao contrário do código de cálculo mais preciso.

Assim, ao aumentar minhas comparações TakeProfit MathAbs (stphold - stp) ainda mais para >2*pips, eu deveria ter a maior chance de eliminar os erros de arredondamento e os erros de freqüência ?

muito obrigado.

removed.

 
moneycode:

O novo bar funciona muito bem.

Anteriormente, encontrei problemas com a IsNewCandle, por isso mudei para um gatilho de volume. Se o processamento de tiquetaques de volume pode ser lento ou faltar, então velas também podem ser. Portanto, ambas foram uma má idéia...

Como a nova barra funciona bem, agora tentei identificar as ocorrências de falha do IsNewCandle, com este código abaixo:

A chamada de função IsNewCandle() está dentro do start(), ABOVE a nova linha de código de barras. (vender código mais baixo pic) Este teste de impressão não funcionou, em vez disso, ele foi impresso em cada nova barra.

Na minha opinião, é uma má idéia colocar uma nova verificação de barra em uma função, uma função é usada para tornar o código reutilizável . . tente ligar para IsNewCandle() duas vezes durante o mesmo primeiro tick de uma nova barra e veja que respostas você recebe . .

A propósito . . . este é um tópico fora de tópico para este tópico, se você deseja continuar a discussão, por favor, mova-o para um novo tópico. Eu arrumarei tudo mais tarde . .

 
WHRoeder:

....Desde que os preços só podem mudar por um múltiplo de ponto, o ponto/2 é apenas isso....


Se você estiver comparando preços, tudo bem. Se você estiver comparando o dobro, por exemplo, as médias de preço, o Ponto/2 não fará
 
HarriMQL4:

Se você estiver comparando preços, tudo bem. Se você estiver comparando o dobro, por exemplo, as médias de preço, o Ponto/2 não fará


Você notou o título deste tópico?

;)

 
HarriMQL4:

Se você estiver comparando preços, tudo bem. Se você estiver comparando o dobro, por exemplo, as médias de preço, o Ponto/2 não fará
Os preços são o dobro. . .