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

 
artem artem le MACD. Et il doit être confirmé 4 fois et l'ordre doit s'ouvrir sur la 4ème bougie. J'ai joint un fichier pour que ce soit plus clair visuellement.


SanAlex, pouvez-vous zoomer pour voir clairement les barres MACD et comment la rapide croise la lente ? Je peux à peine le voir.

Essayez

#define  MagicNumber  122122
extern string s1             = "Trading options";
extern double Lot            = 0.01;    // размер лота 0 - авт.расчет
extern double StopLoss       = 40;     // стоплосс
extern double TakeProfit     = 10;     // тейкпрофит
extern double TrailStop      = 21;     // уровень без убытка
extern int    Trailing       = 0;      // трейлинг стоп 1 вкл. 0 выкл.
extern int    Breakeven      = 0;      // перенос стоп лосса в без убыток
extern string s2             = "Day & Hour";
extern int    HrStart        = 0;      // время начала торговли
extern int    HrEnd          = 23;     // время окончания торговли
extern int    Monday         = 1;      // Понедельник 1 вкд. 0 выкл.
extern int    Tuesday        = 1;      // Вторник
extern int    Wednesday      = 1;      // Среда
extern int    Thursday       = 1;      // Четверг
extern int    Friday         = 1;      // Пятница
//+------------------------------------------------------------------+
// параметры индикаторов
double MovingPeriodLw        = 5;      
double MovingPeriodS1        = 75;
double MovingPeriodS2        = 85;
double StopLevel;
double TrailStep             = 3;      // шаг трейлинг стопа
bool OrderBuy = true, OrderSell = true, Order = false, Init = true;
int timeprev = 0, Slip = 3.0, start, cnt;

//+------------------------------------------------------------------+
//| Init function                                                    |
//+------------------------------------------------------------------+
void OnInit()
{
   if (Digits == 3 || Digits == 5) { // Пересчет для 5-ти знаков                                                    
      TakeProfit *= 10;
      TrailStop *= 10;
      TrailStep *= 10;
      StopLoss *=10;
      Slip *=10;
   } 
   return; 
}
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
{
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   if(CheckForOpen()!=start)
     {start=CheckForOpen(); cnt=0;}
   else
     {cnt+=1;}
   // Определение направления пересечения мувингов
//   if (Init) InitMetod(); 
   
   // Трейлинг стоп открытых позиций
   if (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber);
   
   // Ожидание нового бара на графике
   if(timeprev == Time[0]) return;
   timeprev = Time[0];

   if(cnt==3)
     {
      // Открытие ордера по методу Пуриа
      if(CheckForOpen()==0 && OrderBuy==true) // Если сигнал для покупок 
        {
         if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
           {OrderBuy=false; Print("BUY OK");}
        } 
      if(CheckForOpen()==1 && OrderSell==true) // Если сигнал для продаж 
        {
         if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
           {OrderSell=false; Print("SELL OK");}
        }
     }   
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen() // Открытие ордера по методу Пуриа
  {
   double malw,mas1,mas2,macd;
   int    res=-1, buy=0, sell=0;
   // Считывание параметров индикаторов 3 свечи (4ой)
   malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,3);
   mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,3);
   mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,3);
   macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,3);
   if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
   if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
   // Считывание параметров индикаторов 2 свечи (3ей)
   malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,2);
   mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,2);
   mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,2);
   macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,2);
   if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
   if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
   // Считывание параметров индикаторов 1 свечи (2ой)
   malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,1);
   mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,1);
   mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,1);
   macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,1);
   if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
   if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
   // Считывание параметров индикаторов 0 свечи (1ой)
   malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,0);
   mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,0);
   mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,0);
   macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,0);
   if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
   if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
   
   if(buy <4)  OrderBuy=true; 
   if(sell<4)  OrderSell=true;
   if(buy ==4) { res=0; OrderSell=true;} 
   if(sell==4) { res=1; OrderBuy =true;}
   return(res);
  }
 
MakaeFX, maintenant pour une raison quelconque, il ne s'ouvre pas à partir de la 4ème bougie de confirmation, mais en fait à partir de la 7ème. Capture d'écran du testeur jointe
Dossiers :
 
artem artem #:

SanAlex, pouvez-vous zoomer pour que les barres MACD soient clairement visibles et que la rapide croise la lente ? Je peux à peine le voir.

Mais ce que j'ai ajouté ici - le but du conseiller expert est différent. L'objectif est d'obtenir le profit total de toutes les paires ouvertes et de fermer tous les Expert Advisors.

Capture d'écran 2021-10-09 192219

Capture d'écran 2021-10-09 192331

Dossiers :
 
artem artem #:
MakaeFX, maintenant pour une raison quelconque, il ne s'ouvre pas à partir de la 4ème bougie de confirmation, mais en fait à partir de la 7ème. J'ai joint une capture d'écran du testeur
Téléchargez votre fichier EA, je vais regarder dans le testeur.
 
SanAlex, donc le point est que ce que je veux implémenter sera encore meilleur + je le fais depuis quelques jours maintenant, et je suis déjà fondamentalement intéressé par ce à quoi le bon code devrait ressembler. Et ce sera très utile pour l'avenir, et le conseiller expert sera vraiment bon. Mais votre version est également bonne, je ne peux rien dire contre elle.
 
MakarFX, j'ai joint un EA
Dossiers :
 
artem artem #:
MakarFX, attaché EA
Quelle version de MetaEditor ?
 
Exactly MetaEditor - version 5.00 build 2382
 
artem artem #:
exactement MetaEditor - version 5.00 build 2382

La façon dont vous avez compilé le fichier que vous avez posté n'est pas claire...

Ici, essayez et ajoutez ce dont vous avez besoin

Dossiers :
artem.mq4  13 kb
 

MakarFX, est-ce que je peux tester sur tous les ticks - du 01.08.21 au 03.09.21 - puis 46 ordres.

et si je teste uniquement les prix d'ouverture dans la même période - 29 ordres ?

+ plusieurs ordres ont explicitement manqué leur prix d'ouverture s'ils ont été testés par des ticks. J'ai joint une capture d'écran, elle montre

Dossiers :
Raison: