Backtest bilacio e equità

Irene  
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..

Michele Catanzaro  
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. 
Irene  
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);
     }
  }
Michele Catanzaro  
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);
        }
     }
   }
Irene  
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è....

Michele Catanzaro  
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? 
Irene  

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. 

Motivazione: