MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1255

 
SanNneK :
말해봐, 차트가 적어도 한 포인트 하락하면 모든 주문이 마감 된 상태가 무엇입니까?
조건보다 작거나 같음. onInit에서 입찰가를 전역 변수 에 할당합니다. 온틱 조건에서 입찰가가 전역 변수보다 작거나 같으면 지연이 닫힙니다. 그렇지 않으면 전역 변수가 입찰가와 같습니다.
 
좋은 저녁이에요. 열려있는 모든 거래의 비상 종료 코드를 알려주십시오.
 
친절하게, 어떻게 내가 원하는 모든 위치를 동시에 닫을 수 있습니까?
 

모든 미결 거래(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=쿼티

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=쿼티

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

템플릿 함수에서 미리 정의된 변수 를 만들 수 있습니까?

허용되지 않음

템플릿이 어떻게 작동하는지 설명할 수 없습니다.... 글쎄, 어떻게 - 그런 함수에 대한 호출이 있을 때까지 컴파일러는 이것의 존재에 대해 아무 것도 모릅니다(종종 없는 경우 컴파일 오류도 없습니다. 전화)

그런 다음 그러한 템플릿 함수를 호출하고 컴파일러는 필요한 유형을 대체하고 모든 것이 올바르게 작동하는지 확인합니다.

그런 다음 다른 유형의 매개변수를 사용하여 또 다른 템플릿 호출을 수행하고 컴파일러는 새 함수를 만듭니다. 하나 더, 즉, 동일한 작업을 수행하지만 매개변수 유형이 다른 2개의 함수를 2번 작성한 것처럼


휴, 그런 식으로)))



상향:

할 수 있지만 템플릿의 유형이 일치하는 경우 다음 예가 올바르게 작동합니다.

 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번 작성한 것처럼


휴, 그런 식으로)))

입력 매개변수의 유형을 어떻게 알 수 있습니까?

문자열 유형 을 템플릿에 전달한 다음 처리하고 싶습니다.

최대 64개의 입력 매개변수가 있을 수 있으며 모든 유형이 올 수 있습니다. 정확히 string이 무엇인지 확인하는 방법은 무엇입니까?

 
Vladimir Pastushak :

입력 매개변수의 유형을 어떻게 알 수 있습니까?

문자열 유형 을 템플릿에 전달한 다음 처리하고 싶습니다.

최대 64개의 입력 매개변수가 있을 수 있으며 모든 유형이 올 수 있습니다. 정확히 string이 무엇인지 확인하는 방법은 무엇입니까?

유형 이름