기고글 토론 "6 단계로 나만의 거래 로봇을 만드세요!" - 페이지 2

 
bivmail:

기대가 컸지만 이 문제를 해결할 수 없습니다(comm - 메모리 주소 전송에 대해 읽었지만 그 방법도 작동하지 않았습니다):

컴파일러가 'm_MethodFast' - 상수 표현식 필요, ' m_MethodSlow' - 상수 표현식 필요 오류를 반환합니다.

물론 이것은 초보자를위한 질문입니다. 기사를 막지 않기 위해 다른 스레드에서 그러한 질문을해야할까요?


ENUM_MA_METHOD l_array1_select_method[2];
l_array1_select_method[0]=MethodFast();
l_array1_select_method[1]=MethodSlow();
 

네 두 번째 방법도 잘 안 됐어요:

비틀거립니다.

1)'=' - l-값 필요 //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - EnumToString의 매개변수는 열거형 //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)))이어야 합니다;

부울이 아닌 표현식

#include <Arrays\ArrayInt.mqh>
   CArrayInt l_array1_select_method_n2;
   l_array1_select_method_n2.Add(m_MethodFast);
   l_array1_select_method_n2.Add(m_MethodSlow);
   //int total_array1_n2=l_array1_select_method_n2.Total()-1;// ArraySize(l_array1_select_method_n2);

   CArrayInt l_array2_enum_ma_method_n2;
   l_array2_enum_ma_method_n2.Add(MODE_SMA);
   l_array2_enum_ma_method_n2.Add(MODE_EMA);
   l_array2_enum_ma_method_n2.Add(MODE_SMMA);
   l_array2_enum_ma_method_n2.Add(MODE_LWMA);

   bool YesErrorsFlag_n2=false;
   for(int i_array1_n2=0;i_array1_n2<l_array1_select_method_n2.Total()-1;i_array1_n2++)
     {
      if(l_array2_enum_ma_method_n2.Search(l_array1_select_method_n2.At(i_array1_n2))=-1)
        {
         YesErrorsFlag_n2=true;
         PrintFormat("스무딩 유형 %s 이동 평균이 잘못되었습니다!",EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

이제 이것은 실용적인 목적이 없습니다. 예제에서 그대로 두겠습니다...

 
bivmail:

네 두 번째 방법도 잘 안 됐어요:

비틀거립니다.

1)'=' - l-값 필요 //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - EnumToString의 매개변수는 열거형 //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)))이어야 합니다;

부울이 아닌 표현식

이제 이것은 실용적인 목적이 없습니다. 예제.... 에 있는 그대로 두겠습니다.

컴파일에 적합한 코드를 첨부해 보겠습니다(텔레패스는 지루하니까요).
 

안녕하세요, 다음과 같은 문제가 있습니다.

나는 끝까지 지침에 따라 모든 단계를 수행했습니다. EA를 컴파일하고 테스트를 시도했는데 테스트 기간 동안 거래가 발생하지 않았으며 "전문가를 초기화 할 수 없음"오류로 테스트 된 유전자 통과 (nn, 서열 번호)가 오류가 발생했습니다.

기사와 함께 제공된 ma_cross.mqh 신호에서 전문가 어드바이저를 컴파일하려고 시도했지만 동일한 오류가 발생했습니다. 그리고 마지막으로 기사와 함께 제공된 기성품 Expert Advisor를 시도했지만 다시 같은 오류가 발생했습니다 !!! 무엇이 문제인가요, 알려주시겠어요?


 
제공된 사용자 지정 인디케이터 "사용자 지정 이동평균.mq5"를 다시 컴파일해 보세요. 사용자 지정 이동평균.ex5 파일의 버전이 컴파일러의 현재 버전과 일치하지 않으면 생성된 Expert Advisor를 초기화하는 동안 인디케이터 핸들이 생성되지 않습니다. 이 경우가 발생한 것 같습니다.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

도움을 주셔서 감사합니다. 다시 컴파일했지만 문제는 남아 있습니다. 또한 공식 메타 트레이더 사이트에서 일주일 전에 메타 트레이더를 다운로드 했으므로 구식이 될 시간이 없었는지 의심 스럽습니다.

또한 두 대의 다른 컴퓨터에서이 Expert Advisor를 테스트하려고했습니다.

 
danielalmaty:

도움을 주셔서 감사합니다. 다시 컴파일했지만 문제는 남아 있습니다. 또한 공식 메타 트레이더 사이트에서 일주일 전에 메타 트레이더를 다운로드 했으므로 구식이 될 시간이 없었는지 의심 스럽습니다.

또한 두 대의 다른 컴퓨터에서이 Expert Advisor를 테스트하려고했습니다.

최적화가 아닌 단일 테스트를 실행해야합니다. 로그에는 Expert Advisor가 초기화되지 않은 이유에 대한 자세한 정보가 포함됩니다.
 

최적화없이 단일 테스트를 실행하려고 시도했고 오류없이 모든 것이 원활하게 진행되었지만 전체 기간 동안 테스트에서 단일 거래가 이루어지지 않았습니다.

 
danielalmaty:

최적화 없이 단일 테스트를 실행해 보았는데 오류 없이 모든 것이 원활하게 진행되었지만 전체 기간 동안 테스트에서 단 한 건의 거래도 이루어지지 않았습니다.

전문가 어드바이저 설정을 보여주고 어떤 트레이딩 서버에서 테스트를 실행했는지 알려주시겠습니까? 활성 계좌가 있나요?
 

MIGBank-Demo서버에서 테스트를 시작합니다.

Expert Advisor의 설정은 다음과 같습니다.

//+------------------------------------------------------------------+
//| 입력|
//+------------------------------------------------------------------+
//--- 전문가용 입력
input string         Expert_Title             ="ssssa";  // 문서 이름
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- 메인 신호용 입력
input int            Signal_ThresholdOpen     =10;       // 개방할 신호 임계값 [0...100] 설정
input int            Signal_ThresholdClose    =10;       // 닫을 신호 임계값 [0...100] 설정
input double         Signal_PriceLevel        =0.0;      // 거래 체결을 위한 가격 수준
input double         Signal_StopLevel         =50.0;     // 손절매 수준(포인트 단위)
input double         Signal_TakeLevel         =50.0;     // 수익 수준(포인트 단위)
input int            Signal_Expiration        =4;        // 대기 주문 만료(막대 표시)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) 빠른 MA의 기간
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 빠른 MA의 방법
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) 느린 MA의 기간
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 느린 MA의 메서드
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) Weight [0...1.0]
//--- 돈에 대한 입력
input double         Money_FixLot_Percent     =10.0;     // 퍼센트.
input double         Money_FixLot_Lots        =0.1;      // 고정 볼륨

앞서 말했듯이 문서와 함께 제공된 Expert Advisor를 실행해 보았는데 동일한 결과가 나왔습니다. 따라서 기사에서 파일을 다운로드하여 설정을 확인할 수 있습니다.