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

 
jommerbot :

좋아, 가장 간단한 경우에도 작동하지 않습니다.

나는 내 실수가 어디에 있는지 이해하지 못합니다. EA와 스크립트에서 동일한 표시기의 버퍼를 복사하면 작동하지만 표시기에서는 작동하지 않습니다. 표시기 핸들은 오류 없이 초기화됩니다.

차이점을 찾으십시오. )

 #property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrRed
//---
double ExtLineBuffer[];
int     iRocHandleEURUSD = INVALID_HANDLE ;
int     iPlotShift       = 0 ;
int     iPeriod          = 6 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
   IndicatorSetInteger ( INDICATOR_DIGITS , 2 );
   SetIndexBuffer ( 0 ,ExtLineBuffer, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_SHIFT ,iPlotShift);
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,iPeriod- 1 );
//---
   iRocHandleEURUSD= iCustom ( "EURUSD" , 0 , "Examples\\ROC" );
   if (iRocHandleEURUSD== INVALID_HANDLE )
       Print ( "Не удалось получить хендл индикатора ROC EURUSD" );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int     rates_total,
                 const int     prev_calculated,
                 const int     begin,
                 const double &price[])
  {
//---
   if (rates_total<iPeriod)
       return ( 0 );
//---
   int first= 0 ;
   double aRocRatesEURUSD[];
   ArraySetAsSeries (ExtLineBuffer, true );
//---
   if (prev_calculated== 0 )
      first= 0 ;
   else
      first=prev_calculated- 1 ;
//---
   for ( int bar=first; bar<rates_total; bar++)
     {
       CopyBuffer (iRocHandleEURUSD, 0 ,bar, 1 ,aRocRatesEURUSD);
       Print ( "bar: " ,bar, "; value: " , DoubleToString ((aRocRatesEURUSD[ 0 ]!= EMPTY_VALUE )?aRocRatesEURUSD[ 0 ]: 0 , 2 ));
      ExtLineBuffer[bar]=aRocRatesEURUSD[ 0 ];
     }
//---
   return (rates_total);
  }
//+------------------------------------------------------------------+
 

예, 최신 버전의 코드에서 표시기 핸들러가 변수의 잘못된 범위에 들어갔다는 것을 깨달았습니다. 간과했습니다. 감사합니다. 그러나 한 가지 문제가 있습니다. 테스터에는 테스트 기간이 시작되기 이전의 기록 막대에서 표시기 가 정상적으로 작동하지만 테스트 기간이 시작될 때부터 새로 수신된 틱은 고려되지 않습니다. 저것들. 자식 표시기 버퍼는 업데이트되지 않습니다.

 

친절한 사람들, 조언자의 "입력 매개변수"에 있는 작업 행에서 코드를 수정하도록 도와주세요.
외부 문자열 Lot = "0.2 0.2 0.3 0.4 0.5"; // (공백으로 구분)
마지막 값(이 경우 0.5)은 무기한 반복됩니다.
"0.2 0.2 0.3 0.4 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5";

//------------------------

StringToArrayLot(Lot,xiLot);

//------------------------------------------------ ---

int StringToArrayLot(문자열 st, 더블 &ad[])
{
정수 i=0,np; 문자열 stp; ArrayResize (광고,0);
동안(StringLen(st)>0)
{
np=문자열찾기(st," ");
if(np<0)
{
stp=st;
성="";
} 또 다른{
stp=StringSubstr(st,0,np);
st=StringSubstr(st,np+1);
}
나는 ++;
ArrayResize(광고, i);
ad[i-1]=StrToDouble(stp);
}
반환(배열 크기(광고));
}

 
얘들 아, 왜 사이트 나 터미널에서 내 고문을 볼 수 없습니까?
 
Krasev157 :
얘들 아, 왜 사이트 나 터미널에서 내 고문을 볼 수 없습니까?
사이트에서 보려면 게시해야 합니다. 터미널에서 컴파일하려면.
 
zfs :
사이트에서 보려면 게시해야 합니다. 터미널에서 컴파일하려면.

현재 사이트에 게시할 예정이므로 프로필에 표시되지 않습니다.

 
Krasev157 :

현재 사이트에 게시할 예정이므로 프로필에 표시되지 않습니다.

알바니아어 사전 링크 좀 주세요.
 
barabashkakvn :
알바니아어 사전 링크 좀 주세요.

http://www.txtblog.ru/blog/1165306807 여기 있습니다

 
Krasev157 :

http://www.txtblog.ru/blog/1165306807 여기 있습니다

저자 zhzhhot nipadetski  

저자 peshhy yscho

부가가!

 
안녕하세요, 어렵지 않다면 말씀해주세요. 마지막 5틱의 가격을 배열에 넣는 방법은 무엇입니까?