Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1255

 
SanNneK:
Puoi dirmi qual è la condizione per cui, se il grafico è sceso anche di un solo punto, allora tutti gli ordini sono stati chiusi?
La condizione è minore o uguale a. In ontik si assegna il prezzo dell'offerta a una variabile globale. Se l'offerta è inferiore o uguale alla variabile globale, allora chiude gli ordini in sospeso. Altrimenti, la variabile globale è uguale all'offerta.
 
Buona sera. Potreste darmi il codice per la chiusura d'emergenza di tutti gli scambi che sono stati appena aperti?
 
Potete dirmi come posso chiudere tutte le posizioni che voglio allo stesso tempo?
 

In questo modo si possono chiudere tutti i trade aperti (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);
      }
   }
E se volete selettivamente, dovete descrivere la condizione di selezione.
 
О.
 
Aleksei Stepanenko:

In questo modo si possono chiudere tutti i trade aperti (MQL4):

E se volete selettivamente, dovete descrivere la condizione di selezione.

Grazie

 
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 = Valore_11

È possibile fare delle variabili predefinite in una funzione template in modo che non sia possibile specificare tutto quando la si chiama? Un'assegnazione semplice darà comunque un errore se non sono specificate tutte le variabili.

#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:

È possibile creare variabili predefinite in una funzione template

No, non può.

Non riesco a spiegare come.... modelli funzionano è più o meno come - finché una tale funzione non viene chiamata, il compilatore non sa nulla della sua esistenza (spesso, non ci sono nemmeno errori di compilazione se non c'è una chiamata)

poi si chiama una tale funzione template e il compilatore riempie i tipi necessari e solo allora controlla che tutto funzioni correttamente

e poi si fa un'altra chiamata al modello con diversi tipi di parametri - e il compilatore crea una nuova funzione, cioè un'altra, cioè come se si scrivessero 2 funzioni, che fanno la stessa cosa, ma con diversi tipi di parametri


whew, ecco come funziona ))))



UPD:

è possibile, ma se i tipi nel template corrispondono, ecco un esempio, funziona correttamente:

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:

No, non puoi.

Non riesco a spiegare come.... modelli funzionano è così - finché non si chiama una tale funzione, il compilatore non sa nulla della sua esistenza (spesso, non ci sono nemmeno errori di compilazione se non c'è una chiamata)

poi si chiama una tale funzione template e il compilatore riempie i tipi necessari e solo allora controlla che tutto funzioni correttamente

e poi si fa un'altra chiamata al modello con diversi tipi di parametri - e il compilatore crea una nuova funzione, cioè una in più, cioè come se si scrivessero 2 funzioni, che fanno la stessa cosa, ma con diversi tipi di parametri


Phew, così va ))))

E come faccio a sapere il tipo di parametro di ingresso?

Se passo un tipo di stringa a un template e voglio elaborarlo ulteriormente.

I parametri di input possono essere fino a 64, ognuno può avere qualsiasi tipo, come determinare che è una stringa?

 
Vladimir Pastushak:

Come faccio a sapere il tipo di parametro di ingresso?

Se passo un tipo di stringa a un template e voglio elaborarlo ulteriormente.

Ci possono essere fino a 64 parametri di input e ognuno di essi può avere qualsiasi tipo, come posso sapere che è una stringa?

typename