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

 
Igor Makanu :

복사는 도움이 되지 않습니다. 읽어야 합니다. 여기 기사가 있습니다. https://www.mql5.com/ru/articles/1456

그것은 순전히 시각적으로 그리고 유익하게 사용될 것입니다.

 
Carcass77 :

그것은 순전히 시각적으로 그리고 유익하게 사용될 것입니다.

 //+------------------------------------------------------------------+
//|                                                    atrValues.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern int atrPeriod= 10 ;
extern int infoCorner= 0 ;
extern int shift= 0 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   double atr1= iATR ( Symbol (), 1 ,atrPeriod,shift);
   double atr5= iATR ( Symbol (), 5 ,atrPeriod,shift);
   double atr15= iATR ( Symbol (), 15 ,atrPeriod,shift);
   double atr30= iATR ( Symbol (), 30 ,atrPeriod,shift);
   double atr60= iATR ( Symbol (), 60 ,atrPeriod,shift);
   double atr240= iATR ( Symbol (), 240 ,atrPeriod,shift);
   double atr1440= iATR ( Symbol (), 1440 ,atrPeriod,shift);
   double atr10080= iATR ( Symbol (), 10080 ,atrPeriod,shift);
   double atr43200= iATR ( Symbol (), 43200 ,atrPeriod,shift);
//---
   ObjectCreate ( "ObjName1" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName1" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M1=" + DoubleToStr (atr1, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName1" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName1" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName1" , OBJPROP_YDISTANCE , 25 );
//---
   ObjectCreate ( "ObjName2" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName2" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M5=" + DoubleToStr (atr5, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName2" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName2" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName2" , OBJPROP_YDISTANCE , 40 );
//---
   ObjectCreate ( "ObjName3" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName3" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M15=" + DoubleToStr (atr15, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName3" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName3" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName3" , OBJPROP_YDISTANCE , 55 );
//---
   ObjectCreate ( "ObjName4" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName4" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M30=" + DoubleToStr (atr30, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName4" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName4" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName4" , OBJPROP_YDISTANCE , 70 );
//---
   ObjectCreate ( "ObjName5" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName5" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M60=" + DoubleToStr (atr60, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName5" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName5" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName5" , OBJPROP_YDISTANCE , 85 );
//---
   ObjectCreate ( "ObjName6" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName6" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M240=" + DoubleToStr (atr240, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName6" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName6" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName6" , OBJPROP_YDISTANCE , 100 );
//---
   ObjectCreate ( "ObjName7" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName7" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M1440=" + DoubleToStr (atr1440, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName7" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName7" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName7" , OBJPROP_YDISTANCE , 115 );
//---
   ObjectCreate ( "ObjName8" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName8" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M10080=" + DoubleToStr (atr10080, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName8" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName8" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName8" , OBJPROP_YDISTANCE , 130 );
//---
   ObjectCreate ( "ObjName9" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText ( "ObjName9" , "ATR" + IntegerToString (atrPeriod, 0 )+ ": M43200=" + DoubleToStr (atr43200, 5 ), 8 , "Verdana" ,Red);
   ObjectSet ( "ObjName9" , OBJPROP_CORNER ,infoCorner);
   ObjectSet ( "ObjName9" , OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "ObjName9" , OBJPROP_YDISTANCE , 145 );
//--- 
  }
//+------------------------------------------------------------------+
 
Alekseu Fedotov :

많은 오류가 발생했습니다)

 
Carcass77 :

많은 오류가 발생했습니다)

그것은 나를 위해 잘 컴파일됩니다.

 
Alekseu Fedotov :

그것은 나를 위해 잘 컴파일됩니다.

내 실수를 찾았습니다. 정말 감사합니다!

 
명시적이지 않은 유형의 객체가 있는 클래스 템플릿 내에서 T1 객체의 메소드를 어떻게 호출할 수 있습니까(즉, 객체 유형이 명시적으로 설정되지 않고 template<typename T1>을 통해 설정됨)? 유형 T1의 모든 개체에는 동일한 메서드가 있습니다.
 
Igor Makanu :

분명히 손에 터미널이 없지만 빨간색으로 보입니다. 메타 편집기의 오류 로그 만 강조 표시되고 터미널과 테스터에서 아이콘 만 빨간색으로 표시되며 텍스트 자체가 "붉어지지"않습니다.

글쎄, 그는 다음과 같이 씁니다.
(검은색으로 강조 표시)

INIT_PARAMETERS_INCORRECT

이는 프로그래머가 잘못된 입력 매개변수 세트를 나타내기 위한 것이며 , 일반 최적화 테이블에서 이러한 리턴 코드가 있는 결과 라인은 빨간색으로 강조 표시됩니다.

이 전문가 매개변수 집합에 대한 테스트는 수행되지 않습니다.


다음은 일반 최적화 테이블입니다.




빨간색은 아무 것도 강조 표시하지 않습니다.

그런 줄에서 최적화 결과는 0과 같습니다.


설명서가 잘못된 건가요 아니면 제가 잘못하고 있는 건가요?

 
어떻게든 키를 재할당하기 위해 입력에 키를 표시할 수 있습니까?
 
Roman Sharanov :
어떻게든 키를 재할당하기 위해 입력에 키를 표시할 수 있습니까?

할 수 있다.

 #property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_chart_window
//--- input parameters

input string       key = "A" ;

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {

   if (id== CHARTEVENT_KEYDOWN )
     {
       if (lparam==( StringGetChar (key, 0 )))
        {
         Alert ( "нажатая клавиша = " ,key);
         Alert ( "код нажатой клавиши = " , StringGetChar (key, 0 ));
        }
     }
  }
//+------------------------------------------------------------------+
 
multiplicator :

글쎄, 그는 다음과 같이 씁니다.
(검은색으로 강조 표시)

INIT_PARAMETERS_INCORRECT

이는 프로그래머가 잘못된 입력 매개변수 세트를 나타내기 위한 것이며 , 일반 최적화 테이블에서 이러한 리턴 코드가 있는 결과 라인은 빨간색으로 강조 표시됩니다.

이 전문가 매개변수 집합에 대한 테스트는 수행되지 않습니다.


다음은 일반 최적화 테이블입니다.




빨간색은 아무 것도 강조 표시하지 않습니다.

그런 줄에서 최적화 결과는 0과 같습니다.


설명서가 잘못된 건가요 아니면 제가 잘못하고 있는 건가요?

이제 이와 관련하여 아무 것도 강조 표시되지 않고 설명서와 모순된다는 것이 분명합니다.