Vérification du stop minimum dans les EAs publiés sur la place de marché. - page 16

 
Vladislav Andruschenko:

le spread est pris en compte, le spread était de 8 pips. + stop min 18=26 pips

27 c'est bien.

Et de plus, si une personne doit placer un stoploss de 100 pips, cela signifie qu'elle perdra 100 pips, donc pour BAY à partir du prix ASC vous devez compter 100 pips.

et pour la vente de la DIS, respectivement.

Je n'ai pas dit où mettre le SL. J'ai dit quel prix utiliser lors de la vérification.
 
Andrey Khatimlianskii:
Je n'ai pas dit où mettre le SL. J'ai dit quel prix utiliser lors de la vérification.
Merci. Cette option compte également.
 
Taras Slobodyanik:

Alors comment ne pas deviner ? si le courtier donne un niveau de stop déraisonnable ? %)

...il est clair qu'après toutes les vérifications, il faut deviner pour connaître le retrait minimum

Vous ne pouvez pas deviner dans la mise en page. Vous devez tout savoir. A l'avance. Pour ne pas faire une seule erreur. Bien que je pense que les erreurs du serveur ne sont pas une erreur. C'est un avertissement.
 

Je n'ai aucune expérience de la vente d'EA sur le marché, mais après avoir lu toutes les opinions, je vais mettre mes cinq centimes.

Vous pouvez essayer de sélectionner plusieurs options dans le menu

1 Variante - Par défaut. C'est alors que l'arrêt min est entièrement déterminé parMODE_STOPLEVEL. Veillez à demander un nouveauNIVEAU D'ARRÊT avant chaque action de l'ordre.

2 Variante, siMODE_STOPLEVEL == 0, alors le stop quitte l'écart.

3 En option, nous fixons manuellement notre propre niveau de stop, ou un certain multiplicateur multiplié par le spread.

Il est nécessaire d'introduire un contrôle. Si un EA est testé ou optimisé, le niveau d'arrêt ne peut pas être inférieur au spread. Je pense que cela permettra au marché de passer n'importe quel test de résistance, y compris un test avec StopLoss = 1.

 
Dmytro Zelenskyy:

Je n'ai aucune expérience de la vente d'EA sur le marché, mais après avoir lu toutes les opinions, je vais mettre mes cinq centimes.

Vous pouvez essayer de sélectionner plusieurs options dans le menu

1 Variante - Par défaut. C'est alors que l'arrêt min est entièrement déterminé parMODE_STOPLEVEL. Veillez à demander un nouveauNIVEAU D'ARRÊT avant chaque action de l'ordre.

2 Variante, siMODE_STOPLEVEL == 0, alors le stop quitte l'écart.

3 En option, nous fixons manuellement notre propre niveau de stop, ou un certain multiplicateur multiplié par le spread.

Il est nécessaire d'introduire un contrôle. Si un EA est testé ou optimisé, le niveau d'arrêt ne peut pas être inférieur au spread. Je pense que cela permettra au marché de passer n'importe quel test de résistance, y compris un test avec StopLoss = 1.

Malheureusement, non.

Sur le marché, tout devrait aller automatiquement.

Maintenant, voici une nouvelle chose amusante avec l'or, il cite 3 chiffres, mais le dernier chiffre doit être arrondi, c'est-à-dire que le dernier chiffre doit être 0,

Le dernier chiffre devrait être 0, de sorte que lors de l'arrondi, il s'effectue selon une règle mathématique, et non dans le sens qui vous permet de contourner la règle de l'arrêt minimum.

Bien sûr, je peux simplement mettre - par le biais d'un contrôle de marché - tous les niveaux dans 10 niveaux d'arrêt - pour ainsi dire, afin de laisser passer les modérateurs, mais je voudrais le gérer correctement.

Je dois arrondir à la hausse pour l'achat et à la baisse pour la vente. oh............

 
Vladislav Andruschenko:

Malheureusement, non.

Sur le marché, tout devrait aller automatiquement.

Voici un nouveau truc sur l'or, il existe des cotations à 3 chiffres, mais le dernier chiffre doit être arrondi, c'est-à-dire que le dernier chiffre doit être 0,

Le dernier chiffre devrait être 0, de sorte que lors de l'arrondi, il soit effectué selon une règle mathématique, et non du côté qui vous permet de contourner la règle de l'arrêt minimum.

Bien sûr, je peux simplement mettre - par le biais d'un contrôle de marché - tous les niveaux dans 10 niveaux d'arrêt - pour ainsi dire, afin de laisser passer les modérateurs, mais je voudrais le gérer correctement.

Je dois arrondir à la hausse pour l'achat et à la baisse pour la vente. oh............

J'ai également été confronté à ce problème lorsque j'ai testé l'or et l'argent.

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);
  }

exemple d'utilisation

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

Voici à quoi ressemble ma fonction de prise de profit et d'arrêt de perte par exemple.

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:

Également confronté au problème des tests sur l'or et l'argent, j'ai écrit une fonction comme celle-ci

exemple d'utilisation

Si j'utilise l'or sur le serveur mt5 - 3 décimales, mais les stops et le prix ouvert doivent être fixés à ! !!!. Si vous voulez toujours jouer avec 2 décimales, arrondissez à 2 décimales au lieu de 3. Vous pouvez également voir quelques astuces humoristiques avec des arrêts minimums sur l'or et l'argent,

comme ça :

   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);

où l'arrondi= pour gold mt5 est 1.

Vous devez arrondir le prix, sinon il vous informera que le prix est erroné, mais lorsque vous l'arrondissez, le serveur le corrigera au bon prix et la transaction sera clôturée.

Le mt4 n'a pas de telles bizarreries - il y a 2 décimales et vous arrondissez à 2 décimales supérieures sans aucun problème.

mon opinion personnelle sur l'erreur 130 :

J'ai effectué tous les contrôles pour l'erreur 130 - il y a une sortie de journal d'erreur.

Il y a aussi la normalisation.

Sur la place de marché, ils m'ont fait normaliser par rapport au min stop, respectivement + spread, (par exemple, je devrais acheter au prix ASK et vérifier le min stop au prix BID).

Donc, il devrait être forcé sur l'utilisateur, si un trader utilise l'EA et définit par exemple 20 points de Stop Loss, alors l'EA devrait automatiquement le remplacer par 50 points (MinStop + Spread), ce qui n'est pas correct. Le trader doit voir l'erreur 130 et corriger le stop à ses propres risques.

Une autre option - si un utilisateur fixe le stoploss plus bas que le minimum - interdit le trading et la modification, car les modérateurs n'autoriseront pas le conseiller expert avec une erreur de 130.

Mais interdire le commerce est une erreur, le stop et le spread sont flottants, maintenant c'est moins que le minimum - alors c'est OK.

Je ne pense pas que ce soit une bonne idée d'utiliser le marché pour une telle approche.

IMHO : une erreur 130 devrait être et un utilisateur devrait voir la 130ème erreur du serveur, pas d'un conseiller expert disant : "Votre stop est en dessous du minimum, corrigez-le".

Règle du marché : ne pas ignorer l'Expert Advisor qui génère l'erreur 130 - parce que le vérificateur a mis 1 point dans le Stop Loss - eh bien, c'est un échec.

Une seule et même version d'Expert Advisor peut ou non être passée.

J'ai posté une version - tout est OK, après un certain temps j'ai vu que l'EA imprime beaucoup (juste le fait que le stop loss est inférieur au minimum), je l'ai rapidement corrigé et j'ai attendu une semaine jusqu'à ce qu'ils commencent à tester, à nouveau 2 semaines de stagnation parce que de nouveau je vois 130 erreur sur certains symboles

 
Vladislav Andruschenko:

En or sur le serveur mt5 - 3 décimales, mais les stops et le prix d'ouverture doivent être fixés à ! !!!. Si vous voulez modifier le prix de l'or et de l'argent, vous devez le régler sur 2 décimales, c'est-à-dire l'arrondir à 2 décimales et non à 3, et il y aura un truc avec votre min-stop sur l'or et l'argent,

comme ça :

Rounding= pour gold mt5 est 1.

Vous devez arrondir le prix, sinon il vous informera que le prix est erroné, mais lorsque vous l'arrondissez, le serveur le corrigera au bon prix et la transaction sera clôturée.

Le mt4 n'a pas de telles bizarreries - il y a 2 décimales et vous arrondissez à 2 décimales supérieures sans aucun problème.

mon opinion personnelle sur l'erreur 130 :

J'ai effectué tous les contrôles pour l'erreur 130 - il y a une sortie de journal d'erreur.

Il y a aussi la normalisation.

Sur la place de marché, ils m'ont fait normaliser par rapport au min stop, respectivement + spread, (par exemple, je devrais acheter au prix ASK et vérifier le min stop au prix BID).

Donc, il devrait être forcé sur l'utilisateur, si un trader utilise l'EA et définit par exemple 20 points de Stop Loss, alors l'EA devrait automatiquement le remplacer par 50 points (MinStop + Spread), ce qui n'est pas correct. Le trader doit voir l'erreur 130 et corriger le stop à ses propres risques.

Une autre option - si un utilisateur fixe le stoploss plus bas que le minimum - interdit le trading et la modification, car les modérateurs n'autoriseront pas le conseiller expert avec une erreur de 130.

Mais interdire le commerce est une erreur, le stop et le spread sont flottants, maintenant ils sont inférieurs au minimum - alors c'est OK.

Je ne pense pas que ce soit une bonne idée d'utiliser le marché pour une telle approche.

IMHO : une erreur 130 devrait être et un utilisateur devrait voir la 130ème erreur du serveur, pas d'un conseiller expert disant : "Votre stop est en dessous du minimum, corrigez-le".

Règle du marché : ne pas ignorer l'Expert Advisor qui génère l'erreur 130 - parce que le vérificateur a mis 1 point dans le Stop Loss - eh bien, c'est un échec.

Une seule et même version d'Expert Advisor peut ou non être passée.

J'ai posté une version - tout est OK, après un certain temps, j'ai vu que l'EA imprime beaucoup (juste le fait que le stop loss est inférieur au minimum), je l'ai rapidement corrigé et j'ai attendu une semaine jusqu'à ce qu'ils commencent à vérifier, à nouveau 2 semaines de stagnation parce que l'erreur 130 apparaît à nouveau sur un certain symbole

IMHO - de nombreux messages du serveur - pas une erreur, et le code de retour. Et elle n'est pas destinée à être évitée par toutes sortes d'astuces, mais à permettre au conseiller expert de prendre des décisions. Les décisions sont basées sur la réponse du serveur à ses actions. Sinon, il ne serait qu'un jouet stupide qui ne permet pas de surveiller le marché et de corriger ses actions en fonction de la "communication" avec le serveur.

Ainsi, "facetter" les modérateurs sur l'erreur 130 est exagéré. Nous devons être réfléchis : c'est une chose lorsqu'un conseiller expert continue à frapper le serveur après la 130e erreur, et une autre lorsqu'il y réagit et modifie ses actions. Pourquoi ne sommes-nous pas autorisés à faire ce dernier ? Est-ce simplement parce que quelqu'un (le modérateur) ne veut pas regarder de plus près le travail de l'EA ? J'ai l'impression d'en voir 130 - dans le mariage. Peu importe que l'EA ait très probablement besoin d'une telle réponse du serveur pour sa propre logique, il est important de la rejeter et de ne pas chercher plus loin. C'est comme ça que ça marche ?

 
Artyom Trishkin:

IMHO - de nombreux messages du serveur ne sont pas une erreur, mais un code de retour. Et vous en avez besoin non pas pour l'éviter par toutes sortes d'astuces, mais pour que le conseiller expert puisse prendre des décisions. Les décisions sont basées sur la réponse du serveur à ses actions. Sinon, il ne serait qu'un jouet stupide qui ne permet pas de suivre le marché et de corriger ses actions sur la base d'une "communication" réciproque avec le serveur.

Il est donc exagéré de "forcer" les modérateurs à faire la 130e erreur. Nous devons être réfléchis : c'est une chose si le conseiller expert continue à taper sur le serveur après la 130e erreur, mais c'en est une autre lorsqu'il y réagit et modifie ses actions. Pourquoi ne sommes-nous pas autorisés à faire ce dernier ? Est-ce simplement parce que quelqu'un (le modérateur) ne veut pas regarder de plus près le travail de l'EA ? J'ai l'impression d'en voir 130 - dans le mariage. Peu importe que l'expert ait probablement besoin d'une telle réponse du serveur pour sa propre logique, il est important de la rejeter et de ne pas chercher plus loin. C'est comme ça que ça marche ?

C'est pourquoi mon EA a capté les mouvements min/max et par conséquent, il martèle le serveur non pas avec un stoploss de 1 pip mais avec un niveau min normal + spread, mais le spread est flottant. Par conséquent, EA va pilonner le serveur jusqu'à ce qu'il renvoie un écart normal.

En d'autres termes, au moment de l'ouverture, il vérifie l'arrêt min - reconstruit ses valeurs - puis il frappe le serveur. Mais si vous avez besoin de mettre un stop de 10 pips, vous devez attendre le spread min et battre le serveur.