[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 831

 

Bonjour, chers experts.

Pourriez-vous me conseiller sur cette question ?

Existe-t-il des fonctions standard dans MQL4 qui permettent de déterminer la valeur maximale/minimale que le prix a pris dans l'intervalle entre la i-ème barre et la j-ème barre ?

Merci beaucoup d'avance.

 
Morzh09:

Bonjour, chers experts.

Pourriez-vous me conseiller sur cette question ?

Existe-t-il des fonctions standard dans MQL4 qui permettent de déterminer la valeur maximale/minimale que le prix a pris dans l'intervalle entre la i-ème barre et la j-ème barre ?

Merci beaucoup d'avance.

https://docs.mql4.com/ru/series/iHighest

https://docs.mql4.com/ru/series/iLowest

 
Que pensez-vous de ça ?
void CheckForOpen() { 

//

s=0;
     t_up=icustom(.........................);
     if(t_up==1)
        {
          s=1;
          for(k=0;k<10;k++)             //количество раз проверки
            {
               sleep(30000);             //
             //думаю что в этом месте рефреш ????????
               if(t_up==1)
                    s=1;
                else
                    {
                       s=0;
                       break;
                    }
             }
           if(s==1)op="buy";
        }
      else
        {
          s=0;
          break;
        }
return;
}
Je dois me rafraîchir quelque part. Et une question : quelles sont les conséquences de l'utilisation de Slap ?
 
gince:
Et si vous le faites comme ça, vous devez vous rafraîchir quelque part. Et une question - quelles sont les conséquences de l'utilisation du slap ?

Lesommeil dans le testeur ne fonctionne pas.

Pourquoi la vérification de chaque tique ne fonctionne-t-elle pas pour vous ? L'indicateur est-il "lourd" ?

 

Bonjour, chers experts ! J'apprends à programmer en MOL4. Je n'arrive pas à trouver comment écrire correctement la condition : "S'il y a plus d'ordres d'achat que d'ordres de vente".

 
fanat:

Bonjour, chers experts ! J'apprends à programmer en MOL4. Je n'arrive pas à trouver comment écrire correctement la condition : "S'il y a plus d'ordres d'achat que d'ordres de vente".

Ouvert ? Fermé ? Le marché ? Différé ?
Il y a une différence.
 
fanat:

Bonjour, chers experts ! J'apprends à programmer en MOL4. Je ne sais pas comment écrire correctement la condition : "S'il y a plus d'ordres d'achat que d'ordres de vente". Veuillez m'aider.


1. Comptez le nombre de commandes du premier type

2. Comptez le nombre de commandes du deuxième type

3. Comparer les résultats

extern int Magic=20100906;
//+------------------------------------------------------------------+
//|     Массив для хранения количества открытых позиций каждого типа |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| int Order_Count[6];                                              |
//+------------------------------------------------------------------+
int Order_Count[6];

//+------------------------------------------------------------------+
//|       Функция возвращаюшая количество ордеров определенного типа |
//|                                   исхода из заданных ограничений |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| int Order_Count_Calculate(string lSymbol, int lMagic, int lOP=-1)|
//+------------------------------------------------------------------+
int Order_Count_Calculate(string lSymbol, int lMagic, int lOP=-1){
   ArrayInitialize(Order_Count,0);
   for (int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderSymbol() != lSymbol)                   continue;
      if (OrderMagicNumber() != lMagic)                continue;
      Order_Count[OrderType()]++;
   }
   if (lOP!=-1) return(Order_Count[lOP]);
   return(0);
}

int start(){
   Order_Count_Calculate(Symbol(), Magic);
   if (Order_Count[OP_BUY]>Order_Count[OP_SELL])
   // Ваши действия
   return(0);
}

 

Bonjour !!!

Un indicateur simple avec des flèches. Hier dans les deux sens.... pas moyen... Je me suis dit qu'aujourd'hui, avec les idées claires, je ne vois toujours pas l'erreur. .....

ÇA NE DESSINE RIEN !!!!! Dites-moi où j'ai fait une erreur. ....

//+------------------------------------------------------------------+
//|                                         Indicator_OsMA_Stoch.mq4 |
//|                                                                  |
//|           огромное cпасибо за помощь Vinin и granit77            |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int       Fast_EMA=8;      // пар-ры OsMA
extern int       Slow_EMA=34;     // пар-ры OsMA
extern int       Signal_EMA=1;    // пар-ры OsMA
extern double    N = 0.0002;      // контр. линия
extern int     KPeriod     = 21;  // Период (количество баров) для вычисления линии %K.
extern int     DPeriod     = 5;   // Период усреднения для вычисления линии %D.
extern int     Slowing     = 8;   // Значение замедления.
extern int       A = 20;          // расстояние от бара
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double OsMA[];
double Stoch[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_ARROW, EMPTY, 1);
   SetIndexArrow(0,234);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW, EMPTY, 1);
   SetIndexArrow(1,233);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexBuffer(2,OsMA);
   SetIndexBuffer(3,Stoch);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   
   for(int i = limit; i>= 0; i--) {
      ExtMapBuffer2[i] = EMPTY;
      ExtMapBuffer1[i] = EMPTY;
      OsMA[i]=iOsMA(NULL,0,Fast_EMA,Slow_EMA,Signal_EMA,PRICE_OPEN,i);
      Stoch[i]=iStochastic(NULL,0,KPeriod,DPeriod,Slowing,1,0,MODE_MAIN,i);
      if(true                &&
        (OsMA[i]>OsMA[i+1])  ||
        (OsMA[i]<OsMA[i+1])  &&
        (Stoch[i+1]>Stoch[i])||
        (Stoch[i+1]<Stoch[i])
        )
      {
       if((OsMA[i]<-N)&&(Stoch[i]<20)) ExtMapBuffer2[i] = Low[i] -A*Point;
       if((OsMA[i]> N)&&(Stoch[i]>80)) ExtMapBuffer1[i] = High[i]+A*Point; 
      }
   }
   return(0);
}
//+------------------------------------------------------------------+ 
 
Aidez-moi, s'il vous plaît. Il y a plusieurs ordres en attente (10 par exemple). L'un d'eux s'ouvre et se déclenche (peu importe s'il s'agit d'une prise ou d'une perte). Au prochain tick, le prochain ordre en attente devrait être mis en place. Il est difficile d'identifier l'ordre par un tick ou un chiffre magique (le nombre de positions qui peuvent se déclencher n'est pas limité). C'est pourquoi j'ai décidé que le moyen le plus simple de choisir le moment de placer un ordre en suspens serait de comparer les dernières et avant-dernières valeurs variables (peu importe) des positions qui ont déjà été clôturées. Merci !
 
dimon74:
Aidez-moi, s'il vous plaît. Il y a plusieurs ordres en attente (10 par exemple). L'un d'eux s'ouvre et se déclenche (peu importe s'il s'agit d'une prise ou d'une perte). Au prochain tick, le prochain ordre en attente devrait être mis en place. Il est difficile d'identifier l'ordre par un tick ou un magik (le nombre de positions qui peuvent se déclencher n'est pas limité). C'est pourquoi j'ai décidé que le moyen le plus simple de choisir le moment de placer un ordre en suspens serait de comparer les dernières et avant-dernières valeurs variables (peu importe) des positions qui ont déjà été clôturées. Merci !

Qu'est-ce qui va changer la prochaine fois ?
Raison: