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

 

나는 mql4에서 가장 간단한 지표를 작성했고 mql5로 번역하고 싶었고 지금 일주일 동안 시도했지만 작동하지 않습니다! 벌써 신경이 쓰이네요, 어머니 mql5, 어떻게 mql5의 34행 중 가장 단순한 칠면조가 이미 88을 썼습니까!

다음은 mql4 코드입니다.

 #property indicator_separate_window
#property indicator_level1 0
#property indicator_buffers 3

extern int kol_vo_bar = 15 ;
extern string Symbol_1 = "GBPJPY" ;
extern string Symbol_2 = "EURJPY" ;

double SpreadA[];
double SpreadB[];
double Spread[];

int init()
{
   SetIndexBuffer ( 0 ,SpreadA);
   SetIndexBuffer ( 1 ,SpreadB);
   SetIndexBuffer ( 2 ,Spread);
   SetIndexStyle( 0 , DRAW_SECTION ,EMPTY, 2 ,Red);
   SetIndexStyle( 1 , DRAW_SECTION ,EMPTY, 2 ,Blue);
   SetIndexStyle( 2 , DRAW_HISTOGRAM ,EMPTY, 1 ,Gray);
   return ( 0 );
}

int start()
{
   int k;
   for (k = 0 ; k < iBars(Symbol_1, 0 ); k++)
   {
            SpreadA[k] = iClose(Symbol_1, 0 ,k)* 100 /iOpen(Symbol_1, 0 ,k+kol_vo_bar)- 100 ;
            SpreadB[k] = iClose(Symbol_2, 0 ,k)* 100 /iOpen(Symbol_2, 0 ,k+kol_vo_bar)- 100 ;                  
            Spread[k] = SpreadA[k]-SpreadB[k];
   }
   return ( 0 );
}

그리고 여기 mql5에서:

 #property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots    3
//--- plot Label1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_SECTION
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_width1   2
//--- plot Label2
#property indicator_label2   "Label2"
#property indicator_type2   DRAW_SECTION
#property indicator_color2   clrBlue
#property indicator_style2   STYLE_SOLID
#property indicator_width2   2

#property indicator_label3   "Label3"
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_color3   clrGray
#property indicator_style3   STYLE_SOLID
#property indicator_width3   1

//--- input parameters
input int kol_vo_bar= 96 ;
input string    Symbol_1= "GBPJPY" ;
input string    Symbol_2= "EURJPY" ;
//--- indicator buffers
double          Label1Buffer[];
double          Label2Buffer[];
double          Label3Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,Label2Buffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,Label3Buffer, INDICATOR_DATA );
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   for ( int k= 0 ; k< Bars ( _Symbol , _Period ); k++)
   {
            Label1Buffer[k] = iClose(Symbol_1, PERIOD_CURRENT ,k)* 100 /iOpen(Symbol_1, PERIOD_CURRENT ,k)- 100 ;
            Label2Buffer[k] = iClose(Symbol_2, PERIOD_CURRENT ,k)* 100 /iOpen(Symbol_2, PERIOD_CURRENT ,k)- 100 ;                  
            Label3Buffer[k] = Label1Buffer[k]-Label2Buffer[k];
   }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
double iClose( string symbol, ENUM_TIMEFRAMES tf, int index)
{
   if (index < 0 ) return (- 1 );
   double Arr[];
   if ( CopyClose (symbol,tf,index, 1 ,Arr)> 0 )
         return (Arr[ 0 ]);
   else return (- 1 );
}
double iOpen( string symbol, ENUM_TIMEFRAMES tf, int index)
{
   if (index < 0 ) return (- 1 );
   double Arr[];
   if ( CopyOpen (symbol,tf,index+kol_vo_bar, 1 ,Arr)> 0 )
         return (Arr[ 0 ]);
   else return (- 1 );
}

MT5 에서 표시기 a의 라인이 올바르게 표시되지 않습니다.

내가 뭘 잘못 썼어?

좋은 사람들이여, 도와주세요. 불쌍한 사람을 불쌍히 여겨주세요. 솔직히 말해서 이미 한계점에 도달했습니다. 여기에서 맹세할 수 없다는 것은 유감입니다!

중재자님, 저를 차단하지 마세요. 문제가 있으면 먼저 한 번 경고해 주세요.

 

각 눈금 에서 사용 가능한 모든 막대를 다시 계산합니다. 이는 최선의 선택이 아니며 브레이크가 끔찍합니다.

 
zlodei :


MT5 에서 표시기 a의 라인이 올바르게 표시되지 않습니다.

내가 뭘 잘못 썼어?

PlotIndexXXX 작업은 어디에 있습니까?

게으름으로 인해 문서와 예제를 읽을 수 없었습니까?



중재자님, 저를 차단하지 마세요. 문제가 있으면 먼저 한 번 경고해 주세요.

코드베이스로 이동하여 읽으십시오. 수백 가지 예.
 
sergeev :

PlotIndexXXX 작업은 어디에 있습니까?

게으름으로 인해 문서와 예제를 읽을 수 없었습니까?


코드베이스로 이동하여 읽으십시오. 수백 가지 예.

왜 코드 시작 부분에 이것이 필요한지 궁금합니다.

 #property indicator_label1   "Label1"
#property indicator_type1   DRAW_SECTION
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_width1   2

#property indicator_label2   "Label2"
#property indicator_type2   DRAW_SECTION
#property indicator_color2   clrBlue
#property indicator_style2   STYLE_SOLID
#property indicator_width2   2

#property indicator_label3   "Label3"
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_color3   clrGray
#property indicator_style3   STYLE_SOLID
#property indicator_width3   1

각 줄에 대한 모든 속성이 바로 나열되어 있습니까? 아니면 mql5로는 충분하지 않습니다. 이제 PlotIndex를 통해 선의 속성을 찾아야 합니까?

나는 많은 예제와 문서, 80%를 읽었고 모든 것이 이해할 수 없습니다. 예를 들어 간단한 것을 복잡하게 만드는 이유는 무엇입니까?

예를 들어 mql4에서:

   SetIndexStyle( 0 , DRAW_SECTION ,EMPTY, 2 ,Red);
   SetIndexStyle( 1 , DRAW_SECTION ,EMPTY, 2 ,Blue);
   SetIndexStyle( 2 , DRAW_HISTOGRAM ,EMPTY, 1 ,Gray);

mql5에서는 이제 선 스타일(아마도 50행)을 지정하는 데 얼마나 걸릴지 상상조차 할 수 없지만 결과는 1이고 동일합니다.

MQL5는 PROGRAMMERS용으로 설계되었으며 MQL4는 TRADERS용으로 설계되었습니다. 저것들. 시스템을 테스트하려면 mql4로 프로그래밍하고, MT5에 대해서만 동일하게 하려면 프로그래머에게 문의하거나 거래를 중단하고 mql5를 배우는 데 시간을 보내십시오.

MT5가 출시되면서 트레이더로서 단 하나의 개선 사항만 발견했습니다. 이것은 모든 프로세서 코어를 사용할 수 있는 64비트 테스터입니다.

mql 언어의 복잡성은 수동 또는 자동 거래 결과에 영향을 미치지 않습니다. 언어의 복잡성은 프로그래머에게 중요합니다. 예 - 아름다운 버튼과 패널을 만들 수 있지만 모든 종류의 이해할 수 없는 WinAPI 등과 통합되지만 거래 결과에는 영향을 미치지 않습니다. mql4로 프로그래밍하고 확인할 수 있다면 왜 이러한 모든 어려움을 겪습니까? 그것은 단지 1 BIG 마이너스입니다. x64 터미널과 모든 코어를 사용할 수 있는 테스터가 없습니다. 이 두 가지가 있었다면 - MT4 가격은 없었을 것입니다. 하지만 일부러 만들지 않고 MT5 경쟁을 일으키지 않도록, 나 같은 사람들이 고통을 받거나 돈을 지불하게 만들지 않는다.

일반적으로 "도움"에 관심을 가져 주셔서 감사합니다. 댓글을 달지 마십시오. 어쨌든 나는 스레드에 들어가지 않을 것입니다. 이것은 단지 내 의견일 뿐이며 더 이상은 아닙니다.

 
나는 신입이다. RTS 지수 선물을 위해 MT5에서 거래한다고 말해주세요. 2009년부터 오늘까지의 시세 차트를 표시하는 방법은 무엇입니까?
 
sbr080 :
나는 신입이다. RTS 지수 선물을 위해 MT5에서 거래한다고 말해주세요. 2009년부터 오늘까지의 시세 차트를 표시하는 방법은 무엇입니까?
중개인에게 연락하여 접착 차트를 제공하십시오.
 
barabashkakvn :
중개인에게 연락하여 접착 차트를 제공하십시오.
내가 직접 붙일 수 있습니까?
 
sbr080 :
내가 직접 붙일 수 있습니까?
아니요. 브로커 전용. 스스로의 경우 지표를 직접 작성해야 합니다.
 
barabashkakvn :
아니요. 브로커 전용. 스스로의 경우 지표를 직접 작성해야 합니다.
감사하다.
 
전문가가 자신이 사용하는 매개변수와 함께 차트에 기술 지표를 표시 할 수 있습니까? 저것들. 전략 테스터에서 시각화를 사용할 때와 거의 동일합니다. 이 정보는 어디에서도 찾을 수 없습니다.
Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
사유: