Controllo dello stop minimo negli EA pubblicati sul mercato. - pagina 12

 
Igor Volodin:

Non potete dividere per un punto in questo modo, il valore della funzioneSymbolInfoDouble(symToWorkmodify,SYMBOL_POINT) può essere uguale a zero.
Questo vale anche per altre funzioni del mercato.

Per esempio, l'uso diAccountInfoInteger(ACCOUNT_LEVERAGE) nei calcoli ha causato il crash di alcuni Expert Advisors al campionato 2010 con l'erroreZero divide, quando questa funzione ha restituito 0 in OnInit.

Se guardate il riferimento,SymbolInfoDouble(), SymbolInfoInteger() devono sempre essere controllati per gli errori.
 
Vladimir Gribachev:

Se è così grave, ecco qui

Ancora una volta, si noti che l'argomento riguarda una situazione in cui lo stoplevel è 0. Lei ha citato un risultato del test con un livello di stoplevel maggiore di zero.

E se è così male, come giustamente sottolineatoda Andrey F. Zelinsky

si può aggiungere un controllo per il 130° errore e aggiungere +1 agli stop. Ma non ha affatto senso.
Il controllo dell'errore 130 è una pratica normale, proprio come qualsiasi altro errore nel programma. Ma aggiungere 1 alle fermate, in primo luogo, non aiuta, in secondo luogo, è una cattiva soluzione.
 
Ihor Herasko:

Ancora una volta, notate che l'argomento riguarda la situazione quando lo stoplevel è 0. Hai dato un risultato del test con uno stoplevel maggiore di zero.

Mostrami dove sul server MetaQuotes-Demo stoplevel = 0

anche se Stop Level = 0, allora lo stop loss minimo è uguale al valore dello spread.

Se anche lo spread = 0, allora mostratemi un tale broker e ci andrò per tagliare i miei soldi.

Il controllo dell'errore 130 è una pratica normale, proprio come qualsiasi altro errore nel programma. Per quanto riguarda l'aggiunta di 1 agli stop, in primo luogo non aiuta, in secondo luogo è una cattiva decisione.

Chi ha detto che era buono.

Ho postato il codice di controllo, hai messo i gufi per la verifica, ho mostrato che sul server dove i moderatori controllano questo controllo funziona.

Se hai bisogno di deridere il sistema e non trovare una soluzione che il topikstarter voleva, devi creare un nuovo argomento chiamato " Facciamo saltare il cervello!

ZS. Il topickeeper aveva bisogno di una soluzione per essere testato sul mercato. I moderatori testano sul loro server, non su Alps o altrove.

 
Vladimir Gribachev:

Se lo spread è anche 0, allora mostratemi un tale broker e andrò lì a tagliare la pasta.

No, ci sarà una commissione
 

:-) L'ho letto e ho sorriso.


Non ho chiesto cosa fare se il server restituisce 0, modera il tuo ego - mi sto rivolgendo specificamente a una persona, lo capirà o no - ma non importa.

Il post è stato scritto non per amore della comunicazione, ma per esempi specifici di programmatori che mettono i loro prodotti nel Mercato, è strano sentire da un uomo che non ha mai venduto un solo prodotto - su cosa fare e cosa non fare.

L'ARGOMENTO RIGUARDA LA VERIFICA SUL MERCATO.

Non stiamo parlando di ciò che un EA dovrebbe controllare e di come gestire gli errori. - Mi sta bene.

 
Vladislav Andruschenko:

Non ho chiesto cosa fare se il server restituisce 0

Allora avresti dovuto essere più chiaro nell'oggetto:

In questo momento il 90% dei broker ha spread e mintop fluttuanti e restituisce 0.

 
Ihor Herasko:

Allora devi essere più chiaro nel thread:

Stavo chiedendo come aggirare l'errore del mercato se il server restituisce 0 - e quando controllo in macret il moderatore mette stoploss = 1, ma l'EA non può cambiare il min stop perché è 0, - è fluttuante.

È chiaro che l'EA restituisce l'errore 130 e dice che lo stoploss è sbagliato, fare modifiche, ma nel mercato, questo comando non funziona.

il mio post suonava così:

Ciao a tutti, amici!

c'è una caratteristica del mercato: devi controllare tutti i valori per il min stop.

Se il valore della variabile è inferiore al min-stop, allora assegna un min-stop, in modo che non ci sia unerrore 130.

Attualmente il 90% dei broker ha spread fluttuante e min STOP e rendimento 0.

C'è un costrutto di codice che assegna tutte le variabili al min stop.

 int OnInitLevels(string symToWorkmodify)
  {
   if(lot<SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN);else
   if(lot>SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX);else lots=lot;
   if(StopLoss>0 && StopLoss<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))StopLosss=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else StopLosss=StopLoss;
   if(TakeProfit>0 && TakeProfit<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfits=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfits=TakeProfit;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   if(TakeProfitALL>0 && TakeProfitALL<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfitsAver=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfitsAver=(int)TakeProfitALL;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   return(0);
  }

Ma non funziona più nel mercato, perché minstop = 0 ovunque ora,

Chi si occupa di questo problema?

 
Vladimir Gribachev:

Mostrami dove sul server MetaQuotes-Demo stoplevel = 0

Non sul server MetaQuotes, ma sul controllo nel mercato (vedi il primo post del thread):

ma non passa più nel mercato, perché ora ovunque min stoplevel = 0 ,

Vladimir Gribachev:

anche se min stoploss = 0, allora il min stop loss è uguale allo spread.

Non è un fatto. Potrebbero esserci 2 o 3 spreads. Forse semplicemente non avete incontrato tali situazioni. Ma questo non significa che non esistano. Se non sapete di cosa sto parlando, potete cercare di evitarli.

 
Ihor Herasko:

Non sul server MetaQuotes, ma quando si controlla nel mercato (vedi il primo post del thread):

Non è un fatto. Ci possono essere 2 o 3 spreads. Forse non hai mai incontrato queste situazioni. Ma questo non significa che non esistano. La situazione del broker che ho menzionato è esattamente la stessa.

i>Questo è il punto, impostare un duro min stop per 1-2-3 spreads è una scusa.

avete bisogno di una vera soluzione al problema degli arresti fluttuanti.

Non sanno che tipo di arresto fluttuante hanno, ma non ti dicono come fare. O non vuole dirmelo.

 

Penso che dovresti essere chiaro sulla domanda )). Nel frattempo, sei confuso:

я не спрашивал что делать если сервер возвращает 0

e attraverso la posta:

Stavo chiedendo come aggirare l'errore del marketplace se il server restituisce 0