Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 144

 
Ihor Herasko:

Sì, certo. La funzione è scritta universalmente. Se lo indirizziamo ad ogni tick, il ciclo passa attraverso l'intera storia del conto. E la storia dell'account può essere abbastanza profonda (ho incontrato casi in cui c'erano più di 100 000 ordini). Per accelerare l'esecuzione, non è necessario eseguire il ciclo su tutta la storia ogni volta. È sufficiente farlo solo una volta all'inizio e ricordare l'indice dell'ultimo ordine elaborato. La volta successiva, è necessario passare attraverso il ciclo solo per gli ordini che hanno un indice maggiore dell'indice memorizzato. Dopo di che, ricordate di nuovo l'indice dell'ultimo ordine, e così via.

Grazie per la spiegazione dettagliata. Ora so da che parte guardare, per così dire. A proposito, il conto demo ha funzionato bene con 5 EA, nel senso che nessun trade è stato aperto più di una volta durante la data corrente e non c'è stato alcun ritardo nell'apertura di tutte e 5 le posizioni EA.
 
Vitaly Muzichenko:

La colpa è dello spread fluttuante.

All'inizio lo pensavo anch'io, ma è vero anche per le coppie con spread fisso (come DAX30) e per le reti composte da ordini in una direzione (incluso un ordine) - in questo caso lo spread è irrilevante (un prezzo determina il profitto - o solo Bid o solo Ask).

Vitaly, ho capito dalla tua risposta che non c'è nessun errore evidente nelle formule?

 
Igor Zakharov:

All'inizio lo pensavo anch'io, ma è vero anche per le coppie con spread fisso (come DAX30) e per le reti composte da ordini in una direzione (incluso un ordine) - in questo caso lo spread è irrilevante (un prezzo determina il profitto - o solo Bid o solo Ask).

Vitaliy, ho capito dalla tua risposta che non c'è nessun errore evidente nelle formule?

Ecco la formula del lavoratore:

 double poi=SymbolInfoDouble(mSymbol,SYMBOL_POINT);
 int dig=(int)SymbolInfoInteger(mSymbol,SYMBOL_DIGITS);
 double TickValue=SymbolInfoDouble(mSymbol,SYMBOL_TRADE_TICK_VALUE);

 double BuyAwerage=0,SellAwerage=0;
  if(_GetP.Buy._Lots>0)  BuyAwerage= NormalizeDouble(bid-(_GetP.Buy._AllProfit/( TickValue*_GetP.Buy._Lots ))*poi,dig);
  if(_GetP.Sell._Lots>0) SellAwerage=NormalizeDouble(ask+(_GetP.Sell._AllProfit/(TickValue*_GetP.Sell._Lots))*poi,dig);
 
Vitaly Muzichenko:

Ecco la formula del lavoratore:

Cioè, l'analogico completo. La mia formula è ancora un po' più universale - in generale la dimensione del tick può non essere uguale a un punto (spesso si trova sugli indici).

Grazie.

 

Salve.

Forse qualcuno ha anche riscontrato il seguente inconveniente in MT4.

Sto testando un sistema di trading composto da diversi robot per un conto demo.

Ma periodicamente 1-2 volte al giorno c'è una situazione in cui il robot imposta un ordine buy stop o sell stop che non funziona. Questo ordine è evidenziato in giallo e se provi a cancellarlo vedrai un avviso di parametri disabilitati.

Il robot che l'ha impostato secondo l'algoritmo dovrebbe continuare il suo lavoro ma lo fa solo per un prezzo migliore di quello impostato in un ordine errato, cioè un Sell Stop per gli ordini superiori e un Buy Stop solo per gli ordini inferiori.

Se cancello tutti gli altri ordini (grazie al mio conto demo) e spengo il terminale per un po', questo ordine si attiva come richiesto e viene chiuso al comando del programma o manualmente.

Per favore, consigliatemi se questo ha a che fare con il conto demo o perché ci sono diversi robot collegati a diverse finestre.

Questo tipo di legame aumenta la qualità dell'intero sistema, perché il terminale reagisce molto meglio ai comandi dei singoli robot rispetto a quando tutti i comandi sono combinati in un Expert Advisor. Il guadagno nel tempo di reazione del terminale è molto significativo e la tempestività di esecuzione dei comandi è molto migliore e ottimale, se tutta la logica del sistema di trading è diffusa tra diversi robot.

Tuttavia, mi trovo di fronte al problema del congelamento di uno o due ordini.

Forse qualcuno ha affrontato questo problema o suggerisce una causa del funzionamento scorretto, così come un modo per risolverlo.

Grazie in anticipo.

 

nell'immagine è verde, che non è nelle impostazioni del terminale.

dove posso vedere i colori che sono impostati dai numeri?

ssb

 
Pavel Ipatov:

Ma di tanto in tanto 1-2 volte al giorno il robot imposta un ordine di acquisto o di vendita che non funziona. È evidenziato in giallo e quando si cerca di cancellarlo, la finestra mostra una scritta sui parametri disabilitati.

Questo è successo, e più di una volta. Nel mio caso, era sempre colpa del broker, non del robot - se contattate il supporto, lo rimuoveranno forzatamente. Se è una demo, ne aprirei una nuova con un broker diverso.

 
Artsem:

nell'immagine è verde, che non è nelle impostazioni del terminale.

dove posso vedere i colori che sono impostati dai numeri?

ssb

Uh... photoshop.

 
Artsem:

nell'immagine è verde, che non è nelle impostazioni del terminale.

dove posso vedere i colori che sono impostati dai numeri?

ssb

  1. Clicca sulla freccia dell'elenco a discesa.
  2. Selezionare Personalizzato.
  3. Vedrete una finestra come questa.

Nella tavolozza si seleziona il colore che si desidera, o si possono anche specificare manualmente i valori numerici: rosso, verde, blu.

 
Ihor Herasko:

  1. Clicca sulla freccia dell'elenco a discesa.
  2. Selezionare Personalizzato.
  3. Apparirà una finestra come questa.

Nella tavolozza, seleziona il colore che vuoi, o puoi anche specificare manualmente i valori numerici: rosso, verde, blu.

Sì, non ho notato il pulsante personalizzato.

Non riesco a cambiare il colore in "numerico" nel tuo pannello.