mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 87

 
Fast528 :

말하지 마세요, 트릭을 찾았습니다. MK는 여전히 주요 기능 중 하나의 이름 차용을 수정하지 않았으며, 읽고 검색하는 데 많은 시간을 할애했습니다.

https://www.mql5.com/ru/docs/basis/function/functionoverload

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Обычно в названии функции стремятся отобразить ее основное назначение. Читабельные программы, как правило, содержат разнообразные и грамотно подобранные идентификаторы. Иногда различные функции используются для одних и тех же целей. Например, рассмотрим функцию, которая вычисляет среднее значение массива чисел двойной точности, и такую же...
 

감사합니다


Konstantin Gruzdev에게 특별한 감사

MetaTrader 5에서 다중 통화 모드 구현
Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
// Возвращает тип переменной. Exact == true - учитывает const-спецификатор
template < typename T>
string GetType( T&, const bool Exact = false )
{
   static const int Offset = StringFind ( __FUNCTION__ , "<" ) + 1 ;

   return (Exact ? StringSubstr ( __FUNCTION__ , Offset, StringLen ( __FUNCTION__ ) - Offset - 1 ) : typename (T));
}


애플리케이션

 #define PRINT(A) Print ( #A + " = " + ( string )(A))

void OnStart ()
{
   const int Var1 = 0 ;
   double Var2;
    
  PRINT(GetType(Var1));
  PRINT(GetType(Var2));  
  
  PRINT(GetType(Var1, true ));
  PRINT(GetType(Var2, true ));
}


결과

GetType(Var1) = int
GetType(Var2) = double

GetType(Var1, true ) = const int
GetType(Var2, true ) = double
 
fxsaber :

애플리케이션

결과

그리고 MQL을 사용하여 함수를 기술할 수 있다면 인수의 개수가 정의되지 않은

Print(arg1,arg.......) 또는 StringConcatenate (string_var,void argument1,void argument2, .......)


 
이고르 마카누 :

그리고 MQL을 사용하여 함수를 기술할 수 있다면 인수의 개수가 정의되지 않은

Print(arg1,arg.......) 또는 StringConcatenate(string_var,void argument1,void argument2, .......)

매크로를 기반으로 무언가를 생각해내는 것이 가능하지만 이것은 목발입니다.

템플릿 + 배열/구조 전달 - 많은 아이디어를 구현할 수 있습니다.

 
fxsaber :

매크로를 기반으로 무언가를 생각해내는 것이 가능하지만 이것은 목발입니다.

템플릿 + 배열/구조 전달 - 많은 아이디어를 구현할 수 있습니다.

감사합니다 그렇군요 원칙적으로는 필요없다고 생각했는데 님의 코드를 보고 이렇게 하면 어떨까 하는 생각이 들었습니다

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2017.02.27 18:40

// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin(  const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )

다음은 크로스 플랫폼 교수입니다. 구현.

Instant estimation of profit, margin level, drawdown on MetaTrader charts
Instant estimation of profit, margin level, drawdown on MetaTrader charts
  • 2018.07.16
  • www.mql5.com
I'm sure all of you use the crosshair tool on MetaTrader's charts. It's very useful to measure distance in bars or points between 2 spots. Yet I was always wondering, why it does not provide an option to show profit value, margin level, drawdown or gain percentage in addition to points. To remedy this problem I've developed a MQL program, which...
 
const가 멋진 이유!
 void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
   if (Trans.type = TRADE_TRANSACTION_REQUEST ) // 'type' - constant cannot be modified


"=="대신에 "="를 쓴다면 큰 코드에서 오류를 찾는 데 얼마나 걸릴지 상상해 보십시오. 여기서 const로 인해 컴파일러 자체가 즉시 모든 것을 보고합니다.

 

fxsaber :

"=="대신에 "="를 쓴다면 큰 코드에서 오류를 찾는 데 얼마나 걸릴지 상상해 보십시오. 여기서 const로 인해 컴파일러 자체가 즉시 모든 것을 보고합니다.

이러한 경우 상수로 비교를 시작할 수 있습니다. 훨씬 더 좋습니다.

 void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
   if ( TRADE_TRANSACTION_REQUEST = Trans.type)
 
더엑스퍼트 :

이러한 경우 상수로 비교를 시작할 수 있습니다. 훨씬 더 좋습니다.

예, 그러한 경우에 대한 예를 만들었습니다.

 if (Trans.type = Variable)
사유: