초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 964

 
vladzeit :

예를 들어 주셔서 감사합니다.

여전히 지정하십시오... 올바르게 이해했는지 여부.

이것으로 =( datetime ) OrderGetInteger. 우리는 OrderGetInteger에 명시적 날짜/시간 유형을 사용하도록 지시합니다. ?  

이 규칙은 명시적 유형이 없거나 할당되는 변수의 유형과 일치하지 않는 모든 함수에 적용됩니까? 아니면 이것은 단지 특별한 경우입니까?

이것이 규칙인지 아니면 특별한 경우로 기억해야 하는지 알고 싶습니다.

이것은 특별한 경우가 아닙니다. 한 유형의 변수에 다른 유형의 값을 쓰면 컴파일러에서 이에 대해 경고합니다. 그런 다음 어떤 변수가 어떤 데이터를 받아들일지 결정하는 것은 사용자의 몫입니다.

귀하의 경우 명시적 datetime 값의 유형이 긴 함수에서 반환할 때 물론 안전하며 함수에서 받는 값의 유형을 명시적으로 지정해야 합니다.

그러나 int 변수에 double 값을 허용하는 경우 여기에서 이러한 할당 중에 데이터 손실이 있는지 여부를 이해해야 합니다. 반환된 값이 int에 맞는다는 것을 확실히 알고 있다면 int를 명시적으로 지정하고, 모르는 경우에는 이중 변수로 받아들이십시오.

 
Artyom Trishkin :

이것은 특별한 경우가 아닙니다. 한 유형의 변수에 다른 유형의 값을 쓰면 컴파일러에서 이에 대해 경고합니다. 그런 다음 어떤 변수가 어떤 데이터를 받아들일지 결정하는 것은 사용자의 몫입니다.

귀하의 경우 명시적 datetime 값의 유형이 긴 함수에서 반환할 때 물론 안전하며 함수에서 받는 값의 유형을 명시적으로 지정해야 합니다.

그러나 int 변수에 double 값을 허용하는 경우 여기에서 이러한 할당 중에 데이터 손실이 있는지 여부를 이해해야 합니다. 반환된 값이 int에 맞는다는 것을 확실히 알고 있다면 int를 명시적으로 지정하고, 모르는 경우에는 이중 변수로 받아들이십시오.

자세한 답변 감사합니다. 알았다.

 

모두에게 좋은 창의성)))


MT4는 마스터했지만 MT5는 .... 나는 운전을 하지 않습니다(((예시가 거의 없고 무엇이 필요한지 설명하지 않는 예가 있습니다.

MT4 코드에서 발췌한 내용이 MT5에서 어떻게 보이는지 알려주거나 유사한 사례가 있는 지표에 대한 링크를 제공할 수 있습니까?


하나.

 if ( Period ()<= PERIOD_H4 && TimeHour ( Time [h])== 0 && TimeMinute ( Time [h])== 0 )


2.

 while (A< 1 )
  {
   ObjectDelete ( "MB" );
   OP= iOpen ( NULL ,Timeframe,br);
   CL= iClose ( NULL ,Timeframe,br);
 if (OP>CL)
   bear=(OP-CL)/ _Point ;
 if (SizeCandles*FactorCandleы <= bear)
   A= 2 ;
 if (br> iBars ( NULL ,Timeframe))
  {
   Lab( "MB" , " No Bear candle" , 4 , 510 , 1 , clrWhite );
   break ;
  }
   br++;
  }


3. iMa 핸들을 사용하여 요소를 비교하는 방법을 이해하지 못합니다... 구조에 대해 알고 있습니다!!! 해봤는데 MT5는 MT4만큼 비쥬얼이 아니라...

   
 for ( int i=limit; i> 0 && ! IsStopped (); i--)
   {
   ma1= iMA ( NULL , Period (),Ma1, 0 ,MAMethod1,MAPrice1,i);
   ma2= iMA ( NULL , Period (),Ma2, 0 ,MAMethod2,MAPrice2,i);
   ma3= iMA ( NULL , Period (),Ma3, 0 ,MAMethod3,MAPrice3,i);
   ma4= iMA ( NULL , Period (),Ma4, 0 ,MAMethod4,MAPrice4,i);
   MA= iMA ( NULL , Period (),MAPeriod, 0 ,MAMethod,MAPrice,i);
//----
 if (filtercase== true && xPer== Period ())
  {
//--- High signal
 if ( Open [i]< Close [i] && MA> Open [i] && MA< Close [i] && ma1>ma2 && ma1<ma3 && MA<ma4)  
   ExtLineBuffer1[i]= High [i]+shiftmap* _Point ;
 if (ShowPeriod== false && xPeriod== Period ())
   ExtLineBuffer1[i]= 0.0 ;
//--- Low signal
 if ( Open [i]> Close [i] && MA< Open [i] && MA> Close [i] && ma1<ma2 && ma1>ma3 && MA>ma4)  
   ExtLineBuffer2[i]= Low [i]-shiftmap* _Point ;
 if (ShowPeriod== false && xPeriod== Period ())
   ExtLineBuffer2[i]= 0.0 ;
  } 
 

나는 이미 MT5에서 프로그래밍의 일반적인 차이점을 이해했습니다! 하지만 지금까지는 프로그래밍할 수 없습니다(큐브는 합산되지 않음)))))

MT5의 이러한 부품과 모듈을 내 머리 속에 접는 것이 중요합니다.... MT4에서는 논리를 빠르게 이해하고 MT5는 "주사위"만 ....

팁 감사합니다)))

 
내 로봇에서 로트당 고정 로트를 % 단위로 리메이크하십시오. 개인의 코드.
 
Sprut112 :
내 로봇에서 로트당 고정 로트를 % 단위로 리메이크하십시오. 개인의 코드.

프리랜서 .

 
kopeyka2 :

모두에게 좋은 창의성)))


MT4는 마스터했지만 MT5는 .... 나는 운전을 하지 않습니다(((예시가 거의 없고 무엇이 필요한지 설명하지 않는 예가 있습니다.

MT4 코드에서 발췌한 내용이 MT5에서 어떻게 보이는지 알려주거나 유사한 사례가 있는 지표에 대한 링크를 제공할 수 있습니까?


하나.


2.


3. iMa 핸들을 사용하여 요소를 비교하는 방법을 이해하지 못합니다... 구조에 대해 알고 있습니다!!! 해봤는데 MT5는 MT4만큼 비쥬얼이 아니라...

나는 이미 MT5에서 프로그래밍의 일반적인 차이점을 이해했습니다! 하지만 지금까지는 프로그래밍할 수 없습니다(큐브는 합산되지 않음)))))

MT5의 이러한 부품과 모듈을 내 머리에 접는 것이 중요합니다.... MT4에서는 논리를 빠르게 이해하고 MT5는 "주사위"만 ....

팁 감사합니다)))

시작하려면 설명서를 주의 깊게 읽으십시오. " 시계열 및 표시기에 대한 액세스 " 섹션

시간을 얻는 방법, 구조에 "넣는" 방법, 거기에서 시간과 분을 별도로 얻는 방법이 명확해져야 합니다.

핸들로 표시기 값을 가져오기 위한 CopyBuffer도 있습니다.

글쎄요, 질문이 있으시면...


 
kopeyka2 :

모두에게 좋은 창의성)))


MT4는 마스터했지만 MT5는 .... 나는 운전을 하지 않습니다(((예시가 거의 없고 무엇이 필요한지 설명하지 않는 예가 있습니다.

MT4 코드에서 발췌한 내용이 MT5에서 어떻게 보이는지 알려주거나 유사한 사례가 있는 지표에 대한 링크를 제공할 수 있습니까?


하나.


2.


3. iMa 핸들을 사용하여 요소를 비교하는 방법을 이해하지 못합니다... 구조에 대해 알고 있습니다!!! 해봤는데 MT5는 MT4만큼 비쥬얼이 아니라...

나는 이미 MT5에서 프로그래밍의 일반적인 차이점을 이해했습니다! 하지만 지금까지는 프로그래밍할 수 없습니다(큐브는 합산되지 않음)))))

MT5의 이러한 부품과 모듈을 내 머리 속에 접는 것이 중요합니다.... MT4에서는 논리를 빠르게 이해하고 MT5는 "주사위"만 ....

팁 감사합니다)))

동일한 시간대의 여러 시계열을 비교해야 하는 경우 MqlRates ->와 같은 배열로 작업하고 CopyRates 를 사용하여 이 배열을 채웁니다.

시간은 구조에 편리하게 저장됩니다.   MqlDateTime -> datetime 에서 구조로 시간을 변환합니다.   MqlDateTimeTimeToStruct 를 사용합니다.

이제 예제 1은 다음과 같습니다.

 //+------------------------------------------------------------------+
//|                                                      Test_en.mq5 |
//+------------------------------------------------------------------+
#property script_show_inputs
//--- input parameters
int InpBarTime= 3 ; // Bar where we compare the time
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   MqlRates rates[];
   ArraySetAsSeries (rates, true );

   int start_pos  = 0 ;                           // start position 
   int count=(InpBarTime< 10 )? 10 :InpBarTime+ 1 ;   // data count to copy 

   int result= CopyRates ( Symbol (), Period (),start_pos,count,rates);
   if (result!=count)
     {
       Print ( "Ordered: " , IntegerToString (count), ", received " , IntegerToString (result));
     }

