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

 
YanSay:

Pouvez-vous me dire comment exclure/ajouter une date spécifique à l'EA ?

Par exemple, ne pas faire de commerce le 2 mars 2018. J'ai essayé différentes options, je me suis embrouillé avec les dates.

L'option la plus simple est la suivante :

input datetime i_dtSkipTheDay = D'2018.03.02';


...
datetime dtDayStartTime = TimeCurrent() / (60 * 60 * 24); 
if (dtDayStartTime == i_dtSkipTheDay)
{
   // не торговать
}
 

J'ai écrit un EA, il fonctionne bien. J'ai décidé de le compléter et de prescrire des ordres de fermeture par signaux opposés ... mais il ne réagit pas .... il n'ouvre pas du tout ou ouvre mais ne ferme pas par signaux opposés.... seulement par TP et SL

 if (CCILong < Level0 && CountBuy() == 0)
       {   for(int i=OrdersTotal()-1; i >=0; i--)
          {
             if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
             {
                if(OrderMagicNumber() == Magic && OrderType() == OP_BUY)
                  bool close1 = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clrNONE);
             }
          }
       }   
          if (CCILong > Level0 && CountSell() == 0)
       {   for(int i=OrdersTotal()-1; i >=0; i--)
          {
             if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
             {
                if(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                  bool close1 = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrNONE);
             }
          }
       }
 
baksik99:

J'ai écrit un EA, il fonctionne bien. J'ai décidé de le compléter et de prescrire des ordres de fermeture par signaux opposés ... mais il ne réagit pas .... il n'ouvre pas du tout ou ouvre mais ne ferme pas par signaux opposés.... seulement par TP et SL

Vous avez écrit :

if (CCILong < Level0 && CountBuy() == 0)

S'il n'y a pas d'ordre d'achat, nous devons fermer l'achat. Il en va de même pour Sell.

 
Ihor Herasko:

Vous l'avez écrit :

S'il n'y a pas d'ordres d'achat, vous devez fermer l'ordre d'achat. Il en va de même pour Sell.

Doivent-ils être supprimés parCountSell etCountBuy ?

Cela a fonctionné .... Je l'ai réparé ! Merci!!!++++
 
Ihor Herasko:

L'option la plus simple est la suivante :

Malheureusement, cela n'a pas fonctionné.

Tout comme vous l'avez fait, mais pas de manière égale :

input datetime i_dtSkipTheDay = D'2018.03.02';

datetime dtDayStartTime = TimeCurrent() / (60 * 60 * 24);
if (dtDayStartTime != i_dtSkipTheDay)
{
//Открытие ордера
}

Encore dans le testeur ouvre le marché ce jour-là.

 
YanSay:

Malheureusement, cela n'a pas fonctionné(.

J'ai fait tout ce que vous avez fait, mais pas à égalité :

Encore dans le testeur ouvre le marché ce jour-là.

Et alors ?

input datetime i_dtSkipTheDay = D'2018.03.02';

if (TimeToStr(TimeCurrent(),TIME_DATE) != TimeToStr(i_dtSkipTheDay,TIME_DATE))
{
//Открытие ордера
}
 
Taras Slobodyanik:

Que pensez-vous de ça ?

Ça a marché comme ça ! Merci beaucoup !

 
YanSay:

Malheureusement, cela n'a pas fonctionné(.

J'ai fait tout ce que vous avez fait, mais pas à égalité :

Il ouvre toujours un commerce dans le testeur ce jour-là.

Désolé, il faut le multiplier à l'arrière :

input datetime i_dtSkipTheDay = D'2018.03.02';

datetime dtDayStartTime = (TimeCurrent() / (60 * 60 * 24)) * (60 * 60 * 24);
if (dtDayStartTime != i_dtSkipTheDay)
{
//Открытие ордера
}

C'est pour ça que ça n'a pas marché.

 
Ihor Herasko:

Je suis désolé, il faut le multiplier là-bas :

C'est pour ça que ça n'a pas marché.

Merci !

 

J'essaie de créer mon propre indicateur de fractales en utilisant l'indicateur standard, il semble fonctionner, mais il place toujours les fractales aux mauvais endroits parfois, quelqu'un peut-il m'aider ?

//+------------------------------------------------------------------+
//|                                                     Fractals.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009-2017, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_color1  Gray
#property indicator_color2  Gray
#property indicator_label1  "Fractal Up"
#property indicator_label2  "Fractal Down"
bool high_f, low_f;
//---- input data
input int period = 5;
int per = period;
//---- indicator buffers
double ExtUpperBuffer[];
double ExtLowerBuffer[];
//--- 10 pixels upper from high price
int    ExtArrowShift=-10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
  if(per % 2 == 0) per++;
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtUpperBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,217);
   PlotIndexSetInteger(1,PLOT_ARROW,218);
//---- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-ExtArrowShift);
//---- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,limit;
//---
   if(rates_total<per)
      return(0);
//---
   if(prev_calculated<per+(per-1)/2)
     {
      limit=(per-1)/2;
      //--- clean up arrays
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-per;

   for(i=limit;i<rates_total-(per+1)/2 && !IsStopped();i++)
     {
      
      for(int g = 1; g < (per+1)/2; g++){
         high_f = true; low_f = true;
         
         //---- Upper Fractal
         if(high[i-g] > high[i] || high[i+g] > high[i]){
            ExtUpperBuffer[i] = EMPTY_VALUE;
            high_f = false;  
            
         }else{            
            if(high_f) ExtUpperBuffer[i] = high[i];  
         }
         //---- Lower Fractal
         if(low[i-g] < low[i] || low[i+g] < low[i]){           
            ExtLowerBuffer[i] = EMPTY_VALUE;
            low_f = false;   
         }else{            
            if(low_f) ExtLowerBuffer[i] = low[i];     
         }
      
      }
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+