Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1255

 
SanNneK:
Подскажите, какое условие, если график вниз пошел хоть на один пункт то все ордера закрывались?
Условие меньше или равно. В онИнит присваиваете  цену бид глобальной переменной. В онтик условие если бид меньше или равно глобальной переменной то закрывает отложкки. Иначе глобальная переменная равна бид.
 
добрый вечер. Подскажите, пожалуйста, код для экстренного закрытия всех сделок которые только открыты.
 
Будьте добры, подскажите, а как я могу закрыть все позиции, которые я хочу, одновременно??
 

Так вы можете закрыть все открытые сделки (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);
      }
   }
А если хотите выборочно, то необходимо описать условие выбора. 
 
О. 
 
Aleksei Stepanenko:

Так вы можете закрыть все открытые сделки (MQL4):

А если хотите выборочно, то необходимо описать условие выбора. 

Спасибо

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

А можно ли сделать в шаблонной функции предопределенные переменные, что бы можно не все указывать при вызове. Простое присваивание дает ошибку все равно, если не указать все переменные. 

#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.1415f, 777, 1, 1.01, "qwerty", 3.1415f, 777,"");// любой тип, но нужно указывать все 
                                                                             //переменные
   printF(1, 1.01, "qwerty", 3.1415f, 777, 1, 1.01, "qwerty", 3.1415f); //несоответствие типов, но можно не все 
                                                                        //переменные указывать
}
//+------------------------------------------------------------------+
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:

А можно ли сделать в шаблонной функции предопределенные переменные

не можно

я не смогу обьяснить как работают шаблоны.... ну примерно как - пока нет вызова такой функции, компилятор ничего не знает о существовании этого (часто даже ошибки компиляции отсутствуют если нет вызова)

затем Вы осуществляете вызов такой шаблонной функции и компилятор подставляет нужные типы и лишь затем проверяет, что все будет работать корректно

а затем Вы делает еще один вызов шаблона и с другими типами параметров - и компилятор создает новую функцию, т.е. еще одну, т.е по сути как если бы Вы писали 2 раза 2 функции делающее одно и тоже, но с разными типами параметров


фух, кактотак )))



UPD:

можно, но если типы в шаблоне совпадут, вот пример, это работает корректно:

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:

не можно

я не смогу обьяснить как работают шаблоны.... ну примерно как - пока нет вызова такой функции, компилятор ничего не знает о существовании этого (часто даже ошибки компиляции отсутствуют если нет вызова)

затем Вы осуществляете вызов такой шаблонной функции и компилятор подставляет нужные типы и лишь затем проверяет, что все будет работать корректно

а затем Вы делает еще один вызов шаблона и с другими типами параметров - и компилятор создает новую функцию, т.е. еще одну, т.е по сути как если бы Вы писали 2 раза 2 функции делающее одно и тоже, но с разными типами параметров


фух, кактотак )))

А как узнать тип входного параметра? 

Если я в шаблон передаю тип string и дальше хочу его обработать.

Входных параметров может быть до 64 в любом может попасться любой тип, как определить что это именно string ?

 
Vladimir Pastushak:

А как узнать тип входного параметра? 

Если я в шаблон передаю тип string и дальше хочу его обработать.

Входных параметров может быть до 64 в любом может попасться любой тип, как определить что это именно string ?

typename
Причина обращения: