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

 
Iurii Tokman:

Code muss eingefügt werden Alt+S
und wo ist die Funktion ?
wie haben Sie es kompiliert ? keine Fehler ?

Sein Code funktioniert mit schwebenden Aufträgen und die Funktion funktioniert mit Positionen - muss noch ein wenig optimiert werden

 
Vitaly Muzichenko:

Sein Code arbeitet mit schwebenden Aufträgen, während die Funktion mit Positionen arbeitet - wir müssen einige Anpassungen vornehmen

Genau richtig, es funktioniert nur mit Sellstop- und Buystop-Limit-Orders. Was müssen Sie korrigieren?

 
sibiriyak73:

Richtig, es wird nur an Sellstop- und Buystop-Limitaufträgen gearbeitet. Was muss repariert werden?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг торгов сегодня.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isTradeToDay(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()<=6) { 
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
 
Vitaly Muzichenko:

Gilt diese Funktion für die Kaufseite oder sowohl für den Kauf als auch für den Verkauf?

Soll ich die 6 gelb markierten Auftragsarten beibehalten?

Es wurde ohne Fehler kompiliert, aber es werden keine Aufträge geöffnet

 
sibiriyak73:

Gilt diese Funktion für die Kaufseite oder sowohl für den Kauf als auch für den Verkauf?

Soll ich die 6 gelb markierten Auftragsarten beibehalten?

Es wird korrekt kompiliert, aber die Aufträge werden nicht geöffnet.

Dies gilt für alle Typen und sollte funktionieren, wenn Sie es richtig anwenden.


P.S. Versuchen Sie, logisch zu analysieren, warum es nicht funktionieren könnte und was es daran hindert.

 

Und es ist wahrscheinlich besser, die Funktion einmal einzufügen, denn es spielt keine Rolle, welcher Typ auf dem Markt ist oder war.

if(Hour()==Nac && !isTradeToDay(Symbol()))
 {
   if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
   {
     int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //Здесь открываем
   }

   if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
   {
     int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //Здесь открываем
   }
 }
 
Ein frohes neues Jahr Bulls für alle! Bullisches Wachstum für alle!)

Können Sie mir sagen, wie ich den Punktwert des vorangegangenen Tages (oder der vorangegangenen Stunde) zwischen dem niedrigsten und dem höchsten Preis berechnen kann?
 
Порт-моне тв:
Ein frohes neues Jahr Bulls für alle! Bullisches Wachstum für alle!)

Können Sie mir sagen, wie ich den Punktwert des vorangegangenen Tages (oder der vorangegangenen Stunde) zwischen dem niedrigsten und dem höchsten Preis berechnen kann?
( High[1] - Low[1] ) / Point()
 
Hallo zusammen!

Können Sie mir sagen, was dieser Code bedeutet oder genauer gesagt, wie er im Prinzip funktioniert? In diesem Fall wird die Makro-Substitution verwendet, die die Hauptbedingung für die Eröffnung von Aufträgen ist. PS. Die globale Variable wird nirgends geändert.

#define  MARKET_WATCH          (0)

bool  Gl_Var_MarketWatch    =  MARKET_WATCH;  // глобальная переменная

if(Gl_Var_MarketWatch) ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,0,0,co,mn,0,clOpen);
      else ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,sl,tp,co,mn,0,clOpen);
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression может...
 
Tom Seljakin:
Hallo zusammen!

Können Sie mir sagen, was dieser Code bedeutet oder wie er im Prinzip funktioniert? In diesem Fall wird die Makro-Substitution verwendet, die die Hauptbedingung für die Eröffnung von Aufträgen ist. PS. Die globale Variable wird nirgends geändert.

vielleicht ist es

MARKET_WATCH,                               // окна "Обзор рынка"