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

 

Bonjour à tous !

1) Compilation de l'EE.

2) L'exécuter dans le testeur.

3) Il y a trois entrées dans le journal :

2020.10.25 20:06:08.484 2020.09.24 00:00:00 Test de SURCHARGE commencé

2020.10.25 20:06:07.015 TestGenerator : spread actuel 7 utilisé
2020.10.25 20:05:51.296 Expert UPDATE GBPUSD,M1 : chargé avec succès


4)La visualisation reste en place.

Quelle que soit l'erreur logique commise, les transactions ne seront pas exécutées, par exemple, mais le testeur doit commencer à compter les barres. Mais la carte se fige et reste immobile.

J'ai essayé plusieurs autres conseillers experts, et ils fonctionnent tous.

Quand je lance celui-ci, tout s'arrête.

Quelqu'un a-t-il rencontré un tel problème ? Comment le réparer ?

 
Andrey Ilinykh:

Si vous écrivez les valeurs calculées dans un journal ou un fichier, en quoi cela vous aide-t-il ?

Trouvez l'erreur, formez un algorithme.

 
Alexey Viktorov:

Tu peux calculer l'angle avec une tangente. Et vous n'avez pas vraiment besoin d'un angle en soi, vous avez juste besoin d'une tangente.

La tangente est en tout cas un kilomètre par heure ou un point par mile ou mille points par jour et c'est la vitesse. La dimensionnalité du graphique. et la tangente sur celui-ci est l'angle lié aux dimensions de l'ordonnée et de l'abscisse. C'est le point de départ.

 
Aleksei Stepanenko:

Oui, encore une fois, la vitesse n'est qu'une unité : pips par minute. En ce qui concerne les week-ends et les trous, j'ai décidé : ce qui est bougies sur le graphique est l'intervalle de temps, et ce qui ne l'est pas (jours/heures), il n'existe pas. En effet, si nous prenons en compte les week-ends et que le prix reste inchangé à ce moment-là, la vitesse diminuera sensiblement sans aucune raison. Mais encore une fois, c'est à chacun de voir :)

Pourquoi craindre la vitesse. C'est juste une convention pour donner des types.
Comme une variante de la fonction de définition des angles :

struct PointPriceTime
  {
   double            price;
   datetime          time;
                     PointPriceTime(double p, datetime t) { price=p; time=t; };
   void              Set(double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price=0.0; time=0; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[9]= {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
   int i=0;
   while(i<9 && SeriesInfoInteger(_Symbol,tf[i],SERIES_FIRSTDATE)>p1.time)
      i++;
   if(i==9)
     {
      Print("Время левой границы вне диапазона исторических данных");
      return DBL_MAX;
     }
   int bar1 = iBarShift(_Symbol,tf[i],p1.time);
   int bar2 = iBarShift(_Symbol,tf[i],p2.time);
   if(bar1==bar2)
      return 0.0;
   return atan((p2.price-p1.price)/((bar1-bar2)*PeriodSeconds(tf[i])*_Point/60))*180/M_PI;
  }

Après MT5, la sensation de MT4 est tout simplement affreuse. L'accès à l'histoire est en quelque sorte émasculé. Je ne parle même pas des tiques.



Dossiers :
Angle.mq4  11 kb
iCanvas.mqh  49 kb
 

Veuillez indiquer s'il est possible de gérer par programme l'affichage des descriptions des niveaux de transaction sur le graphique. Est-il possible de les désactiver à l'aide des outils MQL4 (tout en laissant les niveaux de trading sur le graphique) ou de les modifier ?


Je dois marquer visuellement certains niveaux de négociation en leur donnant leur propre description. Pour cela, je crée des lignes horizontales dont le style est similaire à celui des niveaux de transaction mais dont la couleur diffère. Je leur donne une description (OBJPROP_TEXT) et j'active l'affichage des descriptions d'objets sur le graphique (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). Dans ce cas, la description que j'ai créée est superposée à ce qui est montré dans la capture d'écran et, par conséquent, aucune des deux n'est lisible.

Est-il possible de désactiver ou de modifier les descriptions des niveaux de trading créés par le terminal ? Ces descriptions sont-elles accessibles depuis le programme MQL ?

 
Janis Ozols:

Veuillez m'indiquer s'il est possible de gérer par programme l'affichage des descriptions des niveaux de transaction sur le graphique. Est-il possible de les désactiver à l'aide des outils MQL4 (tout en laissant les niveaux de trading sur le graphique) ou de les modifier ?


Je dois marquer visuellement certains niveaux de négociation en leur donnant leur propre description. Pour cela, je crée des lignes horizontales dont le style est similaire à celui des niveaux de transaction mais dont la couleur diffère. Je leur donne une description (OBJPROP_TEXT) et j'active l'affichage des descriptions d'objets sur le graphique (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). Dans ce cas, la description que j'ai créée est superposée à ce qui est montré dans la capture d'écran et, par conséquent, aucune des deux n'est lisible.

Est-il possible de désactiver ou de modifier les descriptions des niveaux de trading créés par le terminal ? Ces descriptions sont-elles accessibles depuis le programme MQL ?

Si, il y en a un,

décochez la case à cocher.

1

 
Alekseu Fedotov:

Vous pouvez,
décocher la case.

Si vous décochez cette case, les niveaux de négociation (lignes) eux-mêmes disparaissent du graphique, ainsi que leurs descriptions.

En posant la question, j'essayais de souligner que je ne veux pas supprimer les lignes, j'ai seulement besoin de changer ou de supprimer leurs descriptions du graphique (indiquées par des flèches dans la capture d'écran).

 
Janis Ozols:

Si vous décochez cette case, les niveaux de trading(lignes) disparaissent du graphique ainsi que leurs descriptions.

En posant la question, j'essayais de souligner que je ne veux pas supprimer les lignes, j'ai seulement besoin de changer ou de supprimer leurs descriptions du graphique (indiquées par des flèches dans la capture d'écran).

Vous n'en avez pas besoin, vous créez vos lignes sur ces lieux.

 
Vitaly Muzichenko:

Vous n'en avez pas besoin, vous créez vos lignes à ces endroits.

Je veux seulement mettre en évidence certains des niveaux existants(pour l'exemple montré dans la capture d'écran, le niveau le plus élevé), et laisser les autres tels quels.

S'il est impossible d'accéder aux descriptions de ces niveaux de manière programmatique, nous devrons probablement désactiver les niveaux eux-mêmes et, à chaque tic-tac, demander au terminal de les dessiner indépendamment en mettant en évidence les niveaux appropriés dans une autre couleur et en leur fournissant une description différente. Et il n'y a pas seulement des niveaux ouverts, mais aussi des stop-loss et des take-profits qui doivent également être tracés.

Peut-être existe-t-il un moyen plus trivial de désactiver la description des niveaux de négociation (en ne laissant que les lignes) ou de les modifier ?

 

Pouvez-vous expliquer en langage clair quelle est la différence entre ces fonctions ?

//+------------------------------------------------------------------+
int    CountOrder(int Order_Type) 
   {
    int Orders=0;
    for(int a=OrdersTotal()-1;a>=0;a--)
    {
     if(OrderSelect(a, SELECT_BY_POS, MODE_TRADES)==false) continue;
     if(OrderSymbol()!=_Symbol) continue;
     if(Order_Type == OrderType() || Order_Type == -1) Orders++;
    }
    return Orders;
   }
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
  {
   int cnt=0;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
         if(OrderSymbol()==_Symbol)
            if(OrderType()==order_type)
               cnt++;
   return (cnt);
  }
//+------------------------------------------------------------------+