[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 143

 
BooGUY:

Sur une fractale ! J'ai essayé avec un stop-loss - ça craint, j'aimerais essayer avec des stops sur des fractales, mais je ne sais pas comment l'écrire dans la condition. Ou comment l'écrire dans un EA, j'ai écrit une condition d'entrée, quelque chose comme ceci

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)

{... ???

}


Je doute d'après votre code que la conversation porte sur une fractale. quelques prix d'ouverture et de fermeture sur 4 périodes.
 
BooGUY:

Sur une fractale ! J'ai essayé avec un stop loss - c'est perdant, j'aimerais l'essayer avec des stops sur les fractales, mais je ne sais pas comment l'écrire dans la condition. Ou comment l'écrire dans un EA, j'ai écrit une condition d'entrée, quelque chose comme ceci

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)

{... ???

}

Pour tester la stratégie, il est plus facile pour vous de trouver une fonction de trailing stop par fractales et de l'inclure dans votre EA. Ou vous pouvez l'écrire vous-même.

La fonction déplacera l'arrêt de chaque position ouverte vers la fractale nécessaire définie dans les paramètres. Et ensuite, sur la base des résultats du test, nous pouvons déjà réfléchir à l'opportunité d'utiliser soit ce chalut, soit la fermeture des positions sur le marché lorsque le prix atteint le niveau fractal. Ni l'un ni l'autre n'est une chose facile à faire.

La fonction standard iFractals() vous aidera. Elle renvoie le prix auquel la fractale est trouvée, tel que spécifié dans les paramètres de la fonction.

 

aidez moi s'il vous plait, mon indicateur mesure le mouvement maximum par minute pour l'heure en cours sur une échelle de temps d'une heure, les 6 premières heures (barres) il mesure tout de manière adéquate, et ensuite commence quelques valeurs illégales qui apparaissent sous le code lui-même et l'indicateur, conseillez moi où je me suis trompé, bien que je ne me soucie pas des valeurs au delà de 3 barres, mais je crains que des erreurs puissent se produire sur la première barre

#property indicator_separate_window
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_minimum 0
#property indicator_maximum 25
double Buf_0[];             // Объявление массивов (под буферы индикатора)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
SetIndexBuffer(0,Buf_0);         // Назначение массива буферу   
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
int i;                           // Индекс бара       
int Counted_bars;                // Количество просчитанных баров
int m;
int MaxSpeed;
int Speed; 
//--------------------------------------------------------------------   
Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
while(i>=0)                      // Цикл по непосчитанным барам     
 {
 
 MaxSpeed=0;
 if (Period()==PERIOD_H1)
  {
  m=59;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+60*i)-iClose(Symbol(),PERIOD_M1,m+60*i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }
 if (Period()==PERIOD_M1)
  {
  m=0;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+i)-iClose(Symbol(),PERIOD_M1,m+i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }      
 Buf_0[i]=MaxSpeed;             // Значение 0 буфера на i-ом баре      
 i--;                          // Расчёт индекса следующего бара     
 }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
Je pense que j'ai peut-être des erreurs sur la première mesure.
Dossiers :
speed.mq4  3 kb
 
Beaucoup, beaucoup de MASD Peut-être que quelqu'un sait où plier l'un d'eux ????
 
LazarevDenis:

aidez moi s'il vous plait, mon indicateur mesure le mouvement maximum par minute pour l'heure en cours sur une échelle de temps d'une heure, les 6 premières heures (barres) il mesure tout de manière adéquate, et ensuite commence quelques valeurs illégales qui apparaissent sous le code lui-même et l'indicateur, conseillez moi où je me suis trompé, bien que je ne me soucie pas des valeurs au delà de 3 barres, mais je crains que des erreurs puissent se produire sur la première barre

J'avais à l'origine un indicateur différent, je l'ai démonté et j'ai "soudé" mon code

.

Que voulais-tu obtenir ?
 

Vinin:

Qu'est-ce que tu voulais obtenir ?


Je veux que l'indicateur montre la valeur maximale de iOpen-iClose parmi les barres de minutes, mais pour l'HEURE, par exemple pour une heure de 59 barres de minutes iOpen-iClose = 3 (par exemple) et une barre de minutes iOpen-iClose = 10 et sur un timeframe d'une heure, il doit montrer 10 sans aucune déviation et j'ai besoin que l'indicateur ferme les ordres, si un taux de minute va trop vite dans la mauvaise direction, alors le conseiller sera un signal de fermeture

Il s'agit de la première version de ce système. Plus tard, je veux qu'il soit capable de détecter la direction dans laquelle le prix évolue.

 

Si vous cliquez sur un objet graphique, par exemple une Ligne Horizontale, vous pouvez voir une "Description" dans la fenêtre qui s'ouvre.

- Est-il possible d'ajouter une "Description" à partir du code ?

Merci !

 
chief2000:

Si vous cliquez sur un objet graphique, par exemple une Ligne Horizontale, vous pouvez voir une "Description" dans la fenêtre qui s'ouvre.

- Est-il possible d'ajouter une "Description" à partir du code ?

Merci !

https://docs.mql4.com/ru/objects/ObjectSetText
 

Juste ce dont j'avais besoin ! Merci !

 

LazarevDenis

Le compte initial est de 59 barres, ce qui est incorrect. Il peut y avoir des trous dans les minutes, et la dernière barre d'heure peut contenir moins de minutes.

Vous devez prendre l'heure d'ouverture et de fermeture de la barre des heures (Time[i]). Utilisez cette heure pour calculer les décalages des minutes iBarShift, puis calculez le maximum dans cette plage de décalages.

D'ailleurs, que doit afficher l'indicateur sur une période d'une minute ?

Si le nombre est positif, le prix monte, s'il est négatif, il descend. Le retour du nombre modulo indique la force du mouvement.

Raison: