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

 

Kann jemand den folgenden Code vorschlagen:

Wenn eine Gruppe von Aufträgen GESCHLOSSEN ist (mehr als 2 des gleichen Typs), dann STOPPEN SIE DEN HANDEL bis zum Ende des Tages (oder bis zu einer bestimmten Zeit, die in Stunden oder Minuten angegeben werden kann).

Zählen Geschichte wie auf der gleichen Reihenfolge gefunden Arten noch irgendwie in der Lage, aber wie man am Ende des Tages genau zu stoppen, weiß nicht. Frohe Pfingsten an alle)

 
Igor Makanu:

nicht normal, acht Bytes wären eine Zumutung, um etwas zu senden

Nun, das hängt vom Zweck ab, wenn es nur eine Erinnerung ist, dann sind acht ausreichend :)

 
Порт-моне тв:

Kann jemand den folgenden Code vorschlagen:

Wenn eine Gruppe von Aufträgen GESCHLOSSEN ist (mehr als 2 des gleichen Typs), dann STOPPEN SIE DEN HANDEL bis zum Ende des Tages (oder bis zu einer bestimmten Zeit, die in Stunden oder Minuten angegeben werden kann).

Zählen Geschichte wie auf der gleichen Reihenfolge gefunden Arten noch irgendwie in der Lage, aber wie man am Ende des Tages genau zu stoppen, weiß nicht. Frohe Pfingsten an alle)

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(int order_type)
  { double p = 0;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=время начала дня)
           { 
            if(OrderType()==order_type || order_type == -1) cnt++;
           }
        }
     }
   return(p);
  }
 
Порт-моне тв:

Kann jemand den folgenden Code vorschlagen:

Wenn eine Gruppe von Aufträgen GESCHLOSSEN ist (mehr als 2 des gleichen Typs), dann STOPPEN SIE DEN HANDEL bis zum Ende des Tages (oder bis zu einer bestimmten Zeit, die in Stunden oder Minuten angegeben werden kann).

Zählen Geschichte wie auf der gleichen Reihenfolge gefunden Arten noch irgendwie in der Lage, aber wie man am Ende des Tages genau zu stoppen, weiß nicht . Frohe Heilige Dreifaltigkeit für alle)

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

Wenn ich die Frage richtig verstanden habe, lautet sie ungefähr so (das Prinzip selbst)

 
Aleksei Stepanenko:

Nun, es hängt davon ab, was Zweck, wenn nur an sich selbst zu erinnern, dann acht ist genug :)

wenn Sie sich selbst erinnern wollen, ist es besser, ein benutzerdefiniertes Ereignis in OnChartEvent() zu werfen, es ist bequemer, imho


MakarFX:

Wer kann den folgenden Code vorschlagen:

wenn das Raster der Aufträge CLOSE ist (mehr als 2 des gleichen Typs), dann STOPPEN SIE DEN HANDEL bis zum Ende des Tages (oder bis zu einem bestimmten Zeitpunkt, der in Stunden oder Minuten angegeben werden kann).

Durchsuchen der Auftragshistorie ab dem Datum des Tagesbeginns (heute, oder ab TF D1, um einen Null-Balken zu erhalten, oder ab einer Datetime-Tick-Zeit, um zu konvertieren)

wenn mindestens ein Auftrag in der Historie gefunden wurde, dessen Datum größer als das eingestellte ist - die Funktion beenden, was zu true führt

in OnTick() ganz am Anfang des Aufrufs einer solchen Funktion mit dem Datumsparameter (heute)


Ich bin zu faul, es zu schreiben, es gibt ungefähr ein Dutzend Zeilen, in Kims Beispiel haben wir Funktionen, um nach Aufträgen in der Historie nach Datum zu suchen

 
Порт-моне тв: Das Zählen der Historie als Auffinden nach der gleichen Auftragsart kann ich noch irgendwie hinbekommen, aber wie man am Ende des Tages aufhört, weiß ich nicht genau. Frohe Dreifaltigkeit für alle)
bool trade_buy;
bool trade_sell;

if(кол-во закрытых ордеров buy>2)
trade_buy=false;
else
trade_buy=true;

if(кол-во закрытых ордеров sell>2)
trade_sell=false;
else
trade_sell=true;
 
Maxim Kuznetsov:

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

Wenn ich die Frage richtig verstanden habe, geht sie ungefähr so (das Prinzip selbst)

Vielen Dank für die prompte Antwort, aber diese "Handel verbieten" Sache, ich weiß nicht, wie zu implementieren, danke für den Code.
 
MakarFX:
Handel verkaufen / Handel kaufen - Funktion wie!?
 
Порт-моне тв:
Handel verkaufen / Handel kaufen - Funktion wie!?


//+------------------------------------------------------------------+
bool trade_buy;
bool trade_sell;
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(string symb="",int order_type)
  {
   double p = 0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderSymbol()==symb || symb=="")
           {
            if(OrderCloseTime()>=iTime(_Symbol,PERIOD_D1,0))
              { 
               if(OrderType()==order_type || order_type == -1) cnt++;
              }
           }
        }
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(GetCloseOrderType(_Symbol,0)>2)
      trade_buy=false;
   else
      trade_buy=true;

   if(GetCloseOrderType(_Symbol,1)>2)
      trade_sell=false;
   else
      trade_sell=true;
//---
   if(trade_buy)
     {
      твое условие открытия покупок
     }
   if(trade_sell)
     {
      твое условие открытия продаж
     }
//---
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

Wenn überhaupt, dann wird es von hier übernommen.

Ich bin neu in der Programmierung, nicht sehr gut, können Sie es neu machen und zum Download bereitstellen?