//--- example 1
// if(Period()<=PERIOD_H4 && TimeHour(Time[h])==0 && TimeMinute(Time[h])==0)
   MqlDateTime SDateTime;
   TimeToStruct (rates[InpBarTime].time,SDateTime); // Converts a value of datetime type into a structure variable MqlDateTime
   if ( Period ()<= PERIOD_H4 && SDateTime.hour== 0 && SDateTime.min== 0 )
     {

     }
  }
//+------------------------------------------------------------------+
파일:
Test_en.mq5  3 kb
 
프롬프트하십시오. 어떤 규칙이 있습니까?
mql5에서는 동일한 작업을 여러 가지 방법으로 해결할 수 있습니다.
한 코드에서 클래스의 인스턴스를 참조하는 경우(예: CSymbolInfo). m_symbol.Ask().. 등등. 더 나아가.
동일한 코드에서 클래스를 참조하지 않고 Ask에 값을 할당합니다. 예를 들어 이렇게.
이중 Ask=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK ),_Digits);

질문: 이것이 오류로 이어지거나 하나의 코드 또는 하나의 기능 내에서 정상입니까?

 
kopeyka2 :

모두에게 좋은 창의성)))


MT4는 마스터했지만 MT5는 .... 나는 운전을 하지 않습니다(((예시가 거의 없고 무엇이 필요한지 설명하지 않는 예가 있습니다.

MT4 코드에서 발췌한 내용이 MT5에서 어떻게 보이는지 알려주거나 유사한 사례가 있는 지표에 대한 링크를 제공할 수 있습니까?


하나.


2.


3. iMa 핸들을 사용하여 요소를 비교하는 방법을 이해하지 못합니다... 구조에 대해 알고 있습니다!!! 해봤는데 MT5는 MT4만큼 비쥬얼이 아니라...

나는 이미 MT5에서 프로그래밍의 일반적인 차이점을 이해했습니다! 하지만 지금까지는 프로그래밍할 수 없습니다(큐브는 합산되지 않음)))))

MT5의 이러한 부품과 모듈을 내 머리 속에 접는 것이 중요합니다.... MT4에서는 논리를 빠르게 이해하고 MT5는 "주사위"만 ....

팁 감사합니다)))

표시기 작업 - MA Force 코드의 예

1단계: 전역 프로그램 수준에서 표시기 핸들을 저장할 handle_iMA 변수를 선언합니다.

 int     handle_iMA;                           // variable for storing the handle of the iMA indicator

2단계: OnInit()에서 표시기를 생성하고 생성된 표시기의 핸들을 handle_iMA 변수에 반환합니다.

 //--- create handle of the indicator iMA
   handle_iMA= iMA (m_symbol.Name(),Inp_MA_period,Inp_MA_ma_period,Inp_MA_ma_shift,
                  Inp_MA_ma_method,Inp_MA_applied_price);
//--- if the handle is not created 
   if (handle_iMA== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code 
       PrintFormat ( "Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d" ,
                  m_symbol.Name(),
                   EnumToString (Inp_MA_period),
                   GetLastError ());
       //--- the indicator is stopped early 
       return ( INIT_FAILED );
     }

3단계: OnTick()에서 요청을 합니다. 표시기에서 배열 ma[] 로 일정량의 데이터( count )를 복사합니다.

    double ma[] ,force[];
   ArraySetAsSeries (ma, true );
   ArraySetAsSeries (force, true );
   int start_pos= 0 ,count=InpTrendBars+ 3 ;
   if (!iGetArray(handle_iMA, 0 ,start_pos,count,ma) || 
      !iGetArray(handle_iForce, 0 ,start_pos,count,force))
     {
      PrevBars= 0 ;
       return ;
     }

4단계: 지표 데이터 배열로 작업하고 해당 요소를 비교합니다.

   bool trend_up=(ma[ 1 ]>ma[ 2 ]);
   bool trend_down=(ma[ 1 ]<ma[ 2 ]);
 
vladzeit :
프롬프트하십시오. 어떤 규칙이 있습니까?
mql5에서는 동일한 작업을 여러 가지 방법으로 해결할 수 있습니다.
한 코드에서 클래스의 인스턴스를 참조하는 경우(예: CSymbolInfo). m_symbol.Ask().. 등등. 더 나아가.
동일한 코드에서 클래스를 참조하지 않고 Ask에 값을 할당합니다. 예를 들어 이렇게.
이중 Ask=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK ),_Digits);

질문: 이것이 오류로 이어지거나 하나의 코드 또는 하나의 기능 내에서 정상입니까?

트레이드 클래스 CSymbolInfo 또는 SymbolInfoXXXX 유형의 시스템 기능과 같은 한 가지 접근 방식을 혼동하지 않고 사용하는 것이 좋습니다.

사유: