Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1658

 
artem artem der MACD befindet. Sie muss 4 Mal bestätigt werden, und der Auftrag sollte bei der 4. Kerze eröffnet werden. Ich habe die Datei angehängt, um sie visuell zu verdeutlichen.


SanAlex, können Sie zoomen, um deutlich sichtbare MACD-Balken zu haben und wie schnell man langsame Balken kreuzt? Ich kann es kaum sehen.

Versuchen Sie

#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, jetzt aus irgendeinem Grund öffnet es nicht von der 4. Bestätigungskerze, sondern tatsächlich von der 7. Screenshot des Testers im Anhang
Dateien:
 
artem artem #:

SanAlex, können Sie die MACD-Balken so vergrößern, dass sie deutlich zu sehen sind und der schnelle Balken den langsamen kreuzt? Ich kann es kaum sehen.

aber was ich dort hinzugefügt habe - der Zweck des Expert Advisors ist ein anderer. Das Ziel ist es, den Gesamtgewinn aller offenen Paare zu erhalten und alle Expert Advisors zu schließen.

Bildschirmfoto 2021-10-09 192219

Bildschirmfoto 2021-10-09 192331

Dateien:
 
artem artem #:
MakaeFX, jetzt aus irgendeinem Grund öffnet es nicht von der 4. Bestätigungskerze, sondern tatsächlich von der 7. Ich habe ein Bildschirmfoto des Testers beigefügt
Laden Sie Ihre EA-Datei hoch, ich werde im Tester nachsehen
 
SanAlex, also der Punkt ist, dass das, was ich implementieren will, noch besser sein wird + ich mache das jetzt seit ein paar Tagen, und ich bin schon grundsätzlich daran interessiert, wie der richtige Code aussehen sollte. Und es wird für die Zukunft sehr nützlich sein, und der Expert Advisor wird wirklich gut sein. Aber Ihre Version ist auch gut, da kann ich nichts gegen sagen.
 
MakarFX, beigefügt ein EA
Dateien:
 
artem artem #:
MakarFX, beigefügt EA
Welche Version von MetaEditor?
 
Genau MetaEditor - Version 5.00 build 2382
 
artem artem #:
genau MetaEditor - Version 5.00 build 2382

Es ist nicht klar, wie Sie die von Ihnen gepostete Datei kompiliert haben...

Versuchen Sie hier, das hinzuzufügen, was Sie sonst noch brauchen

Dateien:
artem.mq4  13 kb
 

MakarFX, ist es OK, wenn ich auf alle Ticks testen - von 01.08.21 bis 03.09.21 - dann 46 Aufträge

und wenn ich nur nach Eröffnungskursen innerhalb desselben Zeitraums prüfe - 29 Aufträge ?

+ Mehrere Aufträge verfehlten ausdrücklich ihren Eröffnungskurs, wenn sie um Ticks getestet wurden. Ich habe einen Screenshot angehängt, er zeigt

Dateien: