Errori, bug, domande - pagina 2224

 
fxsaber:

Il tempo di modifica aggiornato non ha effetto sul risultato. EA

Sì, grazie. Ho scoperto qual era il problema.

Ci sarà una correzione nel prossimo futuro. Tuttavia, i file utilizzati dalla cartella comune non possono ancora essere controllati. Solo i file specificati in #property tester_file

 

Riaccendendo il tester in modalità visualizzazione dopo un passaggio, mi rendo conto di aver sbagliato le impostazioni e il tester si blocca per un paio di minuti.

2018.07.11 17:03:05.992 Core 8  disconnected
2018.07.11 17:03:05.992 Core 8  connection closed
2018.07.11 17:03:09.241 Core 8  connecting to 127.0.0.1:3000
2018.07.11 17:03:18.308 Tester  stopped by user
2018.07.11 17:03:19.241 Core 8  tester agent authorization error
 
//Определение экстремума
for(int i=NBars;i<=NumBars;i++)
     {
      xMinL=ArrayMinimum(MinBuffer,0,i);
      xMinLD=ArrayMinimum(MinBuffer,0,i+NBars);
      if((MinBuffer[xMinL]<=MinBuffer[xMinLD])&&(xMinL>=NBars))
        {
         Minimum=MinBuffer[xMinL];
         break;}}

//Проверка если ордера с такой же ценой не существует         
   for (int r=0; r<=OrdersTotal(); r++)
   {if (OrderSelect(OrderGetTicket(r)))
    {if (StringToDouble(OrderGetString(ORDER_COMMENT))==NormalizeDouble(Minimum,_Digits))    
       {x2=1;
        break;}
     else x2=0;}}

//Проверка если Позиции с такой же ценой не существует     
   for (int l=0; l<=PositionsTotal(); l++)
   {if (PositionSelectByTicket(PositionGetTicket(l)))
    {if (StringToDouble(PositionGetString(POSITION_COMMENT))==NormalizeDouble(Minimum,_Digits))     
       {y2=1;
        break;}
     else y2=0;}}

//Если проверка отрицательная, открываем ордер        
   if ((x2==0)&&(y2==0))
   m_trade.SellStop(Volume,NormalizeDouble(Minimum,_Digits),_Symbol,NormalizeDouble(Minimum+(SL_ATR*ATR2),_Digits),NormalizeDouble(Minimum-(TP_ATR*ATR2),_Digits),ORDER_TIME_GTC,0,DoubleToString(Minimum,_Digits));
Ciao cari utenti del forum. Questo è un estratto di codice che rileva gli estremi e piazza ordini pendenti su di essi. Sembra funzionare, ma a volte inizia a impostare pause infinite a un estremo, come se non vedesse il criterio di stop. Mi sono già scervellato.
 
Dmitri Custurov:
Ciao cari utenti del forum. Questo è uno snippet di codice che identifica gli estremi e imposta gli ordini in sospeso su di essi. Sembra funzionare, ma a volte inizia a impostare pause infinite a un estremo, come se non vedesse il criterio di stop. Mi sono già scervellato.

Quindi, è corretto fare un confronto?

if (StringToDouble(PositionGetString(POSITION_COMMENT))==NormalizeDouble(Minimum,_Digits)){.....}
 

Nell'indicatore

Stampando in modalità visual strategy tester, dato che il mio cervello è già bollito - non è riuscito a trovare l'errore nella logica:

Print(iHigh(Symbol(),PERIOD_CURRENT,i+1), "  ",sqh_buffer[i+1]);

Data di inizio 01.01.2018 minuti

2018.07.11 17:19:07.770 2018.01.01 00:00:00   58148.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58149.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58146.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58140.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58139.0  0.0
2018.07.11 17:19:07.863 2018.01.03 10:00:00   58139.0  58391.79995461365
2018.07.11 17:19:07.863 2018.01.03 10:00:00   58135.0  58391.71051866656
2018.07.11 17:19:07.906 2018.01.03 10:00:20   58135.0  58463.08874123808

Naturalmente, non ci sono quotazioni reali in questa data, la gente ha una vacanza, poi quali sono questi numeri magici, e in generale come faccio a ottenere informazioni per il primo appuntamento?

 

Domanda:

Come faccio a sapere che il timer è attivo e qual è la sua frequenza?

Non sto leggendo bene la guida o non è possibile?

 
Nikolai Semko:

Domanda:

Come faccio a sapere che il timer è attivo e qual è la sua frequenza?

O non sto leggendo bene la guida, o non è possibile?

A giudicare dal silenzio, probabilmente non c'è proprio questa possibilità. :((

Ma come mai - è una caratteristica molto semplice e utile!

Per esempio, creo una classe che usa il timer. E all'interno della classe posso accendere e spegnere il timer, cambiarne la periodicità. Ma per lavorare senza conflitti con il resto del programma, la classe deve sapere se il timer è acceso o spento e qual è la sua periodicità.

 
Nikolai Semko:

A giudicare dal silenzio, probabilmente non c'è questa possibilità. :((

Ma come mai - dopo tutto è una caratteristica molto semplice e utile!

Per esempio, creo una classe che usa un timer. E all'interno della classe posso accendere e spegnere il timer, cambiarne la periodicità. Ma per lavorare con il resto del programma senza conflitti, la classe deve sapere se il timer è acceso o spento e qual è la sua periodicità.

Quindi, siete i benvenuti, o meglio, la classe.

 
Sergey Dzyublik:

Bandiera sul campo da gioco, o meglio in classe.

Non servirà. Soprattutto se il timer è già attivo prima di essere abilitato nella classe, per esempio a intervalli di alcune ore o giorni. Allora una tale classe rovinerà l'intera logica del programma.

 
Sergey Dzyublik:

Quindi il confronto è corretto?

Ho provato sia il feng shui che questo - il risultato è lo stesso. Il fatto è che tutto funziona il 99% delle volte, e io ho bisogno del 100%. Al momento, la cosa principale per me è ottenere la logica giusta, e potrò fare la bellezza più tardi.

Ho dimenticato di aggiungere solo che l'errore di cui sopra appare nel tester. Quando lo apro su un grafico, non lo vedo o devo solo aspettare l'estremo richiesto dove questo errore si ripresenterà.