Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1596

 

J'ai construit mon premier Expert Advisor à partir des codes fournis (merci àMakarFX_ pour la motivation et le code).

Tout fonctionne comme il se doit, mais avec un problème. Je ne sais pas où le chercher.

L'algorithme est le suivant :

il y a un signal - l'ordre s'ouvre

le fermer à l'aide d'un ordre d'arrêt ou d'un ordre d'achat en points, ou après que les limites de profit et de perte ont été atteintes dans la devise de dépôt CountLoss et CountProfit. (selon la première éventualité)

s'il s'agit d'un stop - l'ordre suivant avec une marge, s'il s'agit d'une prise, CountProfit, CountLoss - le lot est remis à l'état initial.

si le Stop Loss est défini sur CountLoss , l'ordre suivant est ouvert avec le lot minimum, par exemple, au lieu du lot de départ :

dans les variables externes, le lot de départ 0.02 est fixé, le prochain ordre à CountLoss sera le lot 0.01.

Quelqu'un peut-il me dire où se trouve l'erreur ?

MakarFX
MakarFX
  • 2021.03.19
  • www.mql5.com
Профиль трейдера
Dossiers :
oilim1p11.mq4  17 kb
 
законопослушный гражданин:

J'ai construit mon premier Expert Advisor à partir des codes fournis (merci àMakarFX_ pour la motivation et le code).

Tout fonctionne comme il se doit, mais avec un problème. Je ne sais pas où le chercher.

L'algorithme est le suivant :

il y a un signal - l'ordre s'ouvre

le fermer en utilisant l'ordre stop ou take en points, ou après la réalisation des limites de profit et de perte en devise depo CountLoss et CountProfit. (selon la première éventualité)

s'il s'agit d'un stop - l'ordre suivant avec une marge, s'il s'agit d'une prise, CountProfit, CountLoss - le lot est remis à l'état initial.

si le Stop Loss est défini sur CountLoss , l'ordre suivant est ouvert avec le lot minimum, par exemple, au lieu du lot de départ :

dans les variables externes, le lot de départ 0.02 est défini, puis à CountLoss, le prochain ordre sera le lot 0.01.

Quelqu'un peut-il me dire où se trouve l'erreur ?

Regardez ce que j'ai changé dans la fonction double Lots()

Dossiers :
oilim1p11.mq4  17 kb
 
MakarFX:

S'imprime une fois lorsqu'une transaction non rentable apparaît.

Merci pour cette réflexion. J'ai comparé l'heure de clôture de la commande en cours avec l'heure de clôture de la commande précédente et tout s'est passé comme prévu. J'ai également créé la fonction permettant d'ouvrir un ordre dans la direction opposée avec un stop loss, mais cela n'a pas beaucoup aidé.
 
Petronet:
Merci, j'ai compris l'idée. J'ai comparé l'heure de clôture de la commande en cours à l'heure de clôture de la commande précédente et tout s'est passé comme prévu. J'ai également fait la fonction d'ouvrir un ordre dans la direction opposée avec un stop loss, bien que cela n'ait pas beaucoup aidé.

Plus précisément...

 

Bon après-midi à tous. J'essaie d'implémenter le calcul du profit et du stop en utilisant l'indicateur ATR. L'arrêt fonctionne bien. Mais le bénéfice est toujours fixé à la même valeur. Voici le code pour le calcul des bénéfices

  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  

  
  
  //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+

Quelle est l'erreur qui fait que le bénéfice a toujours la même valeur ? Hein ?

 
DanilaMactep:

Bon après-midi à tous. J'essaie d'implémenter le calcul du profit et du stop en utilisant l'indicateur ATR. L'arrêt fonctionne bien. Mais le bénéfice est toujours fixé à la même valeur. Voici le code pour le calcul des bénéfices

Quelle est l'erreur qui fait que le bénéfice a toujours la même valeur ? Hein ?

   // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
   if(Tip_tp == en_TP_po_atr)
     {
      tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
     }
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+
 
MakarFX:
Merci pour votre aide - j'ai modifié un morceau de code et tout a fonctionné. Mais pouvez-vous décrire l'erreur en mots, car je n'arrive pas à la deviner à l'œil nu ?
 
MakarFX:

Regardez ce que j'ai changé dans la fonction double Lots()

super ! merci beaucoup !

 
DanilaMactep:
Merci pour votre aide - j'ai changé un morceau de code - tout a fonctionné. Mais pouvez-vous décrire en mots quelle était l'erreur, car je n'arrive pas à la deviner à l'œil nu ?

votre code a été divisé

В этой части кода ты задаешь tp значение АТР
  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
А в этой части ты обнуляешь предыдущее действие и задаешь непонятно что...
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
 
Bonjour, aidez-moi à faire fonctionner mon terminal, le marché ne fonctionne pas. Je veux télécharger un indicateur gratuit sur le marché et je ne peux pas.

J'ai changé le mot de passe, redémarré, mais rien ne fonctionne.

Le programme enregistre les données suivantes

2021.08.23 11:54:18.236 MQL5 Market a échoué à télécharger le produit 'MACD Intraday Trend'(www.mql5.com:443 send failed [426 : ])


Salutations, Olga

Raison: