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

 
Pineapple88 :

모든 것이 제대로 작동하는 것 같습니다!

두 개의 MA 표시기를 OnInit 기능 으로 이동했습니다.

내가 이해하는 것처럼 OnInit 함수에서는 표시기 핸들만 만들고 배열을 사용하는 다른 모든 조작은 OnTick 함수에 입력되고 각 틱에서 확인됩니까?

예, OnInit에서 표시기 핸들을 생성합니다. 그리고 나머지 작업은 OnTick에서 구현됩니다.

 
Vladimir Karputov :

예, OnInit에서 표시기 핸들을 생성합니다. 그리고 나머지 작업은 OnTick에서 구현됩니다.

이해했습니다 감사합니다!

 
MT5의 Expert Advisor 최적화는 필요하고 유용한 것입니다. 그러나 여기에 질문이 있습니다. 고문의 작업에 대한 최상의 매개 변수가 미래의 손익분기점을 보장하는 기간은 언제입니까? 최적화는 매달 수행되어야 한다고 믿어집니다. 그러나 최적화를 통해 보증금이 다음 달에 소진되지 않을 것이라고 보장합니까?
 
BORIS GOLICIN :
MT5의 Expert Advisor 최적화는 필요하고 유용한 것입니다. 그러나 여기에 질문이 있습니다. 고문의 작업에 대한 최상의 매개 변수가 미래의 손익분기점을 보장하는 기간은 언제입니까? 최적화는 매달 수행되어야 한다고 믿어집니다. 그러나 최적화를 통해 보증금이 다음 달에 소진되지 않을 것이라고 보장합니까?

은행 부문 보증)

 
BORIS GOLICIN :
MT5의 Expert Advisor 최적화는 필요하고 유용한 것입니다. 그러나 여기에 질문이 있습니다. 고문의 작업에 대한 최상의 매개 변수가 미래의 손익분기점을 보장하는 기간은 언제입니까? 최적화는 매달 수행되어야 한다고 믿어집니다. 그러나 최적화를 통해 보증금이 다음 달에 소진되지 않을 것이라고 보장합니까?

제 생각에는 최적화가 쓸모가 없습니다. 이것은 특정 기간에 얼마나 많은 손실이 발생했으며 얼마나 많은 이익을 얻을 수 있었는지 추정하는 데 유용합니다. 또한 언제든지 시장 상황이 바뀌고 전체 최적화가 중단될 것입니다. 자동 모드에서 전략이 더 오래 작동하려면 욕심을 부리지 않아도 됩니다. 시장에서 최대한을 짜내려고 하지 마십시오. DC는 당신이 그것을 하도록 허용하지 않습니다.

 

인터넷에서 최적화에 대해 찾은 내용은 다음과 같습니다.

예를 들어 2000년부터 2015년까지 15년(최소 10년)의 기록이 있다고 가정합니다. 이 부분을 다음 기간으로 나눕니다. 2000-2003년은 역방향 테스트 조각, 2003-2012년은 최적화 기간, 2012년 -2015 - 앞으로 테스트. 최적화 후, 우리는 가장 성공적인 세트 10-20개를 선택하여 평소와 같이 전방 테스트를 수행합니다. 그 후, 우리는 백워드 테스트 섹션에서 선택된 세트를 실행합니다. 결과는 포워드로 얻은 결과와 유사해야 합니다. 테스트를 통과한 세트는 추가 비교를 위해 남겨둡니다. 다음으로, 전체 기록에 대해 나머지 세트에 대해 테스트를 실행하고 나머지 세트보다 결과가 더 좋은 세트를 선택합니다. 결과적으로 가장 적합한 설정 세트가 하나 남습니다.
첫 번째 단계에서 세트를 선택하는 방법 - 정방향 테스트? 매우 간단합니다. 이 단계에서 가장 중요한 것은 균형 곡선의 형태입니다. 이상적으로는 왼쪽 아래에서 오른쪽 위 모서리로 가는 직선이어야 합니다. 동시에 모든 최고의 세트를 연속으로 보는 것은 의미가 없습니다. 종종 거의 동일합니다.

 

모두 좋은 하루!

ATR 표시기의 핸들에 접근하면 처음 30초 동안 이상한 값을 줍니다.

이유가 무엇인지 이해할 수 없습니까?

 int ATRdefinition = 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   ATRdefinition = iATR ( _Symbol , _Period , 14 );
   if (ATRdefinition == INVALID_HANDLE )
     {
       Print ( "Ошибка создания Хендла" );
     }

   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
   string signal = "" ;

   double Ask = NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits );
   double Bid = NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits );

   double ATRarray[];
   ArraySetAsSeries (ATRarray, true );

   CopyBuffer (ATRdefinition, 0 , 0 , 3 ,ATRarray);
   
   double ATRValue = NormalizeDouble (ATRarray[ 0 ], 5 );

   Print ( "ATRVALUE: " ,ATRValue);
  }
파일:
ATR.png  51 kb
 
Pineapple88 :

하루 종일 좋다!

ATR 표시기의 핸들에 접근하면 처음 30초 동안 이상한 값을 줍니다.

이유가 무엇인지 이해할 수 없습니까?

표시기의 준비 상태를 확인합니까?

 //--- determine the number of values calculated in the indicator 
   int calculated= BarsCalculated (handle); 

(' 핸들 ' 대신에 핸들을 삽입하십시오)

 

이 데이터( 402082 )가 지표를 계산하기 에 충분하지 않다는 것이 밝혀졌습니다.

BarsCalculated 함수는 계산할 데이터가 부족하면 오류(-1)를 주어야 한다고 생각했는데

파일:
ATR2.png  21 kb
 
Pineapple88 :

이 데이터( 402082 )가 지표를 계산하기 에 충분하지 않다는 것이 밝혀졌습니다.

BarsCalculated 함수는 계산할 데이터가 부족하면 오류(-1)를 주어야 한다고 생각했는데

터미널이 계속 기록을 다운로드하는 것 같습니다. 따라서 표시기가 지속적으로 다시 계산됩니다. 또는 다른 옵션: 터미널에서 차트에 표시할 매우 많은 수의 막대가 있고 컴퓨터가 매우 약합니다.


추가되었습니다.

MetaTrader 5 x64 빌드 2470에서 "바 표시" 설정 100000에서 확인했는데 동시에 히스토리가 오래 전에 업로드되었습니다. 코드는 훌륭하게 작동했습니다.

사유: