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

 
newnek :

안녕하세요! 표준 라이브러리의 신호에서 매개변수 Parameter=Ka,int,21이 필요하지 않다고 말해주세요.

유형 열거에서 최적화 프로세스 중에 선택됨

그러나 Expert Advisor를 생성할 선택 항목 에서 신호가 사라지고 정상적으로 컴파일되면 결론을 도출하기 어렵습니다. 무엇이 잘못되었는지 ......, 코드를 도와주세요. 이미 구현이 있었습니까?

ps . 매번 최종 EA에서 int를 intType 으로 변경해야 합니다.

정확한 신호 모듈 파일과 코드 줄을 지정하십시오...
 
Karputov Vladimir :
정확한 신호 모듈 파일과 코드 줄을 지정하십시오...

예를 들어, 다음은 상위 SignalRVI.mqh 코드의 일부입니다. 이 경우 int형을 intType으로 변경하면 시그널 선택에서 사라집니다.

범위가 없으면 열거형 #include <Libraries\myfunc.mqh>를 사용하여 별도의 파일에 넣습니다.
 //+------------------------------------------------------------------+
//|                                                    SignalRVI.mqh |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#include <Expert\ExpertSignal.mqh>
// wizard description start
//+------------------------------------------------------------------+
//| Description of the class                                         |
//| Title=----------------Signals of oscillator 'Relative Vigor Index'               |
//| Type=SignalAdvanced                                              |
//| Name=Relative Vigor Index                                        |
//| ShortName=RVI                                                    |
//| Class=CSignalRVI                                                 |
//| Page=signal_rvi                                                  |
//| Parameter=PeriodRVI,intType,15,Period of calculation                 |
//+------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
//| Class CSignalRVI.                                                |
//| Purpose: Class of generator of trade signals based on            |
//|          the 'Relative Vigor Index' oscillator.                  |
//| Is derived from the CExpertSignal class.                         |
//+------------------------------------------------------------------+
enum intType
  {
   p0 = 15 , 
   p1 = 21 , 
   p2 = 29 
}
;
class CSignalRVI : public CExpertSignal
  {
protected :
   CiRVI             m_rvi;             // object-oscillator
   //--- adjusted parameters
   intType               m_periodRVI;       // the "period of calculation" parameter of the oscillator
   //--- "weights" of market models (0-100)
   int                m_pattern_0;       // model 0 "the oscillator has required direction"
   int                m_pattern_1;       // model 1 "crossing of main and signal line"

public :
                     CSignalRVI( void );
                    ~CSignalRVI( void );
   //--- methods of setting adjustable parameters
   void               PeriodRVI(intType value )            { m_periodRVI= value ;                 }
   //--- methods of adjusting "weights" of market models
   void               Pattern_0( int value )            { m_pattern_0= value ;                 }
   void               Pattern_1( int value )            { m_pattern_1= value ;                 }
   //--- method of verification of settings
   virtual bool       ValidationSettings( void );
   //--- method of creating the indicator and timeseries
   virtual bool       InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int        LongCondition( void );
   virtual int        ShortCondition( void );

protected :
   //--- method of initialization of the oscillator
   bool               InitRVI(CIndicators *indicators);
   //--- methods of getting data
   double             Main( int ind)                   { return (m_rvi.Main(ind));           }
   double             DiffMain( int ind)               { return (Main(ind)-Main(ind+ 1 ));     }
   double             Signal( int ind)                 { return (m_rvi.Signal(ind));         }
   double             DiffSignal( int ind)             { return (Signal(ind)-Signal(ind+ 1 )); }
   double             DiffMainSignal( int ind)         { return (Main(ind)-Signal(ind));     }
  };
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSignalRVI::CSignalRVI( void ) : m_periodRVI( 15 ),
                               m_pattern_0( 60 ),
                               m_pattern_1( 100 )
  {
  }
 
newnek :

안녕하세요! 표준 라이브러리의 신호에서 매개변수 Parameter=Ka,int,21이 필요 하지 않다고 말해주세요.

유형 열거에서 최적화 프로세스 중에 선택됨

그러나 Expert Advisor 생성 시 선택 항목에서 신호가 사라지고 정상적으로 컴파일되면 결론을 도출하기 어렵습니다. 무엇이 잘못되었는지 ......, 코드 도움, 이미 구현이 있었습니까?

ps. 매번 최종 EA에서 int를 intType으로 변경해야 합니다.

변경할 필요가 없습니다. "Relative Vigor Index" 표시기의 신호 모듈을 기반으로 Expert Advisor를 생성한 다음 전략 테스터의 "설정" 탭에서 최적화 중 하나를 선택하고 "매개변수"로 이동합니다. 탭을 클릭하고 "상대 활력" 매개변수 인덱스(10) 계산 기간" 값의 간격과 값을 설정합니다.

RVI

그러나 15-29 범위에서 3개의 값만 사용하고 싶기 때문에 OnInit()에 테스트 조건을 작성해야 합니다 .

 //+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit ()
  {
   if (Signal_RVI_PeriodRVI!= 15 && Signal_RVI_PeriodRVI!= 21 && Signal_RVI_PeriodRVI!= 29 )
       return ( INIT_PARAMETERS_INCORRECT );
//--- Initializing expert

최적화를 시작한 후 테스터가 매개변수 15, 21 및 29에 대해서만 작동했음을 알 수 있습니다.

선택적 최적화

 
Karputov Vladimir :

변경할 필요가 없습니다. "Relative Vigor Index" 표시기의 신호 모듈을 기반으로 Expert Advisor를 생성한 다음 전략 테스터의 "설정" 탭에서 최적화 중 하나를 선택하고 "매개변수"로 이동합니다. 탭을 클릭하고 "상대 활력" 매개변수 인덱스(10) 계산 기간" 값의 간격과 값을 설정합니다.


그러나 15-29 범위에서 3개의 값만 사용하고 싶기 때문에 OnInit()에 테스트 조건을 작성해야 합니다 .

최적화를 시작한 후 테스터가 매개변수 15, 21 및 29에 대해서만 작동했음을 알 수 있습니다.

감사합니다. 귀하의 아이디어를 이해했습니다. 매우 흥미롭지만 헛된 단계가 많이 있을 것입니다(시간을 낭비하지는 않을 것입니다). 형성된 Expert Advisor에서 열거 유형을 수동으로 변경했습니다. 더 자동화하고 싶습니다.
 
newnek :
감사합니다. 귀하의 아이디어를 이해했습니다. 매우 흥미롭지만 헛된 단계가 많이 있을 것입니다(시간을 낭비하지는 않을 것입니다). 형성된 Expert Advisor에서 열거 유형을 수동으로 변경했습니다. 더 자동화하고 싶습니다.
빈 단계가 있지만 시간이 걸리지 않습니다. 조건이 일치하지 않으면 OnInit()이 종료되고 다음 최적화 단계가 즉시 시작되기 때문입니다.
 

안녕하세요... C++ 프로그래머입니다. 그래서 최근에 이 분야에 도전하기로 했습니다... 고문이나 전문가를 쓰고 싶고, 상관없어요, 전략을 생각해 냈어요, MT4 플랫폼... 글쎄요, 그런 문제에 부딪쳤습니다. 저는 어드바이저에서 MACD를 사용합니다.... 더 짧게 쓰겠습니다...

예를 들어, OnTick에서 새 EA 템플릿을 만들고 x=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); 그리고 다른 것이 없다고 가정 해 봅시다. 컴파일, 테스트, 모든 것이 정상입니다. 테스트가 끝나면 지정된 매개 변수가있는 macd 차트가 표시되고 모든 것이 정상입니다.

두 번째 옵션은 OnTick에서 새 Expert Advisor 템플릿을 만들고 타사 표시기를 추가하는 것입니다. RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue", "자홍색",50,50, "빨간색","녹색",0,0); 컴파일, 테스트, 모든 것이 정상이지만 !!! 테스트가 끝난 후 또는 수천 개의 이러한 표시기의 창에서 테스트가 취소된 후 각 틱마다 새로운 칠면조가 생성된다는 것을 이해합니다 ... 동일한 표준 MACD가 태어나기 때문에 이해하지 못하는 이유 한 번이면 끝입니다 ...

누구든지 문제를 명확히 할 수 있습니까 ... 다른 비표준 표시기로 동일한 문제 ...

추신 이것은 내 첫 번째 게시물입니다 ... 스폴러 아래에 사진을 숨기는 방법을 찾지 못했다고 저를 꾸짖지 마십시오.

화면
 

무슨 관련이 있는지는 모르겠지만 탈출구를 찾았습니다 ...

RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","자홍색",50,50,"빨간색","녹색",0,0) ; - 매 틱마다 차트를 그립니다. 수천 개의 차트

RSICur=iCustom(NULL,0,"My_Induk",0,0); - All OK, 하나의 차트, 모든 틱은 RSICur 변수의 데이터만 업데이트됩니다. 논리가 무엇인지 이해하지 못합니다. 원칙적으로 이 정도면 충분하지만 왜 정상적으로 작동하는지 알고 싶습니다. 기본 설정으로...

 
Игорь Марин :

안녕하세요... C++ 프로그래머입니다. 그래서 최근에 이 분야에 도전하기로 했습니다... 고문이나 전문가를 쓰고 싶고, 상관없어요, 전략을 생각해 냈어요, MT4 플랫폼... 글쎄요, 그런 문제에 부딪쳤습니다. 저는 어드바이저에서 MACD를 사용합니다.... 더 짧게 쓰겠습니다...

예를 들어, OnTick에서 새 EA 템플릿을 만들고 x=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); 그리고 다른 것이 없다고 가정 해 봅시다. 컴파일, 테스트, 모든 것이 정상입니다. 테스트가 끝나면 지정된 매개 변수가있는 macd 차트가 표시되고 모든 것이 정상입니다.

두 번째 옵션은 OnTick에서 새 Expert Advisor 템플릿을 만들고 타사 표시기를 추가하는 것입니다. RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue", "자홍색",50,50, "빨간색","녹색",0,0); 컴파일, 테스트, 모든 것이 정상이지만 !!! 테스트가 끝난 후 또는 수천 개의 이러한 표시기의 창에서 테스트가 취소된 후 각 틱마다 새로운 칠면조가 생성된다는 것을 이해합니다 ... 동일한 표준 MACD가 태어나기 때문에 이해하지 못하는 이유 한 번이면 끝입니다 ...

누구든지 문제를 명확히 할 수 있습니까 ... 다른 비표준 표시기로 동일한 문제 ...

추신 이것은 내 첫 번째 게시물입니다 ... 스폴러 아래에 사진을 숨기는 방법을 찾지 못했다고 저를 꾸짖지 마십시오.

사진으로 모든 것이 괜찮습니다. 여기에 숨기지 않습니다.

이 My_Induk을 작성했습니까 아니면 어딘가에서 찾았습니까? 제가 알기로는 커브 인디케이터입니다. 소스가 있으면 배치하십시오. 문제가 무엇인지 알 수 있습니다.

 
Игорь Марин :

무슨 관련이 있는지는 모르겠으나 탈출구를 찾았습니다...

RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","자홍색",50,50,"빨간색","녹색",0,0) ; - 매 틱마다 차트를 그립니다. 수천 개의 차트

RSICur=iCustom(NULL,0,"My_Induk",0,0); - All OK, 하나의 차트, 모든 틱은 RSICur 변수의 데이터만 업데이트됩니다. 논리가 무엇인지 이해하지 못합니다. 원칙적으로 이 정도면 충분하지만 왜 정상적으로 작동하는지 알고 싶습니다. 기본 설정으로...

이것은 표시기 매개변수를 올바르게 전달하지 않은 경우에 발생합니다. 주의 깊게 살펴보고 지표의 매개변수와 Expert Advisor에 작성한 내용을 비교하십시오.
 
Alexey Volchanskiy :

사진으로 모든 것이 괜찮습니다. 여기에 숨기지 않습니다.

이 My_Induk을 작성했습니까 아니면 어딘가에서 찾았습니까? 제가 알기로는 커브 인디케이터입니다. 소스가 있으면 배치하십시오. 문제가 무엇인지 알 수 있습니다.

블라디슬라프 안드루셴코 :
이것은 표시기 매개변수를 올바르게 전달하지 않은 경우에 발생합니다. 주의 깊게 살펴보고 지표의 매개변수와 Expert Advisor에 작성한 내용을 비교하십시오.

감사합니다 알아냈어요... 하루 종일 뚫었어요 이해가 안 되었어요... 프로그래머가 직접 해봤는데... 오류가 구문론적이어서 EA에서 색상 매개변수를 따옴표로 묶어서 보냈습니다. ..

iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","자홍색",50,50,"빨간색","녹색",0,0);

이것 때문에 이런 잼이 생겼다...) 감사합니다!!! 확실히 더 많은 질문이있을 것입니다!

사유: