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

 
Vladislav Andruschenko:

lo spread viene preso in considerazione, lo spread era di 8 pip. + min stop 18=26 pips

Il 27 va bene.

Inoltre, se una persona ha bisogno di piazzare uno stoploss di 100 pips, significa che perderà 100 pips, quindi per BAY dal prezzo ASC bisogna contare 100 pips.

e per la vendita dal BID, rispettivamente.

Non ho detto dove mettere l'SL. Ho detto quale prezzo usare per il controllo.
 
Andrey Khatimlianskii:
Non ho detto dove mettere l'SL. Ho detto quale prezzo usare per il controllo.
Grazie. Anche questa opzione conta.
 
Taras Slobodyanik:

Quindi come si fa a non indovinare se il broker dà un livello di stop irragionevole? %)

...è chiaro che dopo tutti i controlli, bisogna indovinare per sapere il rientro minimo

Non si può indovinare nel layout. Bisogna sapere tutto. In anticipo. Per non commettere un solo errore. Anche se credo che gli errori del server non siano un errore. È un avvertimento.
 

Non ho esperienza di vendita di EAs sul mercato, ma dopo aver letto tutte le opinioni, aggiungo i miei cinque centesimi.

Potete provare a selezionare diverse opzioni nel menu

1 Variante - Predefinito. Questo è quando la fermata minima è interamente determinata daMODE_STOPLEVEL. Assicuratevi di chiedere un nuovoSTOPLEVEL prima di ogni azione sull'ordine.

2 Variante, seMODE_STOPLEVEL == 0, allora lo stop lascia lo spread.

3 Opzionalmente, impostiamo manualmente il nostro livello di stop, o qualche moltiplicatore moltiplicato per lo spread.

È necessario introdurre il controllo. Se un EA viene testato o ottimizzato, il livello di stop non può essere inferiore allo spread. Penso che questo permetterà al mercato di superare qualsiasi stress test, incluso uno con StopLoss = 1.

 
Dmytro Zelenskyy:

Non ho esperienza di vendita di EAs sul mercato, ma dopo aver letto tutte le opinioni, metterò i miei cinque centesimi.

Potete provare a selezionare diverse opzioni nel menu

1 Variante - Predefinito. Questo è quando la fermata minima è interamente determinata daMODE_STOPLEVEL. Assicuratevi di chiedere un nuovoSTOPLEVEL prima di ogni azione sull'ordine.

2 Variante, seMODE_STOPLEVEL == 0, allora lo stop lascia lo spread.

3 Opzionalmente, impostiamo manualmente il nostro livello di stop, o qualche moltiplicatore moltiplicato per lo spread.

È necessario introdurre il controllo. Se un EA viene testato o ottimizzato, il livello di stop non può essere inferiore allo spread. Penso che questo permetterà al mercato di superare qualsiasi stress test, incluso uno con StopLoss = 1.

Purtroppo no.

Nel mercato tutto dovrebbe andare automaticamente.

Ora ecco una nuova cosa divertente con l'oro, ci sono 3 cifre, ma l'ultima cifra deve essere arrotondata, cioè l'ultima cifra dovrebbe essere 0,

L'ultima cifra dovrebbe essere 0, così quando si arrotonda, si arrotonda secondo una regola matematica, e non nella direzione che permette di aggirare la regola del min stop.

Naturalmente, posso semplicemente mettere - attraverso il controllo del mercato per mettere tutti i livelli in 10 livelli di stop - per così dire, al fine di far passare i moderatori, ma vorrei gestirlo correttamente.

Devo arrotondare per eccesso per comprare e per difetto per vendere. oh............

 
Vladislav Andruschenko:

Purtroppo no.

Nel mercato tutto dovrebbe andare automaticamente.

Ora ecco un nuovo trucco sull'oro, ci sono quotazioni a 3 cifre, ma l'ultima cifra deve essere arrotondata, cioè l'ultima cifra deve essere 0,

L'ultima cifra dovrebbe essere 0, così quando si arrotonda, si arrotonda secondo una regola matematica, e non dalla parte che permette di aggirare la regola del min-stop.

Naturalmente, posso semplicemente mettere - attraverso il controllo del mercato per mettere tutti i livelli in 10 livelli di stop - per così dire, al fine di far passare i moderatori, ma vorrei gestirlo correttamente.

Devo arrotondare per eccesso per comprare e per difetto per vendere. oh............

Anch'io ho affrontato questo problema quando ho testato l'oro e l'argento.

double NormalizePrice(string symbol,double value)
  {
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   if(ts==0)return(value);
   return(NormalizeDouble(value/ts,0)*ts);
  }

esempio di utilizzo

      double ask=NormalizeDouble(SymbolInfoDouble(symbol,SYMBOL_ASK),digits);
      if(NormalizeDouble(NormalizePrice(symbol,ask),digits)!=ask)return;
 

Ecco come appare la mia funzione take profit e stop loss per esempio

void ModifyTP(string symbol,double tp)
  {
   if(tp<=0)return;
   bool res;
   double last=SymbolInfoDouble(symbol,SYMBOL_LAST);
   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
   double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
   int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);

   if(last<=0.0)
     {
      bid=SymbolInfoDouble(symbol,SYMBOL_BID);
      ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
     }
   else
     {
      bid=SymbolInfoDouble(symbol,SYMBOL_LAST);
      ask=SymbolInfoDouble(symbol,SYMBOL_LAST);
     }

   if(bid<=0.0)return;
   if(ask<=0.0)return;

   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderSymbol()!=symbol)continue;
      if(OrderType()>1)continue;
      if(OrderTakeProfit()!=0)continue;

      if(OrderType()==OP_BUY) tp=NormalizeDouble(NormalizePrice(symbol,bid+tp*point),digits);
      if(OrderType()==OP_SELL) tp=NormalizeDouble(NormalizePrice(symbol,ask-tp*point),digits);
      if(tp<0)continue;
      res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0);
      if(!res)
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying TakeProfit order ",StrToType(OrderType())," №- ",error," ",ErrorDescription(error)," Ticket: ",OrderTicket());
         Print(rezult);
        }
     }
  }
 
Sergey Gritsay:

Anche di fronte al problema dei test su oro e argento, ho scritto una funzione come questa

esempio di utilizzo

Se uso l'oro sul server mt5 - 3 posizioni decimali, ma gli stop e il prezzo aperto dovrebbero essere impostati su !!!! Se volete ancora giocare con 2 cifre decimali, arrotondate a 2 cifre decimali invece di 3, e potreste anche vedere alcuni trucchi umoristici con gli stop minimi su oro e argento,

come questo:

   request.tp=NormalizeDouble(request.tp,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);
   request.sl=NormalizeDouble(request.sl,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);
   request.price=NormalizeDouble(request.price,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);

doveRounding= per l'oro mt5 è 1.

Devi arrotondare il prezzo, altrimenti ti informerà che il prezzo è sbagliato, ma quando lo arrotonderai, il server lo correggerà al prezzo giusto e la transazione sarà chiusa.

L'mt4 non ha queste stranezze - ci sono 2 cifre decimali e si arrotonda a 2 cifre decimali senza problemi.

la mia opinione personale sull'errore 130:

Ho tutti i controlli per l'errore 130 - c'è un output di registro degli errori.

C'è anche la normalizzazione.

Nel mercato mi hanno fatto normalizzare al min stop, rispettivamente + spread, (per esempio, dovrei comprare dal prezzo ASK e controllare il min stop al prezzo BID).

Quindi, dovrebbe essere forzato all'utente, se un trader usa l'EA e imposta per esempio 20 punti di Stop Loss, allora l'EA dovrebbe sovrascriverlo automaticamente di 50 punti (MinStop + Spread), che non è corretto. Il trader deve vedere l'errore 130 e correggere lo stop a proprio rischio.

Un'altra opzione - se un utente imposta lo stoploss inferiore al minimo - vieta il trading e la modifica, perché i moderatori non permetteranno l'Expert Advisor con un errore di 130.

Ma vietare il commercio è sbagliato, stop e spread è fluttuante, ora è meno del minimo - allora è OK.

Non credo che sia una buona idea usare il mercato per un approccio del genere.

IMHO: un errore 130 dovrebbe essere e un utente dovrebbe vedere il 130° errore dal server, non da un Expert Advisor che dice: "Il tuo stop è sotto il minimo, correggilo".

Regola di mercato: non perdere l'Expert Advisor che genera l'errore 130 - perché il controllore ha messo 1 punto nello Stop Loss - beh, questo è un fallimento.

Una stessa versione di Expert Advisor può essere passata o meno.

Ho postato una versione - tutto è OK, dopo un po' ho visto che l'EA stampa molto (solo il fatto che lo stop loss è inferiore al minimo), l'ho corretto rapidamente e ho aspettato una settimana fino a quando hanno iniziato i test, di nuovo 2 settimane di stagnazione perché di nuovo vedo 130 errori su qualche simbolo

 
Vladislav Andruschenko:

In oro sul server mt5 - 3 posizioni decimali, ma gli stop e il prezzo di apertura dovrebbero essere impostati su !!!!. Se vuoi cambiare il prezzo dell'oro e dell'argento, devi impostarlo a 2 cifre decimali, cioè arrotondarlo a 2 cifre decimali e non a 3, e ci sarà un trucco con il tuo min stop su oro e argento,

come questo:

doveRounding= per l'oro mt5 è 1.

Devi arrotondare il prezzo, altrimenti ti informerà che il prezzo è sbagliato, ma quando lo arrotonderai, il server lo correggerà al prezzo giusto e la transazione sarà chiusa.

