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

 
-Aleks-:

Êtes-vous sûr d'avoir regardé le dernier code que vous avez posté ? Si c'est le cas, j'ai besoin de repos... Merci.
Tracez la variable"c".
 
Artyom Trishkin:
Tracez la variable"c".

Oui, merci ! Je vois - mais je n'arrive pas encore à donner un sens à ce code - je vais faire des expériences !

Victor Nikolaev- merci pour votre aide !

 

Bonne journée à tous !

Veuillez me dire si vous pouvez modifier la valeur du NUMÉRO MAJEUR dans un ordre qui a déjà été fermé et qui apparaît dans la liste des ordres fermés.

C'est-à-dire modifier la valeur du NUMÉRO MAJEUR après la clôture de l'ordre.

Si c'est possible, alors quelle fonction doit être utilisée pour le modifier. Je n'ai pas trouvé une telle fonction dans le travail de Kim.

Merci.
 
ANDREY:

Bonne journée à tous !

Veuillez me dire si vous pouvez modifier la valeur du NUMÉRO MAJEUR dans un ordre qui a déjà été fermé et qui apparaît dans la liste des ordres fermés.

C'est-à-dire modifier la valeur du NUMÉRO MAJEUR après la clôture de l'ordre.

Si c'est possible, alors quelle fonction doit être utilisée pour le modifier. Je n'ai pas trouvé une telle fonction dans le travail de Kim.

Merci.

Vous ne pouvez pas. Et pourquoi en avez-vous besoin ? Peut-être existe-t-il une autre solution au problème ?
 
-Aleks-:

Tu ne peux pas. Pourquoi voulez-vous faire cela en premier lieu - y a-t-il une autre solution au problème ?

Merci pour le conseil.

Pendant que j'attendais une réponse, quelque chose m'est venu à l'esprit. Si ça ne marche pas, j'écrirai ce dont j'ai besoin.

Pouvez-vous me donner un indice ?

if(OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si DERNIERE commande
si ( OrderType ()==OP_SELL)// SEL

X = OrderProfit( ) ;// stocker la valeur TakeProfit

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si DERNIERE commande
si ( OrderType ()==OP_SELL)// SEL

si(X < 0)// et si cette vente a été fermée au stop

OUVRIR UNE AUTRE COMMANDE

QUESTION

Comment codifier un addendum à ces conditions.

Non seulement le dernier ordre, mais aussi l' avant-dernier et l'avant-dernier ordre doivent être clôturés au stop.

et seulement alors

POUR OUVRIR UNE AUTRE COMMANDE.

Merci.



 
geratdc:Pour l'instant, j'ai apporté les modifications recommandées au code dans le Bloc-notes. Veuillez vérifier si j'ai corrigé le code correctement ?

J'y ai jeté un coup d'œil. Corrigé. Dans le testeur pendant 3 mois voici le résultat

La chute est importante.

 
Pouvez-vous me dire comment trouver les numéros des 5 derniers croisements dans la journée en cours
 
missha32: Pour trouver le nombre de barres traversées par un nombre Mach de disons 5 derniers croisements pour la journée en cours

Si à 4h du matin - pas encore beaucoup de bars pour aujourd'hui. Sur H4, il n'y a que 6 barres dans une journée. Vous devez définir le nombre de barres à rechercher ou le nombre de croisements.

//+-------------------------------------------------------+
//| Подсчет пересечений MA                    PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict

extern int Баров = 500;  // Баров для подсчета пересечений МА
extern int MA_1  =10;
extern int MA_2  =100;

void OnStart()
{
  int Бар, Счетчик;
  double MA_1_Предыдущая, MA_2_Предыдущая,
         MA_1_Следующая,  MA_2_Следующая;

  ObjectsDeleteAll(); // Удалить вертикальные линии

  for(Счетчик=0, Бар=0; Бар<Баров; Бар++) // Начинаем с послнего бара
  {
    MA_1_Предыдущая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар+1);
    MA_1_Следующая  = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар);
    MA_2_Предыдущая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар+1);
    MA_2_Следующая  = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар);

    if((MA_1_Предыдущая>=MA_2_Предыдущая && MA_1_Следующая<=MA_2_Следующая) ||
       (MA_1_Предыдущая<=MA_2_Предыдущая && MA_1_Следующая>=MA_2_Следующая))
    {
      Счетчик++;
      Alert(Счетчик, "  Бар = ", Бар, "  T = ",Time[Бар]);

      // Создать вертикальную линию
      ObjectCreate( (string)Счетчик+"_"+(string)Бар,OBJ_VLINE,0,Time[Бар],0);

      if(Счетчик == 5) break;  // 5 линий есть - выход
    }
  }
}

distances importantes = tendance

 

Pouvez-vous me donner un indice ?

if(OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si DERNIERE commande
si ( OrderType ()==OP_SELL)// SEL

X = OrderProfit( ) ;// stocker la valeur TakeProfit

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si DERNIERE commande
si ( OrderType ()==OP_SELL)// SEL

si(X < 0)// et si cette vente a été fermée au stop

OUVRIR UNE AUTRE COMMANDE

QUESTION

Comment codifier un addendum à ces conditions.

Non seulement le dernier ordre, mais aussi l' avant-dernier et l'avant-dernier ordre doivent être clôturés au stop.

et seulement alors

POUR OUVRIR UNE AUTRE COMMANDE.

Merci.
 

J'ai besoin d'une sorte d'indicateur pour changer l'indicateur, je veux dessiner une ligne de haut en bas sur le graphique horaire toutes les 24 heures, et obtenir les données sur la longueur de la ligne et la pente et être capable de travailler avec ces données dans le code, je ne suis pas un grand expert sur mql4 si j'écris à partir de zéro, gros problème ?

J'ai une ligne étirée à deux coordonnées, peu importe comment je l'ai retournée, c'est juste un désordre, s'il vous plaît aidez-moi, peut-être que je n'aurais pas dû m'en occuper.

#property indicator_chart_window
//---- input parameters
extern int   CountDays     =22;
extern int   GMT           =0;
extern color pivot         =Gold;
extern color day           =Yellow;
extern color metka         =MidnightBlue;

//---- indicator buffers
double range[];
double ny_close[];
double low[];
double high[];
datetime time1;
datetime time2;
datetime ny_time[];

int shift, num;
int ny_shift[];
datetime prevDay=0;
bool fTime;
// ----
void ObjDel()
{
   if (ObjectsTotal() > 0)
   for (num=0;num<=CountDays;num++)
   {
   ObjectDelete("PPw["+num+"]");   
          
   }
   ObjectDelete("mPw");           
}
// ----
void PlotLine(string name,double value,double value1,double line_color,double style)
{
   double valueN=NormalizeDouble(value,Digits);
   double valueN1=NormalizeDouble(value1,Digits);
   bool res = ObjectCreate(name,OBJ_TREND,0,time1,valueN,time2,valueN1);
   ObjectSet(name, OBJPROP_WIDTH, 1);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_RAY, false);
   ObjectSet(name, OBJPROP_BACK, true);
   ObjectSet(name, OBJPROP_COLOR, line_color);
} 
//***********
void PlotVLine(string name,double tm,double line_color)
{
   bool res = ObjectCreate(name,OBJ_VLINE,0,tm,0);
   ObjectSet(name, OBJPROP_WIDTH, 0);
   ObjectSet(name, OBJPROP_STYLE, 2);
   ObjectSet(name, OBJPROP_COLOR, line_color);
} 
//***********
void PlotPrice(string name, double value, double line_color)
{
    double valueN=NormalizeDouble(value,Digits);
    bool res = ObjectCreate(name, OBJ_ARROW, 0, time2,valueN);
    ObjectSet(name, OBJPROP_COLOR, line_color);
    ObjectSet(name, OBJPROP_WIDTH, 1);
    ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}       
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   fTime = true;
   IndicatorBuffers(2);
   SetIndexBuffer(0,range);
   SetIndexBuffer(1,ny_close);
   return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+   
int deinit()
{
   ObjDel();
   Comment("");
   return(0);
}
//+------------------------------------------------------------------+
//| LNX_Pivots_v3.1                                                    |
//+------------------------------------------------------------------+
int start()
{
   int i;
   double P;
  
   datetime cDay = iTime(NULL,PERIOD_D1,0) + (GMT-Period()/60.0)*3600;
   if (cDay != prevDay || fTime)  
   {
   ObjDel();
   ArrayResize(ny_time,CountDays+1);
   ArrayResize(ny_shift,CountDays+1);
   ArrayResize(high,CountDays+1);
   ArrayResize(low,CountDays+1); 
   ArrayResize(range,CountDays+1);    
      for (shift=0;shift<=CountDays;shift++)
      {
      ny_time[shift]  = iTime(NULL,PERIOD_D1,shift) + (GMT-Period()/60.0)*3600;
      ny_shift[shift] = iBarShift(NULL,0,ny_time[shift]);
      ny_close[shift] = iClose(NULL,0,ny_shift[shift]);        
      }
     
 for (shift=0;shift<=CountDays-1;shift++)
      {
      int length = ny_shift[shift+1]-ny_shift[shift];
   
      high[shift] = High[iHighest(NULL,0,MODE_HIGH,length,ny_shift[shift])];
      low[shift]  = Low[iLowest(NULL,0,MODE_LOW,length,ny_shift[shift])];
      range[shift] = high[shift] - low[shift]; 
      }
  
  for (shift=0;shift<=CountDays-1;shift++)
      {
  
           
      P  = (ny_close[shift]+high[shift]+low[shift])/3;
      

      time1 = ny_time[shift]+Period()*60;    
         
         if (shift==0) 
         {
         time2 = ny_time[shift] + 24*3600+Period()*60 ;
         PlotVLine("pV0",time2,day);
         PlotPrice("mPw",P,metka);
                 
         }
         else
         time2 = ny_time[shift-1]+Period()*60;
         PlotVLine("pV["+shift+"]",time1,day);
            
      int pstyle=0;
   PlotLine("PPw["+shift+"]",P,P,pivot,pstyle); // *********две координаты*******

}
   fTime = false;
   prevDay = cDay;
   }           
   return(0);
}
//+------------------------------------------------------------------+
Raison: