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

 
FinEngineer : 단 하나의 오류만 남음 2012.12.22 00:56:44 Pair_delta_RSI(EURGBP,M1) RSI1_Handle의 모든 데이터가 계산되는 것은 아닙니다(-1bars). 오류 4806

이 오류는 컴파일 중에 발생하는 것이 아니라 지표를 차트에 연결하거나 기간을 변경할 때 발생합니다.

이 오류 메시지 가 항상 표시됩니까, 아니면 시간이 지나면 사라집니까?

 
얘들아! MT5를 모든 DC에 연결할 수 있습니까?
 
net :
얘들아! MT5를 모든 DC에 연결할 수 있습니까?

아니요. MT5를 통한 거래는 이 플랫폼을 통해 거래할 수 있는 기회를 제공하는 브로커(예: VTB24 및 Alfa Forex)를 통해 가능합니다.

Условия для трейдеров
  • www.alfa-forex.ru
Если у вас уже есть опыт работы на валютном рынке, то вы по достоинству оцените преимущества работы с Альфа-Форекс Самые узкие спреды на рынке: EUR/USD — от 0,7 пункта Отсутствие минимального депозита Быстрый ввод и вывод средств Исполнение ордеров без проскальзываний и реквот Альфа-Форекс входит в банковскую группу в составе Консорциума...
 
Yedelkin :

이 오류 메시지 가 항상 표시됩니까, 아니면 시간이 지나면 사라집니까?

지표를 차트에 연결했을 때...
 
Yedelkin :

이 오류 메시지 가 항상 표시됩니까, 아니면 시간이 지나면 사라집니까?

2012.12.22 11:40:32 Pair_delta_RSI(EURGBP,M1) 'Pair_delta_RSI.mq5'의 범위를 벗어난 배열(92,37)
그러한 오류도 나타납니다 ... 즉. 두 번의 실수...
 
Yedelkin :

이 오류 메시지 가 항상 표시됩니까, 아니면 시간이 지나면 사라집니까?

alphaforex 터미널에서 시도했지만 alpari 터미널에서 시도했지만 동일한 오류 ...
 

FinEngineer :

Yedelkin : 이 오류 메시지가 계속 뜨나요, 아니면 시간이 지나면 사라지나요?

지표를 차트에 연결했을 때...

글쎄, 당신은 잘하고 있습니다. 프로그램을 차트에 연결하거나 기간을 변경하면 터미널에 RSI 지표 또는 기타에 대한 새로운 계산 데이터가 없습니다. 그리고 터미널은 필요한 표시기 버퍼 를 계산하는 데 약간의 시간이 필요합니다. 코드를 주의 깊게 살펴보십시오(누군가의 모델에 따라 작성되었지만 그럼에도 불구하고): RSI 에 대해 계산된 데이터가 충분하지 않으면 OnCalculate() 함수 가 작업을 중지하고('return(0);') 기다립니다. 새로운 티크를 위해. 다음 틱에서 RSI에 대한 표시기 버퍼 가 완전히 계산되는 즉시 표시기는 일반 모드에서 작동하기 시작합니다. 무슨 일이 일어나고 있는지, 당신의 말로 판단합니다.

BarsCalculated()로 수표를 OnInit() 함수에 삽입할 수도 있습니다. 그러면 오류가 매우 드물게 발생합니다(전혀 발생하더라도). BarsCalculated() 함수에 대한 설명에 예가 나와 있습니다 .

 
FinEngineer : 2012.12.22 11:40:32 Pair_delta_RSI(EURGBP,M1) 'Pair_delta_RSI.mq5'의 범위를 벗어난 배열(92,37)
그러한 오류도 나타납니다 ... 즉. 두 번의 실수...
어제 이 오류에 대해 썼습니다. ( 코드를 올바르게 붙여 넣는 것을 잊지 마십시오 :) )
 
Yedelkin :
어제 이 오류에 대해 썼습니다. (코드를 올바르게 붙여 넣는 것을 잊지 마십시오 :) )

불충분한 데이터를 담당하는 코드를 제거했습니다(아래).

int 계산 = BarsCalculated(RSI1_Handle);

if(계산된<rate_total)

{

Print("RSI1_Handle의 모든 데이터가 계산되지는 않습니다(",calculated,"bars). Error", GetLastError() );

반환(0);

}

계산됨=BarsCalculated(RSI2_Handle);

if(계산된<rate_total)

{

Print("RSI2_Handle의 모든 데이터가 계산되지는 않습니다(",calculated,"bars). Error",GetLastError());

반환(0);

메시지에서 코드 조각을 강조 표시하는 방법을 알려주시겠습니까?

이제 오류가 나옵니다.

2012.12.22 15:14:00 Pair_delta_RSI(EURGBP,M1) RSI1을 가져오지 못했습니다! 오류 4806

 
FinEngineer : 메시지에서 코드 조각을 강조 표시하는 방법을 알려주십시오.

코드를 올바르게 붙여넣습니다 .

FinEngineer : 데이터 부족의 원인이 되는 코드 제거(아래)
   int calculated= BarsCalculated (RSI1_Handle);
   if (calculated<rates_total)
     {
       Print ( "Not all data of RSI1_Handle is calculated (" ,calculated, "bars ). Error" , GetLastError ());
       return ( 0 );
     }
   calculated= BarsCalculated (RSI2_Handle);
   if (calculated<rates_total)
     {
       Print ( "Not all data of RSI2_Handle is calculated (" ,calculated, "bars ). Error" , GetLastError ());
       return ( 0 );

네, 여기에서는 "데이터 부족을 담당하는 코드 조각"이 잘 작동했습니다. 그리고 그는 첫 번째 틱이 도착했을 때 RSI에 대한 데이터가 아직 터미널에서 계산되지 않았다고 올바르게 보고했습니다. 오류 메시지가 표시되는 것이 마음에 들지 않으면 위에서 언급한 대로 수행하십시오. 즉, OnCalculate()뿐만 아니라 OnInit()에도 계산된 데이터가 있는지 확인하십시오. 즉, 선택한 기술 지표에 대한 데이터 계산을 위해 OnInit()에서 기다렸다가(최종 루프를 통해 대기), 지표에 대한 데이터가 다음과 같을 때 OnCalculate()에서 눈금 처리를 진행합니다. 계산을 보장합니다.

부록. 결국 인증코드의 일부를 제거한다고 해서 지표 데이터 산출량 증가에 전혀 기여하지 않습니다. :)

사유: