[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 411

 
kolyango:

Comment faire :

si la Condition1 est remplie, alors ne la vérifiez plus à chaque tick, et aux ticks suivants vérifiez aussi la Condition2 et ensuite la Condition3 jusqu'à ce que nous déclarions tous les drapeaux faux ?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

Lisez le code plusieurs fois jusqu'à ce que ce qui est écrit soit clair, et vous serez heureux.

 
costy_:

il lit les données de la barre qui a déjà établi (précédent) i+1 retrait. Mais l'algorithme du créateur sera brisé (il le sait mieux que quiconque, je travaille également sur des données ouvertes et générées +1).


Comme le dit le créateur, i+1 sert uniquement à alimenter les données d'un autre indicateur, puis la condition de panne est vérifiée, mais tous les autres calculs sont effectués sur i.

Le fait est que l'indicateur n'est pas mis à jour automatiquement, mais seulement lors du rechargement (changement de TF, changement de propriétés).

Je ne comprends pas quelle est la raison.

J'ai essayé d'utiliser seulement i, en poussant le calcul des données de l'indicateur requis sur la barre précédente, à la fin du cycle, mais cela n'a pas aidé.

 
costy_:

Je ne comprends toujours pas.

C'est probablement plus facile à expliquer par une photo.


Oui, merci ! Là où vous l'avez surligné en bleu, vous devez trouver la bougie qui a clôturé au-dessus du haut sur D1.
 
costy_:

Lisez le code plusieurs fois jusqu'à ce que ce qui est écrit soit clair, et vous serez heureux.


Merci encore !
 
LOA:


En tant que créateur, je dis que i+1 ne sert qu'à alimenter les données d'un autre indicateur, puis il vérifie la condition de panne, mais tous les autres calculs sont effectués sur i.

Le problème est que l'indicateur ne se met pas du tout à jour automatiquement, mais seulement lors du rechargement (changement de TF, affichage des propriétés).

Je ne comprends pas la raison.

J'ai essayé d'utiliser seulement i, en déplaçant le calcul des données de l'indicateur requis sur la barre précédente, à la fin du cycle, mais cela n'a pas aidé.

vous avez

           int  proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 

Je pense que ça devrait être comme ça.

           double proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 
 
costy_:

Vous avez

Je pense que ça devrait être comme ça.


no.... Nous ne prenons pas la valeur du prix, mais la lecture de l'indicateur (histogramme), dont la valeur peut être 1 ou -1.
 
costy_:

Lisez le code plusieurs fois jusqu'à ce que ce qui est écrit soit clair, et vous serez heureux.


Comment réécrire les conditions d'un tel code, je ne comprends pas ?

static bool Val_max, Cl_dn, Val_min; //static or global
                                        |
//+------------------------------------------------------------------+
int start()
  {
   int j;
   double bid;                                         
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1=Open[1];
double Close_1=Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "Название Польз. Индикатора",0,0);   // Присваиваем пер. Val значение польз. индикатора
if (Условие1)
{
 Val_max=true;                  // 
 Alert("Значение инд. >= Value_max (исп. 1-е усл.)");
}
if (Условие2)
{
 Cl_dn=true;
 Alert("1 бар закрылся падением (исп. 2-е усл.)");
}
if (Условие3 && Cl_dn==true)
{
 Val_min=true;
 Alert("Значение инд. <= Value_min (исп. 3-е усл.)");
}
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }
   
   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 
LOA:

no.... Nous ne prenons pas la valeur du prix, mais l'indicateur (histogramme), qui peut avoir une valeur de 1 ou -1.

Je ne peux toujours pas répondre, où sont les inds invoqués qu'ils retournent int double, peuvent-ils vraiment être >1 pour que int soit assigné >0 et vice versa (au moins *.ex4) ?

ME_Proboy_F5_For_EX

ME_Ordre_ATR_Pour_EX

2011.12.07 18:10:42 Impossible d'ouvrir le fichier \experts\indicators\ME_Proboy_F5_For_EX.ex4' sur le AUDUSD,M30

Remplacé tout avec MACD, tout fonctionne !

Dossiers :
temp_1.mq4  14 kb
 
kolyango:


Comment réécrire les conditions d'un tel code, je ne comprends pas ?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

Lisez le code plusieurs fois jusqu'à ce que vous compreniez clairement ce qui est écrit, et vous serez satisfait.

Pourquoi avez-vous besoin de drapeaux ?) Vous pouvez vous en passer.

   if(Close[i+3]>Open[i+3]&&Close[i+2]>Open[i+3]&&Close[i+2]<Close[i+3]&&Close[i]>Close[i+3]) //открываем бай

 
costy_:

Je ne peux toujours pas répondre, où sont les inds invoqués qu'ils retournent int double, peuvent-ils vraiment être >1 pour que int soit assigné >0 et vice versa (au moins *.ex4) ?

ME_Proboy_F5_For_EX

ME_Ordre_ATR_Pour_EX

2011.12.07 18:10:42 Impossible d'ouvrir le fichier \experts\indicators\ME_Proboy_F5_For_EX.ex4' sur le AUDUSD,M30

Remplacé tout par MACD, tout fonctionne !


Oui, l'indicateur sur l'historique fonctionne avec n'importe quel indicateur déclenché.ne fonctionne pas dans la vie réelle, vérifié sur M1.

Si je vous ai bien compris, je vais essayer de remplacer dans les conditions >0, <0 par ==1 ou ==-1.