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

 
rigonich:

Non lo so. Ho smesso di ottenere l'errore 1 dopo che OrderModify() è stato controllato immediatamente prima di OrderSelect(), ma anche prima si presentava sempre.

E che tipo di assegno hai messo?
 
Ekburg:

È questo il punto, lì è tutto normale! Ho impostato le stampanti per tracciare durante il test quali valori vengono passati alla funzione di modifica, lì è tutto normale, lo stop è diverso, non viene lanciato nulla di inutile, tutto è nei limiti consentiti dal server, e gli avversari nel codice sopra non permettono di passare gli stessi valori...

Provate a controllare prima di modificare in questo modo:

      double Erunda=16.0*Point;// от 12 для пятизнаков, от 2 для четырех
//
      if(MathAbs(OrderStopLoss()-sl)<Erunda && MathAbs(OrderTakeProfit()-tp)<Erunda){нет_необходимости_модифицировать;}
      else { модифицировать;}

 
Sepulca:

Provate a fare il controllo prima di modificare in questo modo:


Cosa sono queste funzioni, a cosa servono? Non ne ho mai viste né usate prima.
 
Desead:

Mi sto stancando di combattere con questo problema, tutti gli ordini in sospeso non vengono cancellati normalmente, quindi uso questo ciclo per cancellarli:

Ho anche aggiunto al ciclo FOR FOR e WHILE tutti gli ordini in sospeso rimangono ancora non cancellati. Ci sono molti ordini in sospeso da cancellare, circa 20, forse questa è una sorta di difficoltà?

Ecco un esempio di cancellazione degli ordini, compresi quelli in sospeso (li ho cancellati con questo):

Non tutti gli ordini pendenti sono presenti in questo codice (nel filtro di selezione). Un'altra variante di errore: controlla il Magick ricevuto dagli ordini in sospeso quando si aprono (nel tuo codice).

 
Ekburg:

Grazie. Ho cercato nel codebase, ho trovato qualcosa, ho provato a sostituirlo, l'ho cambiato di qua e di là, ho letto migliaia di righe di codice pro e non solo, dà errore 1 quando si modifica e basta, il diavolo sa cosa fare. Ho affrontato varie difficoltà nella scrittura e nel successivo lavoro dell'EA, ma per risolverle da solo, altrimenti non faccio una buona esperienza, ho letto la guida, riletto il tutorial, e risolto i problemi, ho iniziato a pensare un po' diversamente da quando ho iniziato, ma questo problema da solo non ha funzionato, così mi sono rivolto a voi, professionisti! Non scriverei Trailyn se non è necessario per il lavoro dell'EA:)
Non permettetemi di credervi (che avete riletto tutto o "così letto") - la questione dell'errore #1 è coperta nel tutorial ed è stata VERAMENTE discussa sul forum. La risposta può essere trovata qui.
 
Ekburg:

il risultato è lo stesso... cosa sono queste funzioni, a cosa servono? Non le ho mai viste né usate prima


Non è una funzione, è solo un controllo prima della modifica, se i valori di SL o TP sono molto diversi dai precedenti, si modifica. Non ha senso modificare TP o SL di un pip, almeno non per infastidire DC.
 
Sepulca:


Non è una funzione, è solo un controllo prima della modifica, se i valori di SL o TP sono abbastanza diversi dai valori precedenti, allora modifica. Non ha senso modificare TP o SL di un pip, se non altro per evitare il fastidioso DT.

Grazie, è una buona idea, la userò d'ora in poi.
 
TarasBY:
Permettetemi di non credervi (che avete riletto tutto o "così letto") - la questione dell'errore #1 è trattata nel libro di testo ed è stata discussa VERAMENTE sul forum. La risposta può essere trovata qui.


naturalmente non ho letto tutto, ma ho riletto il libro di testo diverse volte per trovare le cause dell'errore, ma sembra che non siano nel codice... Guarderò il tuo link e ancora una volta leggerò l'intero articolo sull'argomento, grazie per l'aiuto, che non hai segnato:)
 

Ciao membri del forum,

Ho deciso di scrivere un EA per me stesso. Sto leggendo un tutorial su mql4 perché faccio trading con MT4. Ed ecco la cosa interessante: i file mqh scaricati da questo tutorial si aprono (automaticamente) in MetaEditor 5 (ho anche Mt5 installato)! Significa che non funzioneranno con Mt4?

 
Ekburg:

Cosa sono queste funzioni, a cosa servono? Non ne ho mai viste né usate prima.


Non è una funzione, è un modo di confrontare numeri non normalizzati. Non possono essere confrontati tra loro, ma il risultato della sottrazione di uno dall'altro può essere confrontato con zero.

E l'assegno che ho è così:

//+------------------------------------------------------------------+ 
 double ND(double nd){return(NormalizeDouble(nd,Digits));}
//+------------------------------------------------------------------+ 
if(ND(price)!=OrderOpenPrice()||ND(SL)!=OrderStopLoss()||ND(TP)!=OrderTakeProfit()||Expiration!=OrderExpiration())
   {
   OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE);
}
else return;
     
Motivazione: