기고글 토론 "MQL5 마법사 : 새 버전" - 페이지 4

 

1. 신호를 반전시키는 방법을 알려주실 수 있나요?

예: GBP/USD 매수 신호를 확인하려면 MACD EUR/GBP 매도 신호가 필요합니다.

아니면 라이브러리 코드를 파헤쳐서 "플러스"를 "마이너스"로 변경하고 다른 이름의 라이브러리로 저장하는 것이 더 쉬운가요?

추신: 전문가 조언자를 만들 때 어떤 신호를 취할지 선택할 때 정방향 또는 역방향 신호를 선택하면 좋을 것 같습니다.

2. 라이브러리에 꿰매어진 패턴의 가중치를 꺼내서 가중치를 최적화하려면 어떻게 해야 하나요?

 
52_rus:

1. 신호를 반전하는 방법을 알려주실 수 있나요?

예: GBP/USD 매수 신호를 확인하려면 MACD EUR/GBP 매도 신호가 필요합니다.

아니면 라이브러리 코드를 파헤쳐서 "플러스"를 "마이너스"로 변경하고 다른 이름의 라이브러리로 저장하는 것이 더 쉬운가요?

추신: 전문가 조언자를 만들 때 어떤 신호를 취할지 선택할 때 정방향 또는 역방향 신호를 선택하면 좋을 것 같습니다.

2. 라이브러리에 꿰매어져 있는 패턴의 가중치를 어떻게 꺼내서 이 가중치를 최적화할 수 있나요?

1. 신호를 반전(및 무시)하는 메커니즘은 CExpertSignal 베이스 클래스에 내장되어 있지만, 안타깝게도 마법사에서는 아직 사용할 수 없습니다.

2 패턴 가중치도 마찬가지입니다.

"마법사" 이후에 얻은 Expert Advisor의 소스를 첨부하여 간략하게 설명해 주세요. "손으로" 하는 방법을 설명해 드리겠습니다.

추신. "마법사"는 개발 중이며 이러한 설정은 나중에 사용할 수 있습니다.

 

1. 내 라이브러리를 마스터 신호 목록에 추가하려면 어떻게 해야 하나요(예: 현재 MACD를 변경하고 기본 라이브러리를 삭제하지 않고 저장)?

2. 라이브러리 작업에 대한 질문입니다:

마법사의 도움으로 만든 MAKD를 기반으로 한 전문가 조언자를 고려해 봅시다 : 우리는 그것을 만들고 컴파일하고 테스트하고 몇 가지 결과를 얻었습니다.

라이브러리의 MAKD 신호는 다음과 같습니다:

//--- 시장 모델의 기본 "가중치" 설정
   m_pattern_0    =10;       // 모델 0 "오실레이터에 필요한 방향이 있습니다"
   m_pattern_1    =30;       // 모델 1 "오실레이터를 필요한 방향으로 반전"
   m_pattern_2    =80;       // 모델 2 "메인 라인과 신호 라인의 교차"
   m_pattern_3    =50;       // 모델 3 "제로 레벨에서 메인 라인 교차"
   m_pattern_4    =60;       // 모델 4 "오실레이터와 가격의 발산"
   m_pattern_5    =100;      // 모델 5 "오실레이터와 가격의 이중 발산" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- 시장 모델의 기본 "가중치" 설정
   m_pattern_0    =0;       // 모델 0 "오실레이터에 필요한 방향이 있습니다"
   m_pattern_1    =0;       // 모델 1 "오실레이터를 필요한 방향으로 반전"
   m_pattern_2    =80;       // 모델 2 "메인 라인과 신호 라인의 교차"
   m_pattern_3    =0;       // 모델 3 "제로 레벨에서 메인 라인 교차"
   m_pattern_4    =0;       // 모델 4 "오실레이터와 가격의 발산"
   m_pattern_5    =0;      // 모델 5 "오실레이터와 가격의 이중 발산" 

라이브러리만 컴파일합니다(EA 코드 자체는 컴파일하지 않습니다). 테스트하고 첫 번째 테스트와 정확히 동일한 결과를 얻습니다.

EA 코드도 컴파일하면 이 예제에서는 패턴 2에 대해서만 다른 결과를 얻을 수 있습니다.

질문이 있습니다. 라이브러리에서 일부 매개 변수를 변경 한 후 EA 코드를 다시 컴파일해야하는 이유는 무엇입니까? (변경되지 않았습니다).

 
52_rus:

1. 내 라이브러리를 마스터 신호 목록에 추가하려면 어떻게 해야 하나요(예: 현재 MACD를 변경하고 주 신호는 삭제하지 않고 저장)?


신호 모듈의 코드가 포함된 include 파일을 말하는 건가요? 필요에 따라 현재 모듈을 변경하고 동일한 디렉토리에 다른 이름으로 저장합니다. 이에 대한 자세한 내용은 문서에 나와 있습니다:

새로운 MQL5 마법사에서 트레이딩 로봇 만들기 문서를 참고하세요.

EA 코드는 메타에디터의 MQL5 마법사를 사용하여 구성됩니다.

트레이딩 전략의 기본 클래스는 terminal_data_folder\MQL5\Include\Expert\에 있습니다. 트레이딩 신호 클래스 , 오픈 포지션 유지 클래스, 자본 및 위험 관리 클래스의 준비된 알고리즘은 신호, 추적 및 자금 하위 디렉토리에 있습니다. MQL5 마법사는 이러한 디렉토리에 있는 파일을 분석하여 EA 코드를 생성하는 데 사용합니다.

즉, 신호 모듈은 터미널_데이터_폴더\MQL5\포함\전문가\신호 디렉토리에 있으며, MQL5 마법사가 보려면 반드시 있어야 합니다.
 
모든 것이 작동했습니다, 감사합니다, 방금 코드를 수정했지만 클래스 이름을 변경하지 않았습니다....
 

어떤 이유로 버전의 터미널에는 더 이상 사용자 지정 버전의 신호 발생기 모듈이 포함되어 있지 않습니다. MQL5/Include/Expert/Signal/ 폴더에는 30개의 모듈이 있지만 마법사에는 도움말에 따라 표준으로 제공되는 모듈이 20개만 표시됩니다.

저만 그런 건가요, 아니면 MT5 에디터가 더 이상 신호 모듈이 있는 폴더에서 새 모듈을 검색하지 않나요? 메타쿼츠에서 개발한 캔들스틱 패턴을 기반으로 한 이전 신호 모듈도 연결되지 않습니다.

 
Livingston:

어떤 이유로 버전의 터미널에는 더 이상 사용자 지정 버전의 신호 발생기 모듈이 포함되어 있지 않습니다. MQL5/Include/Expert/Signal/ 폴더에는 30개의 모듈이 있지만 마법사에는 도움말에 따라 표준으로 제공되는 모듈이 20개만 표시됩니다.

저만 그런 건가요, 아니면 MT5 에디터가 더 이상 신호 모듈이 있는 폴더에서 새 모듈을 검색하지 않나요? 메타쿼츠에서 개발한 이전 캔들스틱 패턴 기반 신호 모듈도 연결되지 않습니다.

새 신호 모듈은 다른 모듈 설명을 가져야 하며 유형이 SignalAdvanced여야 합니다.


 
Rosh:

새 신호 모듈은 다른 모듈 설명을 가져야 하며 그 유형은 SignalAdvanced여야 합니다.


매우 감사합니다.
 
Rosh:

새 신호 모듈은 다른 모듈 설명을 가져야 하며 그 유형은 SignalAdvanced여야 합니다.


이전에 작성된 신호 모듈에서 Signal을 SignalAdvanced로 대체해도 여전히 작동하지 않습니다. 이제 CheckOpenShort/CheckOpenLong 함수가 사용되지 않고 ShortCondition/LongCondition으로 대체되나요?

이 함수에는 매개 변수가 없으므로 테이크아웃 및 정지를 설정하는 방법이 불분명합니다.

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- 첫 번째 분석 막대에서 종가와 지표의 위치 관계를 분석합니다.
   if(DiffCloseMA(idx)<0.0)
     {
      //--- 종가가 표시기 아래에 있습니다.
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //--- 시가가 지표 위에 있지만(즉, 교차점이 있음) 지표는 위쪽으로 향하고 있습니다.
         result=m_pattern_1;
         //--- 이것이 형성되지 않은 "피어싱"이라고 생각하고 현재 가격으로 시장에 진입할 것을 제안합니다.
         m_base_price=0.0;
        }
     }
   else
     {
      //--- 종가가 지표 위에 있습니다(지표에 매수에 대한 이의가 없음).
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      모델 2를 사용하는 경우 //---
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //--- 표시기가 위쪽으로 향합니다.
         if(DiffOpenMA(idx)<0.0)
           {
            //--- 시가가 표시기 아래에 있습니다(즉, 교차점이 있음).
            result=m_pattern_2;
            //--- "롤백"에서 시장 진입을 제안합니다.
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //--- 시가가 표시기 위에 있습니다.
            if(DiffLowMA(idx)<0.0)
              {
               //--- 낮은 가격이 표시기 아래에 있습니다.
               result=m_pattern_2;
               //--- 이것이 형성된 "피어싱"이라고 생각하고 현재 가격으로 시장에 진입 할 것을 제안합니다.
               m_base_price=0.0;
              }
           }
        }
     }
//--- 결과를 반환합니다.
   return(result);
  }

이제 IS_PATTERN_USAGE()가 신호 모듈의 모든 곳에서 사용되는데, 그 이유가 불분명합니다.

일반적으로 신호 모듈을 직접 만드는 방법에 대한 정보를 기다리고 있습니다.

그리고 이전 마법사 모드인 Type=Signal을 사용할 수 있나요? 아니면 이제 모든 모듈이 새로운 방식으로 작성되나요?

 

각 시장 모델에는 1에서 100까지 측정되는 중요도가 할당됩니다. 값이 높을수록 모델이 더 강력하다는 뜻입니다.

가중치가 0.4인 MA와 가중치가 0.8인 스토캐스틱은 외부 변수로 설정되며, MA의 경우 유의도는 100입니다. 이 모델의 확률적 유의성은 80입니다. 각 모델의 유의도는 어디에서 설정되며 어떻게 결정되나요?