Problemas encontrados durante os testes posteriores e não é possível encontrar a causa raiz!

 

Favor consultar a captura de tela abaixo após os testes anteriores.

3 perguntas sobre as coisas estranhas também são mostradas na foto.

Li o uso do iCustom e verifiquei minha EA e meu indicador uma e outra vez, finalmente não consigo encontrar a causa raiz.

Por favor, ajude urgentemente e muito obrigado!

(*. Você pode clicar na captura de tela para abri-la e ampliá-la para ver as perguntas mais claramente)

Estes são os códigos críticos para o indicador "Reverter" (outros códigos foram substituídos por "..." para que fique claro para os códigos críticos):

int OnInit()
  {
   IndicatorBuffers(8);
   ....
   SetIndexBuffer(6,ExtBuffer1);
   ....
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ...
   ...

   for(i=limit-1; i>=0; i--)
     {
      ...
      Value=...;
      ExtBuffer0[i]=MathLog((1+Value)/(1-Value));
      if(ExtBuffer0[i]>0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;
     }

   ...
   ...
  }

Estes são os códigos críticos na EA para usar o indicador (outros códigos foram substituídos por "..." para que fique claro para os códigos críticos):

...
...

void Reverse()
  {
   Joy1=iCustom(Symbol(),0,"Reverse",6,1);
   Joy2=iCustom(Symbol(),0,"Reverse",6,2);
  }

void openPosition()
  {
   ...
   if(Joy2<=-10 && Joy1>=10) 
    {
    r=OrderSend(Symbol(),OP_BUY,lotSize,Ask,slippage,0,0,TradeComment,MAGIC,0,clrMediumBlue);
    ...
    }
   else if(Joy2>=10&& Joy1<=-10) 
    {
    r=OrderSend(Symbol(),OP_SELL,lotSize,Bid,slippage,0,0,TradeComment,MAGIC,0,clrMediumVioletRed);
    ...
    }
   ...
   }
void closePosition()
  {
   ...
    if(openType==OP_BUY && Joy2>=10 && Joy1<=-10)
     for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrDodgerBlue);
            ...
            }
   else if(openType==OP_SELL && Joy2<=-10 && Joy1>=10) 
    for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Ask,slippage,clrDeepPink);
            ...
            }
   ...  
  }
void OnTick()
  {
   ...
   Reverse();
   openPosition();
   closePosition(); 

}

 

Agora eu recrio o arquivo indicador e a questão do desenho da linha amarela foi resolvida.

Entretanto, essas outras duas questões ainda não têm nenhuma idéia. Por favor, ajude-me!

 

O problema provavelmente vem de seu indicador

 if(ExtBuffer0[i]>= 0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;

verifique também seu EmptyValue

 
ffoorr:

O problema provavelmente vem de seu indicador

verifique também seu EmptyValue

Caro ffoorr, não deve haver nenhum valor vazio como você pode ver com a linha amarela.

 

e se(ExtBuffer0[i]==0)

seguindo o que está em seu SetIndexEmptyValue, você teria um buraco, um nada,

A linha não seria impressa até os dois dados seguintes.


Caso contrário, verifique o índice de seu indicador, parece que o sinal está uma barra atrasado

Caso contrário, ninguém pode saber sem ver o código indicador


Você está usando algum indicador de pescador?

 

Caro Ffoorr, muito obrigado pela ajuda. Mas eu verifiquei o indicador com códigos e posso confirmar que não há nenhum valor vazio.

Reinstalei o tick story e o MT4, o problema ainda está lá. Portanto, ainda estou verificando.

 

jollydragon

se não há SetindicatorEmptyValue, então o valor vazio é EMPTY_VALUE

então se você codificar if( ExtBuffer1[i]!= 10 ) Open_Order()

se ExtBuffer1[i] for == EMPTY_VALUE , você terá um pedido


Mas eu também não posso saber se esta é a causa do problema.

 

Caro ffoorr, acrescentei códigos para mostrar os dados deExtBuffer1[i] seExtBuffer1 não for 10 ou -10. Finalmente não tenho nada e isso prova queo ExtBuffer1 é 10 ou -10 para cada barra.

Também atualizei o indicador para apenas 2 buffers com 2 linhas. Você pode ver 1 em branco e 1 em amarelo. Eu uso os dados da linha amarela em meu EA.

Por favor, consulte os dados abaixo, você pode ver quando o pedido muda, ele foi causado exatamente porque os dados da linha amarela recebida estão mudando. 1' abaixo significa os dados da linha amarela do bar imediatamente antes da abertura ou fechamento do pedido, '2' significa os dados da linha amarela do bar antes de '1'. Também é assim que eu lido com a abertura e o fechamento do pedido.

Eu também verifiquei o código indicador repetidamente, para poder confirmar que o indicador é calculado com base nas barras antes dele e, portanto, não é um indicador de pescador.

No entanto, é possível ver que as ordens mudam ainda não de acordo com a linha amarela (sinal).

É tão estranho! Qual pode ser a possível causa raiz? Quem pode ajudar e eu ficarei tão grato?

2013.04.30 04:00:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 08:30:01:    1:  10.0, 2: -10.0-error:       0

2013.04.30 08:30:02:    1:  10.0, 2: -10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 16:03:26:    1:  10.0, 2:  10.0-error:       0

 
Oh, meu Deus. Ainda não tenho nenhuma idéia com isto. O que está errado?
 
jollydragon: Meu Deus. Ainda não tenho nenhuma idéia com isto. O que está errado?
  1. Como diabos devemos saber? Você não afixou todo o código (sem indicador, sem iCustom, sem loops)
  2. Você diz que o indicador ainda tem um 10, mas a (primeira) imagem mostra lacunas. Não temos a menor idéia de onde estava o cursor. Estava sobre a lacuna?
  3. Você não tem idéia porque não tem nenhuma informação. Adicione declarações impressas antes e dentro se incluir valores variáveis e rastreie-as.
 

Queridos, na verdade, subtraí os códigos críticos para que vocês poupem seu tempo.

No entanto, sua ajuda é muito apreciada e aqui deixe-me anexar os arquivos tanto da EA como do indicador.

Por favor, note que os nomes dos arquivos mudaram automaticamente após anexados. Há uma letra aleatória inserida entre 2 palavras. Em meu computador, elas são "Trade Joy" e "Solar Joy".

Ansioso pela solução :-)

Arquivos anexados:
tradebjoy.mq4  12 kb
trademjoy.ex4  17 kb
solarxjoy.mq4  7 kb
solarcjoy.ex4  8 kb