L'mt4 non ha queste stranezze - ci sono 2 cifre decimali e si arrotonda a 2 cifre decimali senza problemi.

la mia opinione personale sull'errore 130:

Ho tutti i controlli per l'errore 130 - c'è un output di registro degli errori.

C'è anche la normalizzazione.

Il mercato mi ha fatto normalizzare a min stop, rispettivamente + spread, (per esempio, dovrei comprare dal prezzo ASK e controllare min stop al prezzo BID).

Quindi, dovrebbe essere forzato all'utente, se un trader usa l'EA e imposta per esempio 20 punti di Stop Loss, allora l'EA dovrebbe sovrascriverlo automaticamente di 50 punti (MinStop + Spread), che non è corretto. Il trader deve vedere l'errore 130 e correggere lo stop a proprio rischio.

Un'altra opzione - se un utente imposta lo stoploss inferiore al minimo - vieta il trading e la modifica, perché i moderatori non permetteranno l'Expert Advisor con l'errore 130.

Ma vietare il trading è sbagliato, stop e spread sono fluttuanti, ora sono meno del minimo - allora è OK.

Non credo che sia una buona idea usare il mercato per un approccio del genere.

IMHO: un errore 130 dovrebbe essere e un utente dovrebbe vedere il 130° errore dal server, non da un Expert Advisor che dice: "Il tuo stop è sotto il minimo, correggilo".

Regola di mercato: non perdere l'Expert Advisor che genera l'errore 130 - perché il controllore ha messo 1 punto nello Stop Loss - beh, questo è un fallimento.

Una stessa versione di Expert Advisor può essere passata o meno.

Ho postato una versione - tutto è OK, dopo un po' ho visto che l'EA stampa molto (solo il fatto che lo stop loss è inferiore al minimo), l'ho corretto rapidamente e ho aspettato una settimana fino a quando hanno iniziato a controllare, di nuovo 2 settimane di stagnazione perché 130 errore appare di nuovo su qualche simbolo

IMHO - molti messaggi del server - non un errore, e il codice di ritorno. E non si vuole evitare ogni sorta di trucchi, ma che l'Expert Advisor sia in grado di prendere decisioni. Sono decisioni basate sulla risposta del server alle sue azioni. Altrimenti, sarebbe solo un giocattolo stupido che non permette di monitorare il mercato e correggere le sue azioni in base alla "comunicazione" con il server.

Quindi "sfaccettare" i moderatori sull'errore 130 è eccessivo. Bisogna essere riflessivi: una cosa è quando un Expert Advisor continua a sbattere il server dopo il 130° errore, un'altra cosa è quando reagisce e cambia le sue azioni. Perché non ci è permesso di fare quest'ultimo? È semplicemente perché qualcuno (il moderatore) non vuole dare un'occhiata più da vicino al lavoro dell'EA? Sembra di vedere 130 - nel matrimonio. Non importa che l'EA abbia molto probabilmente bisogno di una tale risposta dal server per la sua logica, è importante semplicemente rifiutarla e non cercare oltre. È così che funziona?

 
Artyom Trishkin:

IMHO - molti messaggi del server non sono un errore, ma un codice di ritorno. E ne avete bisogno non per evitarlo con ogni sorta di trucchi, ma perché l'Expert Advisor sia in grado di prendere decisioni. Sono decisioni basate sulla risposta del server alle sue azioni. Altrimenti, sarebbe solo un giocattolo stupido che non permette di seguire il mercato e correggere le sue azioni sulla base di una "comunicazione" reciproca con il server.

Quindi, è un'esagerazione "costringere" i moderatori a fare il 130° errore. Bisogna essere riflessivi: una cosa è se l'Expert Advisor continua a sbattere il server dopo il 130° errore, ma è un'altra cosa quando reagisce e cambia le sue azioni. Perché non ci è permesso di fare quest'ultimo? È semplicemente perché qualcuno (il moderatore) non vuole dare un'occhiata più da vicino al lavoro dell'EA? Sembra di vedere 130 - nel matrimonio. Non importa che l'esperto probabilmente ha bisogno di una tale risposta dal server per la sua logica, è importante semplicemente rifiutarla, e non cercare oltre. È così che funziona?

Questo è il motivo per cui il mio EA ha catturato i movimenti min/max e quindi sta martellando il server non con 1 pip stoploss ma con un normale livello min + spread, ma lo spread è fluttuante. Di conseguenza, l'EA martellerà il server fino a quando non restituirà uno spread normale.

In altre parole, al momento dell'apertura controlla il min stop - ricostruisce i suoi valori - poi colpisce il server. Ma se hai bisogno di mettere uno stop di 10 pips, devi aspettare lo spread minimo e battere il server.

Motivazione: