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

 

mql4에서는 iCustom의 도움으로 다른 사람의 기성품 인디케이터를 사용하여 침착하게 인디케이터를 만들었습니다. 프로그래밍은 하나도 이해하지 못했지만... 충분히 직관력이 있었습니다. 그리고 mql5에서는 아무리 알아내려고 해도 작동하지 않습니다. 도와주세요, 제발.

ex5 에 이 표시기가 있습니다. 다운로드 폴더에 넣습니다. 나는 두 선을 모두 취하고 다른 기간의 차트에 그리기를 원합니다. 즉, iCustom을 사용하여 다중 시간 프레임으로 만듭니다.

지표를 처음부터 작성할 수 없기 때문에 간단한 Bears Power 지표의 코드를 가져왔습니다. 나는 Indicator_chart_window와 DRAW_LINE뿐만 아니라 현재 TF의 기본 매개변수를 사용하여 첫 번째 버퍼의 데이터를 가져와야 하는 라인을 변경했다는 점을 제외하고는 아무 것도 변경하지 않았습니다.

ExtBearsBuffer[i]= iCustom ( NULL , 0 , "Downloads\\RSI Analytics" );

모든 것이 컴파일되고 아무것도 그려지지 않습니다. 그가 더 필요로하는 것은 무엇입니까? :(

 #property copyright    "2009, MetaQuotes Software Corp."
#property link          "http://www.mql5.com"
#property description "Bears Power"
//--- indicator settings
#property indicator_chart_window                        //---------------------------------
#property indicator_buffers 2
#property indicator_plots    1
#property indicator_type1    DRAW_LINE                  //---------------------------------------
#property indicator_color1   Silver
#property indicator_width1    2
//--- input parameters
input int InpBearsPeriod= 13 ; // Period
//--- indicator buffers
double     ExtBearsBuffer[];
double     ExtTempBuffer[];
//--- handle of EMA 
int        ExtEmaHandle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtBearsBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtTempBuffer, INDICATOR_CALCULATIONS );
//---
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits + 1 );
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,InpBearsPeriod- 1 );
//--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "Bears(" +( string )InpBearsPeriod+ ")" );
//--- get MA handle
   ExtEmaHandle= iMA ( NULL , 0 ,InpBearsPeriod, 0 , MODE_EMA , PRICE_CLOSE );
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
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 &TickVolume[],
                 const long & Volume [],
                 const int &Spread[])
  {
   int i,limit;
//--- check for bars count
   if (rates_total<InpBearsPeriod)
       return ( 0 ); // not enough bars for calculation   
//--- not all data may be calculated
   int calculated= BarsCalculated (ExtEmaHandle);
   if (calculated<rates_total)
     {
       Print ( "Not all data of ExtEmaHandle is calculated (" ,calculated, "bars ). Error" , GetLastError ());
       return ( 0 );
     }
//--- we can copy not all data
   int to_copy;
   if (prev_calculated>rates_total || prev_calculated< 0 ) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
       if (prev_calculated> 0 ) to_copy++;
     }
//---- get ma buffers
   if ( IsStopped ()) return ( 0 ); //Checking for stop flag
   if ( CopyBuffer (ExtEmaHandle, 0 , 0 ,to_copy,ExtTempBuffer)<= 0 )
     {
       Print ( "getting ExtEmaHandle is failed! Error" , GetLastError ());
       return ( 0 );
     }
//--- first calculation or number of bars was changed
   if (prev_calculated<InpBearsPeriod)
      limit=InpBearsPeriod;
   else limit=prev_calculated- 1 ;
//--- the main loop of calculations
   for (i=limit;i<rates_total && ! IsStopped ();i++)
     {
      ExtBearsBuffer[i]= iCustom ( NULL , 0 , "Downloads\\RSI Analytics" ); \\--------------------------------------------
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
Технический индикатор RSI ANALYTICS
Технический индикатор RSI ANALYTICS
  • 리뷰: 5
  • 2013.11.01
  • STRAT ANALYTICS
  • www.mql5.com
Зачем нам RSI в отдельном окне, если его можно построить в основном окне графика, что гораздо более понятно? RSI ANALYTICS - это индикатор, следящий за рынком, созданный на основе той же идеи, что и традиционный RSI (индекс относительной силы). При этом он строится не в отдельном подокне, а в том же окне, что и график цены финансового...
 
Nilog :

mql4에서는 iCustom의 도움으로 다른 사람의 기성품 인디케이터를 사용하여 침착하게 인디케이터를 만들었습니다. 프로그래밍은 하나도 이해하지 못했지만... 충분히 직관력이 있었습니다. 그리고 mql5에서는 아무리 알아내려고 해도 작동하지 않습니다. 도와주세요, 제발.

ex5 에 이 표시기가 있습니다. 다운로드 폴더에 넣습니다. 나는 두 선을 모두 취하고 다른 기간의 차트에 그리기를 원합니다. 즉, iCustom을 사용하여 다중 시간 프레임으로 만듭니다.

지표를 처음부터 작성할 수 없기 때문에 간단한 Bears Power 지표의 코드를 가져왔습니다. 나는 Indicator_chart_window와 DRAW_LINE뿐만 아니라 현재 TF의 기본 매개변수를 사용하여 첫 번째 버퍼의 데이터를 가져와야 하는 라인을 변경했다는 점을 제외하고는 아무 것도 변경하지 않았습니다.

모든 것이 컴파일되고 아무것도 그려지지 않습니다. 그가 더 필요로하는 것은 무엇입니까? :(

mql5에서 사용자 지정 및 표준 표시기를 사용한 작업은 mql4에서와 다르게 구성됩니다. iCustom을 사용하는 mql4에서 하나의 표시기 값만 얻을 수 있었다면 mql5에서는 전체 기록 깊이에 대한 표시기 값을 배열로 가져올 수 있습니다. 두 번째 주요 차이점은 표시기 버퍼의 인덱싱 방향입니다.

전체 코드를 보고 원본과 비교하는 것은 지루하므로 주요 코드만 지적하겠습니다.

파일은 Indicators 폴더 또는 동일한 Indicators 폴더의 하위 폴더에 있어야 합니다.

다음은 MA 표시기의 핸들을 가져오는 라인입니다.

ExtEmaHandle= iMA ( NULL , 0 ,InpBearsPeriod, 0 , MODE_EMA , PRICE_CLOSE );

다음은 MA 표시기의 값을 얻는 라인입니다.

 if ( CopyBuffer (ExtEmaHandle, 0 , 0 ,to_copy,ExtTempBuffer)<= 0 )

이 경우 추가 버퍼 또는 배열로.

사용자 지정 지표 데이터를 가져오는 것으로 나타났습니다.

ExtBearsHandle= iCustom ( NULL , 0 , "RSI Analytics" );
CopyBuffer (ExtBearsHandle, 0 , 0 ,to_copy,ExtTempBuffer)

그런 다음 이 추가 버퍼에서 표시기 값을 수신하면 인덱싱 방향을 잊지 않고 어떻게든 처리하거나 건드리지 않고 표시기 버퍼에 넣을 수 있습니다.

 
Alexey Viktorov :


고맙습니다! 내가 이해하는 대로 무언가를 작성했는데 이제 컴파일하는 동안 하나의 오류만 나타납니다. 인라인

 CopyBuffer (ExtBearsHandle, 0 , 0 ,to_copy,ExtTempBuffer);

to_copy 오류 - 선언되지 않은 식별자입니다.

어떤 섹션에서 어떻게 선언합니까?

 
Nilog :

고맙습니다! 내가 이해한 대로 무언가를 작성했는데 이제 컴파일 중에 하나의 오류만 나타납니다. 인라인

to_copy 오류 - 선언되지 않은 식별자입니다.

어떤 섹션에서 어떻게 선언합니까?

내 힌트를 귀하의 코드 및 이미 수정된 소스 코드와 비교해야 합니다. 해당 코드에서 이 변수가 선언됩니다. 그리고 내 말 외에도, 비누 송곳을 바꾸는 것이 아니라 일반적으로 지표를 구축하는 논리를 이해하려고 노력해야합니다.

 
MetaTrader 5에서 통화에 대한 한 고문의 작업은 예를 들어 RTS 지수의 작업과 근본적으로 다를 수 있습니까?
 
lil_lil :
MetaTrader 5에서 통화에 대한 한 고문의 작업은 예를 들어 RTS 지수의 작업과 근본적으로 다를 수 있습니까?

Expert Advisor는 작성된 방식대로 작동합니다. 그리고 그렇지 않습니다.

그러나 고려해야 할 뉘앙스는 다음과 같습니다. RTS는 교환이며, 이는 NETTING 유형의 위치 회계를 의미합니다. 처음에 Expert Advisor가 네팅 작업을 하도록 설계되지 않은 경우 작업 결과를 예측할 수 없습니다.

 
Vladimir Karputov :

Expert Advisor는 IT가 설계된 방식으로 작동합니다. 그리고 그렇지 않습니다.

그러나 고려해야 할 뉘앙스는 다음과 같습니다. RTS는 교환이며, 이는 NETTING 유형의 위치 회계를 의미합니다. 처음에 Expert Advisor가 네팅 작업을 하도록 설계되지 않은 경우 작업 결과를 예측할 수 없습니다.

네팅에서 작동하도록 설계되었는지 여부를 코드에서 정확히 알아내는 방법에 대해 감사합니다.

전략에는 서로 다른 입장이 없습니다.

 
lil_lil :

네팅에서 작동하도록 설계되었는지 여부를 코드에서 정확히 알아내는 방법에 대해 감사합니다.

전략에는 다방향 위치가 없습니다.

그리고 그렇다면(작업에는 항상 하나의 위치가 있음) 차이가 없습니다. 최소한 네팅, 최소한 헤징입니다.

 
Vladimir Karputov :

그리고 그렇다면(작업에는 항상 하나의 위치가 있음) 차이가 없습니다. 최소한 네팅, 최소한 헤징입니다.

통화(Forex)의 역 신호로 포지션은 마감되지만 증권 거래소에서는 마감되지 않습니다. 어디를, 무엇을 찾아야 할까요?

 
lil_lil :

역 신호를 사용하면 통화에서 포지션이 마감되지만 거래소에서는 마감되지 않습니다. 어디를, 무엇을 찾아야 할까요?

포지션 을 청산하라는 명령이 가는 곳을 찾으세요.

사유: