Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 98

 
Roger:

Je ne le crois pas, cet EA ne peut pas fonctionner ni en réel ni en testeur.


Pourquoi ? Y a-t-il une erreur ? Expliquer.

C'est juste une partie du code qui est responsable de la conversion des lignes horizontales en ordres.

 
Aidez-moi, s'il vous plaît. Comment faire pour qu'un EA s'optimise à une distance de 20-30 barres par rapport à zéro. A la toute fin de la charte......
 

Aide à la compréhension de l'indicateur, je ne peux pas comprendre pourquoi pendant les signaux ne sont pas affichés en temps réel, mais seulement si vous changez le cadre temporel, dans le testeur de visualisation tout est rendu comme il se doit.

avant la mise à jour http://charts.mql5.com/2/379/eurusd-m-m1-roboforex.png

après http://charts.mql5.com/2/379/eurusd-m-m1-roboforex-2.png

//+------------------------------------------------------------------+
//|                                                           t27_zz |
//|                                                          tommy27 |
//|                                        SKYPE:       t.o.m.m.y.27 |
//|                                        MAIL: tommy27fx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27fx@gmail.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 FireBrick

extern int DeepBars = 5000;
double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexArrow (0,108);
   SetIndexArrow (1,108);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorShortName("t27_zz");
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=DeepBars-ExtCountedBars-1; i>=0; i--)
     { 
      if (Bar1(i)==1)   buf_1[i+1] = Low[i+1]-5*Point;//UP
      if (Bar1(i)==2)   buf_2[i+1] = High[i+1]+5*Point;//DOWN
     }
   return(0);
  }
//---- end
//------------------------------------------------------------------------
int Bar1(int i)
{
 if(Low[i+1] <= Low[i+2] && Low[i+1] <= Low[i])//UP
  return(1);
 if(High[i+1] >= High[i+2] && High[i+1] >= High[i])//DOWN
  return(2);
 return(0);
} 
 
tommy27:

Aide à la compréhension de l'indicateur, je ne peux pas comprendre pourquoi pendant les signaux ne sont pas affichés en temps réel, mais seulement si vous changez le cadre temporel, dans le testeur de visualisation, tout rendu comme il se doit.



Je dois faire face à la variable DeepBars.

 
splxgf:


Traiter la variable Barres de cerfs.


Merci beaucoup ! J'ai supprimé DeerBars et tout a fonctionné, pouvez-vous aussi me dire comment régler la profondeur d'affichage correctement alors, par quoi remplacer DeerBars maintenant ?
 

Pourquoi le remplacer ?

if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;//добавить
for (int i=recalc; i>=0; i--)//поправить
 
splxgf :

Pourquoi le remplacer ?


Oui, je l'ai corrigé comme ça :

if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)

et avec DeepBars, je voulais définir le nombre de barres pour ne pas montrer toute l'histoire, mais pour afficher sur les dernières barres profondes - ce que, pour une raison quelconque, je ne peux pas faire.

 
<br / translate="no">

Et avec DeepBars, je voulais définir le nombre de barres, de sorte que l'historique ne soit pas affiché dans son intégralité, mais sur les dernières barres profondes - pour une raison quelconque, cela n'est pas possible.


if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;
if (recalc>DeepBars) recalc=DeepBars;
 
Merci beaucoup pour votre aide, vous m'avez beaucoup aidé.
 
Dozol:


Pourquoi ? Y a-t-il une erreur ? Expliquer.

Il s'agit simplement de la partie du code responsable de la conversion des lignes horizontales en ordres.

Selon votre code, la ligne sera supprimée après le premier tick, c'est-à-dire qu'il n'y a pas de fonction de suivi des prix et que cela fonctionne comme un script - vous tracez manuellement une ligne horizontale, un ordre est ouvert ou non, mais la ligne est immédiatement supprimée. Les commandes de Sellstop par ce code ne seront jamais ouvertes.