Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 893

 
Bene, ora anche il forum ha un problema: il post non è completo, ma non accetta modifiche...
 
tuner:
Si potrebbe, per esempio, cambiare il timeframe programmaticamente e poi tornare indietro se necessario.
Non credo che questo sia il modo in cui si resettano le variabili.
 
tuner:
Oppure prova a salvare il modello e poi a caricarlo di nuovo
Grande idea, è possibile?
 

Non so cosa...

Ho scritto tre versioni dell'Expert Advisor, tutte compilate senza errori, ma nel tester succede qualcosa di strano - su M5 apre una posizione e non la chiude, ma su M1 apre su ogni tick e chiude su quello successivo, indipendentemente dalle condizioni prescritte.

 
abeiks:
Non credo che le variabili vengano reimpostate così.
Le variabili esterne sono resettate perché OnInit() è chiamato quando il timeframe è cambiato
 
abeiks:
Grande idea, è possibile?
Probabilmente... ci sono funzioni integrate in MQl4 relative al salvataggio e al caricamento di modelli: ChartSaveTemplate, ChartApplyTemplate
 
rapid_minus:

Non so cosa...

Ho scritto tre versioni dell'EA, tutte compilate senza errori, ma nel tester succede qualcosa di strano - su M5 apre una posizione e non la chiude, ma su M1 apre su ogni tick e chiude su quello successivo, indipendentemente dalle condizioni prescritte.

Dimmi per favore, se scrivi una funzione moltiplicatrice

double f(double a1, double a2)
{
 return(a1*a2+1);
}

Questa funzione darà mai come risultato 2*2=4 o no?

Voglio dire che nessun compilatore controlla la logica del codice. E i vostri Expert Advisor sono pieni di errori logici.

 
AlexeyVik:

Dimmi per favore, se scrivi una funzione di moltiplicazione

Questa funzione darà mai come risultato 2*2=4 o no?

Voglio dire, nessun compilatore controlla la logica del codice. E i vostri Expert Advisor sono pieni di errori logici.

Ho capito. solo una cosa non capisco - quali esattamente?

ZZY: e quale errore può comportarsi diversamente nelle diverse TF?

ZZZY: per esempio, dov'è l'errore logico qui:

void CritClose() 
{ 
  for (int ord = OrdersTotal()-1 ; ord >= 0; ord--) 
  { 
    if(!OrderSelect(ord,SELECT_BY_POS,MODE_TRADES))Comment("Не найдено открытых ордеров. Ошибка #",GetLastError());
     
    if (OrderSymbol() == Symbol()) 
    {if ((OrderMagicNumber()==10011 || OrderMagicNumber()==10033 || OrderMagicNumber()==10133)&&(((условие А) && (условие Б)&&(условие В)) || ((условие Г) && (условие Д)&&(условие Е))))      
          {        
          ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);          
            if (ord_close = false)          
               { Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError()); }            
               else  { Ord=0; }
          }
      else if (... и т.д....
 

Ahi! Guru! Il dito si è rotto durante il processo di palming?

 
rapid_minus:

Una cosa che non capisco è quali sono esattamente?

ZS: e quale errore potrebbe comportarsi diversamente in diversi TF?

ZZY: per esempio, dov'è l'errore logico qui:

L'errore logico qui è che la struttura del programma è sbagliata. Dopo il commento "Non trovato ... "il codice continuerà ad essere eseguito come se fosse stato trovato. Vladimir, leggi un libro di testo.