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

 
SanNneK:
Können Sie mir sagen, wie die Bedingung lautet, dass alle Aufträge geschlossen werden, wenn der Chart auch nur um einen Punkt fällt?
Die Bedingung ist kleiner als oder gleich. In ontik weisen Sie den Angebotspreis einer globalen Variablen zu. Wenn das Gebot kleiner oder gleich der globalen Variablen ist, werden die ausstehenden Aufträge geschlossen. Andernfalls ist die globale Variable gleich dem Gebot.
 
Guten Abend. Könnten Sie mir bitte den Code für die Notschließung aller soeben eröffneten Geschäfte nennen?
 
Können Sie mir sagen, wie ich alle Positionen, die ich schließen möchte, gleichzeitig schließen kann?
 

Auf diese Weise können Sie alle offenen Trades schließen (MQL4):

for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()<=OP_SELL)
      {
      OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),(int)SymbolInfoInteger(OrderSymbol(),SYMBOL_SPREAD),OrderType()==OP_SELL?clrRed:clrBlue);
      }
   }
Und wenn Sie selektiv vorgehen wollen, müssen Sie die Auswahlbedingung beschreiben.
 
О.
 
Aleksei Stepanenko:

Auf diese Weise können Sie alle offenen Trades schließen (MQL4):

Und wenn Sie selektiv vorgehen wollen, müssen Sie die Auswahlbedingung beschreiben.

Dankeschön

 
Igor Makanu:

2020.09.13 08:33:57.508 tst (EURUSD,H1) v1 = 1

2020.09.13 08:33:57.508 tst (EURUSD,H1) v2 = 1.01

2020.09.13 08:33:57.508 tst (EURUSD,H1) v3 = qwerty

2020.09.13 08:33:57.508 tst (EURUSD,H1) v4 = 3.1415

2020.09.13 08:33:57.508 tst (EURUSD,H1) v5 = 777

2020.09.13 08:33:57.508 tst (EURUSD,H1) v6 = 1

2020.09.13 08:33:57.508 tst (EURUSD,H1) v7 = 1.01

2020.09.13 08:33:57.508 tst (EURUSD,H1) v8 = qwerty

2020.09.13 08:33:57.508 tst (EURUSD,H1) v9 = 3.1415

2020.09.13 08:33:57.508 tst (EURUSD,H1) v10 = 777

2020.09.13 08:33:57.508 tst (EURUSD,H1) v11 = Wert_11

Ist es möglich, in einer Vorlagenfunktion vordefinierte Variablen zu verwenden, so dass man beim Aufruf nicht alles angeben muss? Eine einfache Zuweisung führt auch dann zu einem Fehler, wenn nicht alle Variablen angegeben sind.

#define  PRINT(VAL) Print(#VAL," = ",VAL)
template <typename T1, typename T2, typename T3, typename T4, typename T5,
          typename T6, typename T7, typename T8, typename T9, typename T10,typename T11>
void func(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
          T6 v6, T7 v7, T8 v8, T9 v9, T10 v10,T11 v11="")//не помогло, но ошибку не вызвало
{
   string s1 = (string) v1; PRINT(v1);
   string s2 = (string) v2; PRINT(v2);
   string s3 = (string) v3; PRINT(v3);
   string s4 = (string) v4; PRINT(v4);
   string s5 = (string) v5; PRINT(v5);
   string s6 = (string) v6; PRINT(v6);
   string s7 = (string) v7; PRINT(v7);
   string s8 = (string) v8; PRINT(v8);
   string s9 = (string) v9; PRINT(v9);
   string s10 = (string) v10; PRINT(v10);
   string s11 = (string) v11; PRINT(v11);
   
   printF( v1,  v2,  v3,  v4,  v5,  v6,  v7,  v8, v9,  v10, v11); // не получается, дает несоответствие типов.
   
}
//+------------------------------------------------------------------+
void OnStart()
{
   func(1, 1.01, "qwerty", 3.1415 f, 777, 1, 1.01, "qwerty", 3.1415 f, 777,"");// любой тип, но нужно указывать все 
                                                                             //переменные
   printF(1, 1.01, "qwerty", 3.1415 f, 777, 1, 1.01, "qwerty", 3.1415 f); //несоответствие типов, но можно не все 
                                                                        //переменные указывать
}
//+------------------------------------------------------------------+
void printF(string v1="", string v2="", string v3="", string v4="", string v5="",
          string v6="", string v7="", string v8="", string v9="", string v10="",string v11="")
{
Print( v1,  v2,  v3,  v4,  v5,  v6,  v7,  v8, v9,  v10, v11);
}
Документация по MQL5: Предопределенные переменные
Документация по MQL5: Предопределенные переменные
  • www.mql5.com
Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
 
Valeriy Yastremskiy:

Ist es möglich, vordefinierte Variablen in einer Vorlagenfunktion zu erstellen?

ist es nicht.

Ich kann nicht erklären, wie.... Vorlagen funktionieren es ist ungefähr so - bis eine solche Funktion aufgerufen wird, weiß der Compiler nichts von ihrer Existenz (oft gibt es sogar keine Compiler-Fehler, wenn es keinen Aufruf gibt)

dann rufen Sie eine solche Vorlagenfunktion auf und der Compiler füllt die benötigten Typen aus und prüft erst dann, ob alles richtig funktioniert

und dann rufen Sie die Vorlage erneut mit anderen Parametern auf - und der Compiler erstellt eine neue Funktion, d.h. eine weitere, d.h. als ob Sie 2 Funktionen schreiben, die dasselbe tun, aber mit unterschiedlichen Parametern


Puh, so funktioniert das ))))



UPD:

Sie können, aber wenn die Typen in der Vorlage übereinstimmen, hier ist ein Beispiel, funktioniert es richtig:

template<typename T1, typename T2>
int myfunc(T1 val1=0, T2 val2=0)
{
   return((int) (val1 + val2));
}

//+------------------------------------------------------------------+
void OnStart()
{
   int i1 = 2, i2 = 3;
   Print(myfunc(i1, i2));
   double d1 = 10.0, d2 = 30.0;
   Print(myfunc(d1, d2));
}
//+------------------------------------------------------------------+
 
Igor Makanu:

Nein, das können Sie nicht.

Ich kann nicht erklären, wie.... Vorlagen funktionieren es ist so - bis Sie eine solche Funktion aufrufen, weiß der Compiler nichts von ihrer Existenz (oft gibt es sogar keine Compilerfehler, wenn es keinen Aufruf gibt)

dann rufen Sie eine solche Vorlagenfunktion auf und der Compiler füllt die benötigten Typen aus und prüft erst dann, ob alles richtig funktioniert

und dann rufen Sie die Vorlage erneut mit anderen Parametern auf - und der Compiler erstellt eine neue Funktion, d.h. eine weitere, d.h. als ob Sie 2 Funktionen schreiben, die dasselbe tun, aber mit unterschiedlichen Parametern


Puh, es geht also ))))

Und wie erkenne ich den Typ des Eingabeparameters?

Wenn ich einen String-Typ an eine Vorlage übergebe und diesen weiterverarbeiten möchte.

Die Eingabeparameter können bis zu 64 sein, jeder kann einen beliebigen Typ haben, wie wird festgestellt, dass es eine Zeichenkette ist?

 
Vladimir Pastushak:

Wie kann ich den Typ des Eingabeparameters erkennen?

Wenn ich einen String-Typ an eine Vorlage übergebe und diesen weiterverarbeiten möchte.

Es kann bis zu 64 Eingabeparameter geben und jeder von ihnen kann einen beliebigen Typ haben, wie kann ich wissen, dass es ein String ist?

typename
Grund der Beschwerde: