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

 
Sergey Savinkin :

공장. ))

그리고 똑똑한 포럼 엔진은 ... 코드 삽입에 대한 전체 지침이있는 위치에 대한 링크를 직접 제공했습니다.

 
Alexey Viktorov :

그리고 정말... 더 나은 것을 위해 노력하는 이유는...

이 함수에 얼마나 많은 추가 코드가 작성되었는지, 그리고 이러한 자체 작성 함수를 호출하여 작성하는 코드의 양을 계산하십시오.

나는 거래를 더 잘하기 위해 노력하고 이 목표를 향해 나아가기 위해서는 코딩이 필요합니다.

그 차이가 연말에 0.1초면 귀찮게 할 의미가 있나요?

함수 없이 이 코드를 만들고 작업 속도를 높이는 방법을 보여줄 수 있습니까?

 
Aleksey Vyazmikin :

나는 거래를 더 잘하기 위해 노력하고 이 목표를 향해 나아가기 위해서는 코딩이 필요합니다.

그 차이가 연말에 0.1초면 귀찮게 할 의미가 있나요?

함수 없이 이 코드를 만들고 작업 속도를 높이는 방법을 보여줄 수 있습니까?

그래서 당신은 모든 것을 썼습니다. 이 모든 것이 mql4에 래핑됩니다. 그런 래퍼없이 할 수 있습니까?

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

초보자의 질문 MQL5 MT5 MetaTrader 5

Aleksey Vyazmikin , 2018.05.24 12:30

모든 것이 조금씩 진행되고 있지만 처음에는 여기에서 유사한 기능의 주요 배열을 가져왔습니다.

 ENUM_TIMEFRAMES TFMigrate( int tf)
  {
   switch (tf)
     {
       case 0 : return ( PERIOD_CURRENT );
       case 1 : return ( PERIOD_M1 );
       case 5 : return ( PERIOD_M5 );
       case 15 : return ( PERIOD_M15 );
       case 30 : return ( PERIOD_M30 );
       case 60 : return ( PERIOD_H1 );
       case 240 : return ( PERIOD_H4 );
       case 1440 : return ( PERIOD_D1 );
       case 10080 : return ( PERIOD_W1 );
       case 43200 : return ( PERIOD_MN1 );

       case 2 : return ( PERIOD_M2 );
       case 3 : return ( PERIOD_M3 );
       case 4 : return ( PERIOD_M4 );
       case 6 : return ( PERIOD_M6 );
       case 10 : return ( PERIOD_M10 );
       case 12 : return ( PERIOD_M12 );
       case 16385 : return ( PERIOD_H1 );
       case 16386 : return ( PERIOD_H2 );
       case 16387 : return ( PERIOD_H3 );
       case 16388 : return ( PERIOD_H4 );
       case 16390 : return ( PERIOD_H6 );
       case 16392 : return ( PERIOD_H8 );
       case 16396 : return ( PERIOD_H12 );
       case 16408 : return ( PERIOD_D1 );
       case 32769 : return ( PERIOD_W1 );
       case 49153 : return ( PERIOD_MN1 );
       default : return ( PERIOD_CURRENT );
     }
  }

그냥 조용한 공포 ...이 모든 것이 ???

일반적으로 여기에는 코스가 없습니다. 죄송합니다. 더 이상 비판하지 마십시오.

 
Alexey Viktorov :

그래서 당신은 모든 것을 썼습니다. 이 모든 것이 mql4에 래핑됩니다. 그런 래퍼없이 할 수 있습니까?


그냥 조용한 공포 ...이 모든 것이 ???

일반적으로 여기에는 코스가 없습니다. 죄송합니다. 더 이상 비판하지 마십시오.

글쎄, 초보자에게 더 나은 방법을 보여주고 싶지 않기 때문에 ...

MT4에서 기간은 종종 분 단위의 숫자로 표시되는데, 이는 MT5에서 논리적이지 않지만 코드를 이식하기 쉽게 만듭니다.

 
Aleksey Vyazmikin :

글쎄, 초보자에게 더 나은 방법을 보여주고 싶지 않기 때문에 ...

MT4에서 기간은 종종 분 단위의 숫자로 표시되는데, 이는 MT5에서 논리적이지 않지만 코드를 이식하기 쉽게 만듭니다.

이것을 가지고 분 단위로 변환 한 다음 다시 반환합니까 ???

16408은 PERIOD_D1보다 명확하거나 49153은 PERIOD_MN1보다 명확합니다.

Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql4-программа. Перечисление ENUM_TIMEFRAMES содержит значения стандартных таймфреймов, онлайновые графики финансовых...
 

안녕하세요, EA 에서는 차트의 가장 높은 기간의 현재 ATR 값을 알고 싶습니다. 정수 값입니다.

 #include <Trade\SymbolInfo.mqh> 
CSymbolInfo    m_symbol;
//===
input int              ATRper= 7 ;         //ATR Period
input ENUM_TIMEFRAMES ATRtimeframe= PERIOD_CURRENT ; //«Time_Frame_ ATR»
int             handle_iCustom;
double atr_tp;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   if (!m_symbol.Name( Symbol ())) // sets symbol name
       return ( INIT_FAILED );
   handle_iCustom= iATR (m_symbol.Name(),ATRtimeframe,ATRper);
//--- if the handle is not created 
   if (handle_iCustom== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code 
       PrintFormat ( "Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d" ,
                  m_symbol.Name(),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early 
       return ( INIT_FAILED );
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   int Bar_=0;
   atr_tp= iCustomGet(handle_iCustom  , 0 ,Bar_);
   atr_tp= NormalizeDouble (atr_tp, Digits ())/ _Point ;
   atr_tp=( int )atr_tp;
   Comment ( "atr_" ,atr_tp);
  }
//+------------------------------------------------------------------+
double iCustomGet( int handle, const int buffer, const int index)
  {
   double Custom[ 1 ];
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if ( CopyBuffer (handle,buffer,index, 1 ,Custom)< 0 )
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the iCustom indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( 0.0 );
     }
   return (Custom[ 0 ]);
  }
///

실수는 어디에 있습니까?

 
lil_lil :

안녕하세요, EA 에서는 차트의 가장 높은 기간의 현재 ATR 값을 알고 싶습니다. 정수 값입니다.

실수는 어디에 있습니까?

그리고 그는 무엇을 씁니다? 그는 무엇을 맹세합니까?

 
Sergey Savinkin :

그리고 그는 무엇을 씁니까? 그는 무엇을 맹세합니까?

욕이 아니라 거짓말. 오래된 것의 표시기는 "8"을 표시하고 조언자는 주석에 "6"을 씁니다.

 
lil_lil :

욕이 아니라 거짓말. 시니어의 표시기는 "8"을 표시하고 조언자는 주석에 "6"을 씁니다.

나는 5분의 기간에 당신의 고문을 시작했고 ATP 기간은 14이고 ATP 시간 프레임은 1시간입니다. 주석과 차트 모두에서 모든 것이 정확하게 표시됩니다.

 
lil_lil :

예, 그는 현재 ATRtimeframe=PERIOD_CURRENT로 나에게 거짓말을 하고 있습니다.


여기의 요점은 코드에 전혀 없는 것 같습니다. 여기 내 PERIOD_CURRENT 가 있습니다.


사유: