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

 
Sergey Gritsay:
R Quels sont les objets qui ne sont pas différents ? et qu'est-ce que cela signifie de changer le type d'objet, les propriétés vont s'effondrer ?

Cela signifie que si je remplace l'objet ligne horizontale par une ligne de tendance ou une ligne verticale sur le chandelier actuel dans mon code actuel, un objet fonctionnera toujours et il sera rouge quels que soient les paramètres de l'autre objet.

Le but de toutes ces manipulations est de combiner l'indicateur et l'EA, maintenant j'essaie de trouver l'erreur elle-même.

c'est-à-dire qu'il crée des mouvements et des suppressions tout à fait normalement, mais j'ai besoin de bleu quand j'achète, pas de rouge quand je vends de toute façon.
 

Salutations. Pouvez-vous me dire ce qu'est l'entrée entre crochets () après "double bb" et ce qu'est l'entrée entre crochets {} pour"double bb(int buff,int shift)" dans ce cas ?

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


Également ici. Acheter et Vendre ont le type bool. Comment puis-je savoir ce qui leur est attribué lorsque j'utilise "< , &&, >" ? ?

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  
 
Andrey Sokolov:

Salutations. Pouvez-vous me dire ce qu'est l'entrée entre crochets () après "double bb" et ce qu'est l'entrée entre crochets {} pour"double bb(int buff,int shift)" dans ce cas ?

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


Également ici. Acheter et Vendre ont le type bool. Comment puis-je savoir ce qui leur est attribué lorsque j'utilise "< , &&, >" ? ?

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  


1. il s'agit d'une fonction. Entre parenthèses - les paramètres, qui sont transmis à la fonction lorsqu'elle est appelée. Dans ce cas - le numéro du tampon de l'indicateur et le décalage de la barre, à partir de laquelle nous obtenons les valeurs de l'indicateur.

2) Les variables booléennes sont affectées au résultat de l'expression logique entière, après le signe d'affectation (=). Si toutes les conditions sont vraies, la variable est affectée à vrai, sinon - faux
 
 
trader781:

Cela signifie que si je remplace l'objet ligne horizontale par une ligne de tendance ou une ligne verticale sur le chandelier actuel dans mon code actuel, un objet fonctionnera toujours et il sera rouge quels que soient les paramètres de l'autre objet.

Le but de toutes ces manipulations est de combiner l'indicateur et l'EA, maintenant j'essaie de trouver l'erreur elle-même due à ce qui se passe.

c'est à dire qu'il se déplace et s'efface tout à fait normalement, mais j'ai besoin de bleu quand j'achète, pas de rouge quand je vends de quelque manière que ce soit.
cela signifie que vous avez à nouveau défini les paramètres de l'objet graphique de manière incorrecte.
 
Sergey Gritsay:
Vous vous trompez donc à nouveau dans les paramètres de l'objet graphique.

le plus probable.

Cela semble être un manuel, mais le résultat n'est pas le même, c'est pourquoi j'ai jeté le code ici.

 
Bonjour !
Je ne comprends pas pourquoi il y a une variable globale du terminal client dans le terminal si je ne l'ai pas créée (GlobalVariablesTotal() affiche "1"). Peut-être y a-t-il un préréglage par le terminal ? Alors pourquoi, lorsque je veux connaître son nom et que j'appelle la fonction GlobalVariableName(0) ou GlobalVariableName(1), aucun nom ne s'affiche. Dites-moi quel est le problème ?
 

Salutations. J'ai besoin d'obtenir les données sur la ligne rouge de l'indicateur qui n'est pas superposée au graphique des prix mais affichée séparément sous celui-ci. J'essaie de le faire comme avec les indicateurs qui sont superposés sur le graphique, mais quelque chose ne va pas. Où ai-je tort ?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

Voici l'indicateur lui-même

#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"

//ну если проще запулить в одно окно три мульти с настройками
//1 EUR-USD
//2 EURGBP
//3 EURJPY
//если все три в состоянии перекупленности  значит Бай и наоборот

#property indicator_separate_window
#property  indicator_buffers 6
#property   indicator_color1  Green
#property   indicator_color2  Red
#property   indicator_color3  Yellow
#property indicator_level1 0
#property indicator_level2 5
#property indicator_level3 -5

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

double       buf[];
double    MA_buf[];
double      buf2[];
double   MA_buf2[];
double      buf3[];
double   MA_buf3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(0, buf);
  
   SetIndexStyle(4,DRAW_NONE);
   SetIndexBuffer(4,MA_buf);
  
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, buf2);
  
   SetIndexStyle(3,DRAW_NONE);
   SetIndexBuffer(3,MA_buf2);  
    
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, buf3);
  
   SetIndexStyle(5,DRAW_NONE);
   SetIndexBuffer(5,MA_buf3);
  
   IndicatorShortName("ytg_Def_RSI_3_Symbol");
   Comment("yuriytokman@gmail.com");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   double RSI_1, RSI_2, RSI_12, RSI_22, RSI_13, RSI_23;
  
   int limit;
   int counted_bars=IndicatorCounted();
  
   if(counted_bars<0) return(-1);

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=limit; i>=0; i--)
   {
     RSI_1 = iRSI(Symbol_1,0,RSI_1_Period,applied_price,i);
     RSI_2 = iRSI(Symbol_1,0,RSI_2_Period,applied_price,i);

     MA_buf[i] = (RSI_1-RSI_2);
    
    
     RSI_12 = iRSI(Symbol_2,0,RSI_1_Period,applied_price,i);
     RSI_22 = iRSI(Symbol_2,0,RSI_2_Period,applied_price,i);

     MA_buf2[i] = (RSI_12-RSI_22);
    
    
     RSI_13 = iRSI(Symbol_3,0,RSI_1_Period,applied_price,i);
     RSI_23 = iRSI(Symbol_3,0,RSI_2_Period,applied_price,i);

     MA_buf3[i] = (RSI_13-RSI_23);          
   }
   for(i=limit; i>=0; i--)
   {
     buf[i] = iMAOnArray(MA_buf,0,ma_period,0,ma_method,i);
    
     buf2[i] = iMAOnArray(MA_buf2,0,ma_period,0,ma_method,i);    
    
     buf3[i] = iMAOnArray(MA_buf3,0,ma_period,0,ma_method,i);    
   }  
  
  
//----
   return(0);
  }
 
Andrey Sokolov:

Salutations. J'ai besoin d'obtenir les données sur la ligne rouge de l'indicateur qui n'est pas superposée au graphique des prix mais affichée séparément sous celui-ci. J'essaie de le faire comme avec les indicateurs qui sont superposés sur le graphique, mais quelque chose ne va pas. Où ai-je tort ?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

Voici l'indicateur lui-même

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

Vous ouvrez la fenêtre des paramètres d'entrée et vous les listez dansiCustom dans l'ordre.

Il vous manque les trois premières valeurs de la ligne :

 
Raison: