Errori, bug, domande - pagina 2856

 

Salve. Ho un malinteso:
Come posso usare Trade\Trade.mqh per modificare un ordine esistente?
Il comando OrderModify di Trade.mqh mi richiede di impostare 7 parametri, compreso l'ultimo: ordine StopLimit, il che mi confonde, perché non mi serve affatto... E non è richiesto nell'esecuzione standard...

OrderModify(const ulong ticket,const double price,const double sl,const double tp, const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit=0.0);

Ho un Sell Stop, voglio spostarlo in alto dopo il minimo e non posso farlo con OrderModify, e non capisco come modificare un ordine SellStop esistente usando Trade\Trade.mqh

Devo usare il dilettantismo e un nuovo ordine.

Qual è il modo corretto di spostare il livello Sell Stop?

 
Сергей Таболин:

Igor, la domanda non riguardava l'errore nel codice stesso, ma perché scrive un errore durante l'ottimizzazione, ma non durante una singola esecuzione?

Non sono bravo in telepatia, sto solo imparando.

ma ci proverò.... Supponendo che tu abbia scritto il codice al livello appropriato, è possibile che durante l'ottimizzazione si arrivi al valore della variabile di input, che causa un errore critico

.... Un altro modo di metterla è supporre che non sai che l'ottimizzatore riceve i compiti in batch, e forse c'è un errore in uno dei compiti

.... Si può anche supporre che se si inizializza la variabile nell'ambito globale (può essere una chiamata di funzione durante l'inizializzazione o il costruttore della classe) e l'ottimizzatore la inizializza una volta per le costanti e le statiche (anche se sembra che solo per le statiche - ho dimenticato) per ogni agente, per tutto il tempo di ottimizzazione, ma in un singolo passaggio ogni singolo passaggio...

... hz

 
Yura Fomin:

Salve. Ho un malinteso:
Come posso usare Trade\Trade.mqh per modificare un ordine esistente?
Il comando OrderModify di Trade.mqh mi richiede di impostare 7 parametri, compreso l'ultimo: ordine StopLimit, il che mi confonde, perché non ne ho affatto bisogno... E non è richiesto nell'esecuzione standard...

Ho un Sell Stop, voglio spostarlo in alto dopo il minimo e non posso farlo con OrderModify, e non capisco come modificare un ordine SellStop esistente usando Trade\Trade.mqh

Devo usare la diligenza e un nuovo ordine.

Come faccio a spostare correttamente il livello Sell Stop?

C'è un esempio inPending Trailing

Pending Trailing
Pending Trailing
  • www.mql5.com
Советник относится к классу утилит. Работает со всеми отложенными ордерами установленными в терминале. Подтягивает отложенный ордер вслед за ценой. Например отложенные ордера 'Buy stop' и 'Sell limit'...
 
TheXpert:
Non c'è bisogno di un punto e virgola da nessuna parte dopo le parentesi graffe, probabilmente non in nessun linguaggio
Grazie. L'ambiguità della sintassi quando entrambi hanno ragione non è buona.
 
Igor Makanu:

Non sono bravo con la telepatia, sto solo imparando.

ma ci proverò.... Supponendo che il tuo codice sia scritto ad un livello adeguato, è possibile che durante l'ottimizzazione tu arrivi al valore di una variabile di input che causa un errore critico

.... Un altro modo di metterla è supporre che non sai che l'ottimizzatore riceve i compiti in batch, e forse c'è un errore in uno dei compiti

.... Si può anche supporre che se si inizializza la variabile nell'ambito globale (può essere una chiamata di funzione durante l'inizializzazione o il costruttore della classe) e l'ottimizzatore la inizializza una volta per le costanti e le statiche (anche se sembra che solo per le statiche - ho dimenticato) per ogni agente, per tutto il tempo di ottimizzazione, ma in un singolo passaggio ogni singolo passaggio...

... hz

)))))

Cosa c'entra la telepatia?

C'è un array, viene inizializzato e utilizzato senza problemi. Tutto funziona. Ma all'uscita è un casino...

void OnDeinit(const int reason)
{
   //Print(ArraySize(netMLP));
   //Print(ArraySize(indicators)+1);
   for(int i = ArraySize(indicators); i >= 0; i--) delete netMLP[i];

Tutto è stato controllato. Ma la differenza tra il modo in cui l'analizzatore si comporta nella modalità di ottimizzazione e nella corsa singola è evidente. La domanda è: perché? Se c'è qualcosa di sbagliato da qualche parte, in qualche modo, deve essere sbagliato in entrambi i sensi. Non è vero?

 
Сергей Таболин:

)))))

Cosa c'entra la telepatia?

C'è un array, viene inizializzato e utilizzato senza problemi. Tutto funziona. Ma d'altra parte, all'uscita, si verifica una tale catastrofe...

Tutto è stato controllato. Ma la differenza tra il modo in cui l'analizzatore si comporta nella modalità di ottimizzazione e nella corsa singola è evidente. La domanda è: perché? Se c'è qualcosa di sbagliato da qualche parte, in qualche modo, deve essere sbagliato in entrambi i sensi. Non è vero?

Scrivilo per amore della decenza:

for(int i = ArraySize(netMLP); i >= 0; i--) delete netMLP[i];

E quindi non c'è garanzia che le dimensioni siano le stesse. Quali siano le matrici, nessuno lo sa.

 
Stanislav Korotky:

Scrivilo per amore del decoro:

E quindi non c'è garanzia che le dimensioni siano le stesse. Nessuno sa cosa siano gli array.

Lo so)))

L'ho sostituito. L'errore che ho specificato è scomparso )))) Ma l'altro continua ad apparire:

2020.09.24 22:48:38.470 Core 3  pass 11877 tested with error "OnInit returned non-zero code 1" in 0:00:00.000

Ripeto: non c'era nella versione precedente.

Ho diversi controlli con return(INIT_FAILED);

Ma sono tutti preceduti da impronte. Ma non ci sono impronte. (((

 
Сергей Таболин:

solo scrivere su file:

- ottimizzazione del segno on/off

- numero di agente

- e tutte le variabili usate in OnDeanit()

senza questo non troverete un bug - l'ottimizzatore funziona senza problemi, lo uso sempre

 
Сергей Таболин:

Lo faccio)))

Sostituito. L'errore che ho menzionato è scomparso )))) Ma un altro continua ad apparire:

Ripeto, non c'era una cosa del genere nella versione precedente.

Fai doppio clic sul passaggio di ottimizzazione corrispondente e ottieni un singolo registro di esecuzione con tutti i dettagli, perché l'inizializzazione non è riuscita - riga e colonna nella fonte.

 
Igor Makanu:

solo scrivere su file:

- ottimizzazione del segno on/off

- numero di agente

- e tutte le variabili usate in OnDeanit()

senza questo non troverete il bug - l'ottimizzatore funziona senza problemi, lo uso sempre.

Ok, mi collego di nuovo scrivendo tutto nel file. forse ci sarà una ragione... che prima non c'era...