Problemi riscontrati durante il back testing e non si riesce a trovare la causa principale!

 

Si prega di fare riferimento allo screenshot qui sotto dopo il back testing.

3 domande sulle cose strane sono mostrate anche nell'immagine.

Ho letto l'uso di iCustom e controllo il mio EA e l'indicatore ancora e ancora, alla fine non riesco a trovare la causa principale.

Si prega di aiutare urgentemente e grazie mille!

(*. È possibile fare clic sullo screenshot per aprirlo e ingrandirlo per vedere le domande più chiaramente)

Questi sono i codici critici per l'indicatore "Reverse" (altri codici sono stati sostituiti con "..." in modo che sia chiaro per i codici critici):

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;
     }

   ...
   ...
  }

Questi sono i codici critici nell'EA per utilizzare l'indicatore (altri codici sono stati sostituiti con "..." in modo che sia chiaro per i codici critici):

...
...

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(); 

}

 

Ora ho ricreato il file dell'indicatore e il problema del disegno della linea gialla è stato risolto.

Tuttavia, questi altri 2 problemi non hanno ancora alcuna idea. Per favore, aiutatemi!

 

Il problema probabilmente viene dal tuo indicatore

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

controlla anche il tuo EmptyValue

 
ffoorr:

Il problema probabilmente viene dal tuo indicatore

controlla anche il tuo EmptyValue

Caro ffoorr, non ci dovrebbe essere nessun valore vuoto come puoi vedere con la linea gialla.

 

cosa succede se if(ExtBuffer0[i]==0)

seguendo quello che c'è nel vostro SetIndexEmptyValue, avreste un buco, un niente,

La linea non verrebbe stampata fino ai prossimi due dati.


Altrimenti controlla l'indice del tuo indicatore, sembra che il segnale sia in ritardo di una barra

Altrimenti nessuno può saperlo senza vedere il codice dell'indicatore


Stai usando un indicatore Fisher?

 

Caro ffoorr, grazie mille per l'aiuto. Ma ho controllato l'indicatore con i codici e posso confermare che non c'è nessun valore vuoto.

Ho reinstallato tick story e MT4, il problema è ancora lì. Quindi sto ancora controllando.

 

jollydragon

se non c'è SetindicatorEmptyValue, allora il valore vuoto è EMPTY_VALUE

allora se codifichi if( ExtBuffer1[i]!= 10 ) Open_Order()

se ExtBuffer1[i] è == EMPTY_VALUE , avrete un ordine


Ma non posso nemmeno sapere se questa è la causa del problema

 

Caro ffoorr, ho aggiunto dei codici per mostrare i dati diExtBuffer1[i] seExtBuffer1 non è 10 o -10. Alla fine non ho ottenuto nulla e dimostra cheExtBuffer1 è 10 o -10 per ogni barra.

Ho anche aggiornato l'indicatore a solo 2 buffer con 2 linee. Potete vedere 1 in bianco e 1 in giallo. Uso i dati della linea gialla nel mio EA.

Si prega di fare riferimento ai dati qui sotto, si può vedere quando l'ordine cambia, è stato causato esattamente perché i dati della linea gialla sono cambiati. '1' sotto significa i dati della linea gialla della barra appena prima che l'ordine si apra o si chiuda, '2' significa i dati della linea gialla della barra prima di '1'. Questo è anche il modo in cui gestisco l'apertura e la chiusura degli ordini.

Ho anche controllato il codice dell'indicatore più e più volte, quindi posso confermare che l'indicatore è calcolato in base alle barre precedenti e quindi non è un indicatore Fisher.

Tuttavia, potete vedere che il cambiamento degli ordini non è ancora coerente con la linea gialla (segnale).

È così strano! Quale può essere la possibile causa? Chi può aiutarmi e ve ne sarò molto 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, mio Dio. Non ho ancora nessuna idea con questo. Cosa c'è che non va?
 
jollydragon: Oh, mio Dio. Non ho ancora nessuna idea con questo. Cosa c'è che non va?
  1. Come diavolo facciamo a saperlo? Non hai postato tutto il codice (nessun indicatore, nessun iCustom, nessun ciclo).
  2. Dici che l'indicatore ha ancora un 10, ma la (prima) immagine mostra dei vuoti. Non abbiamo idea di dove fosse il tuo cursore. Era sopra il gap?
  3. Non ne avete idea perché non avete informazioni. Aggiungete dichiarazioni di stampa prima e dentro if che includono valori variabili e rintracciate il tutto.
 

Cari, in effetti ho sottratto i codici critici per voi per risparmiare il vostro tempo.

Tuttavia, il vostro aiuto è molto apprezzato e qui permettetemi di allegare i file sia dell'EA che dell'indicatore.

Si prega di notare che i nomi dei file sono cambiati automaticamente dopo l'allegato. C'è una lettera casuale inserita tra 2 parole. Nel mio computer sono "Trade Joy" e "Solar Joy".

In attesa della soluzione :-)

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