Backtest bilacio e equità

 

Ciao a tutti...

una domanda...

perchè nel back test la linea di equità si sposta ma quella di bilancio non segue l'equità e resta sempre nella stessa posizione,

spostandosi soltanto alla fine del backtest, congiungendosi con il bilancio?

grazie della risposta. 

 

Ciao,

Il saldo cambia solo quando chiudi una posizione - fissi l'utile o la perdita.

Quindi significa che il tuo EA non chiude le posizioni. E a fine test tutte le posizioni sono costrette a chiudere, ecco perché alla fine si vede il cambio di equilibrio.

 
Alexey Petrov #:

Ciao,

Il saldo cambia solo quando chiudi una posizione - fissi l'utile o la perdita.

Quindi significa che il tuo EA non chiude le posizioni. E a fine test tutte le posizioni sono costrette a chiudere, ecco perché alla fine si vede il cambio di equilibrio.

Ciao Alexey, intanto grazie per la risposta!

Se back testo con timeframe inferiori al daily, lo stesso exper chiude le posizioni...o meglio (le due linee bilancio ed equita si muovono vicine)

Come mai mi succede solo sul back test con grafico dailY? stesso problema per qualsiasi time frame a partire da un ora..

 

è vero non mi chiude la posizione...puoi aiutarmi??

ho inserito un if....tipo se la media di ora è maggiore della precedente...

se il prezzo e superiore alla media...

trade.sell()

e poi ho creato un void con close all sell position, ma non chiude evidentemente.... non capisco perchè...

 
Irene #:

è vero non mi chiude la posizione...puoi aiutarmi??

ho inserito un if....tipo se la media di ora è maggiore della precedente...

se il prezzo e superiore alla media...

trade.sell()

e poi ho creato un void con close all sell position, ma non chiude evidentemente.... non capisco perchè...

Pubblica la parte di codice che chiude le posizioni (utilizza l'apposito tasto quando pubblichi parti di codici) così gli diamo un'occhiata. 
 
Michele Catanzaro #:
Pubblica la parte di codice che chiude le posizioni (utilizza l'apposito tasto quando pubblichi parti di codici) così gli diamo un'occhiata. 
  {
        if
        (          PositionsTotal()>0
                && myMovingAverageArray2[1]>myMovingAverageArray3[1]
                && myMovingAverageArray2[1]<myMovingAverageArray1[1]
                && myMovingAverageArray1[1]>myMovingAverageArray3[1]
                && macd[1]>signal[1]
        )
                CloseAllSellPositions();
                Print("CHIUSA POSIZIONE short");
  }
//---------------------------------------------------------------//
//---------------------------------------------------------------//
void CloseAllSellPositions()
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      ulong  ticket=PositionGetTicket(i);                                       // ticket della posizione
      string position_symbol=PositionGetString(POSITION_SYMBOL);                // simbolo
      int    digits=(int)SymbolInfoInteger(position_symbol,SYMBOL_DIGITS);      // ticket della posizione
      ulong  magic=PositionGetInteger(POSITION_MAGIC);                          // MagicNumber della posizione
      double volume=PositionGetDouble(POSITION_VOLUME);                         // volume della posizione
      double sl=PositionGetDouble(POSITION_SL);                                 // Stop Loss della posizione
      ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
      ulong PositionDirection= PositionGetInteger(POSITION_TYPE);
      if(PositionDirection==POSITION_TYPE_SELL)
         trade.PositionClose(ticket);
     }
  }
 
Irene #:

E' sbagliata la funzione, dovrebbe essere all'incirca così:

void CloseAllSellPositions()
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      string position_symbol=PositionGetSymbol(i); //seleziono la posizione
      if (Symbol == position_symbol && magicnumber == PositionGetInteger(POSITION_MAGIC) && PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
        {
         ulong  ticket=PositionGetTicket(i);
         trade.PositionClose(ticket);
        }
     }
   }
 
Michele Catanzaro #:

E' sbagliata la funzione, dovrebbe essere all'incirca così:

ho provato...la funzione è corretta e ti ringazio,

ma non chiude le posizioni non capisco perchè....

 
Irene #:

ho provato...la funzione è corretta e ti ringazio,

ma non chiude le posizioni non capisco perchè....

Ricevi degli errori? La funzione PositionClose() riceve solo il ticket? 
 

Nessun errore, lancio l expert apre le posizioni short...ma non le chiude...

dal diario nessun errore. 

Come lo vedo se riceve il ticket?

GRAZIE. 

 
Dovresti fare un controllo dopo la richiesta di chiusura della posizione. Dai un'occhiata qui: https://www.mql5.com/it/docs/standardlibrary/tradeclasses/ctrade
Motivazione: