기고글 토론 "MQL5 Cookbook - MQL5의 다중 통화 Expert Advisor 및 대기 중인 주문 작업"

 

새로운 기고글 MQL5 Cookbook - MQL5의 다중 통화 Expert Advisor 및 대기 중인 주문 작업 가 게재되었습니다:

이번에는 보류 중인 주문 Buy Stop 및 Sell Stop 작업을 기반으로 하는 거래 알고리즘을 사용하여 다중 통화 Expert Advisor를 만들 것입니다. 이 글은 다음 사항을 고려합니다: 지정된 시간 범위의 거래, 보류 주문 배치/수정/삭제, 이익 실현 또는 손절매에서 마지막 포지션이 마감되었는지 확인하고 각 기호에 대한 거래 내역 제어.

  • 지정된 시간 범위에서 거래합니다. 거래 시작 및 종료 시간을 설정할 수 있는 기능을 만들어 보겠습니다. 예를 들어, 유럽 또는 미국 거래 세션의 시간이 될 수 있습니다. 확실히 Expert Advisor의 매개변수를 최적화할 때 가장 적합한 시간 범위를 찾을 수 있는 기회가 있을 것입니다.
  • 보류 중인 주문을 배치/수정/삭제합니다.
  • 거래 이벤트 처리: 마지막 포지션이 이익실현 또는 손절매에서 마감되었는지 확인하고 각 기호에 대한 거래 내역을 제어합니다.


    작성자: Anatoli Kazharski

     

    시간.

    시간만으로는 충분하지 않으며 분 단위도 필요합니다. 예를 들어 시장이 분 단위로 개장하고 마감하는 경우입니다.

    분 단위보다 자정까지 거래해야 하는 경우가 훨씬 더 많기 때문에 이 기능은 의문을 제기합니다.

    bool IsInTradeTimeRange(int symbol_number)
      {
    //--- 시간대 거래가 활성화된 경우
       if(TradeInTimeRange[symbol_number])
         {
          //--- 날짜 및 시간 구조
          MqlDateTime last_date;
          //--- 최신 날짜 및 시간 데이터 가져오기
          TimeTradeServer(last_date);
          //--- 승인된 시간 범위를 벗어남
          if(last_date.hour<StartTrade[symbol_number] ||
             last_date.hour>=EndTrade[symbol_number])
             return(false);
         }
    //--- 허용된 시간 범위에서
       return(true);
      }
     
    TheXpert:

    시간.

    시간만으로는 충분하지 않으며 분 단위도 필요합니다. 예를 들어 시장이 분 단위로 개장하고 마감하는 경우입니다.

    이 기능은 분 단위보다 자정까지 훨씬 더 자주 거래해야 한다는 의문을 제기합니다.

    네, 저도 동의합니다. 나중에 새로운 방식으로 시각화해 보겠습니다.

    그렇다면 열거형 대신 사용자가 직접 시간을 지정하는 줄을 만들어야 할 것 같습니다. 예를 들어"9: 35". 그렇지 않으면 매개 변수 목록이 분을 지정하기 위해 (문서 체계에서) 매개 변수 세 개가 더 확장됩니다.

    시간을 지정할 수 있는 편리한 표준 가능성이 있으면 좋을 것 같습니다. 이제 날짜 시간이 있으니 시간을 정해야 합니다. )

     

    사실 모두 프로그램 코드이기 때문에 기사로 작성하기에는 적합하지 않고 코드 베이스 섹션을 위한 것입니다.

     
    revers45:

    사실 모두 프로그램 코드로, IMHO에서는 아티클이라기보다는 코드 베이스 섹션을 위한 것입니다.

    아, 그렇군요. 그럼 수고하셨습니다. 코드 베이스에 모든 것을 작성하고 게시하세요. ;)
     
    revers45:

    실제로는 모두 프로그램 코드이며, IMHO에서는 기사로 작동하지 않고 코드 베이스 섹션을 위한 것입니다.

    이러한 기사는 언어를 배우는 데 편리합니다.

    기사를 따로 스크롤하고 다른 파일에서 코드를 분리하는 것보다 텍스트와 코드를 모두 읽고 일러스트를 한 번에 보는 것이 더 쉽습니다.

    그러나 일부 설명 부분이 누락되었다는 데 동의합니다. 일반 텍스트 형태의 개념 및 구현의 주요 요점.

     
    komposter:

    이러한 기사는 언어 학습에 편리합니다.

    기사를 따로 스크롤하고 다른 파일에서 코드를 분리하는 것보다 텍스트와 코드를 모두 읽고 일러스트를 한 번에 보는 것이 더 쉽습니다.


    그러나 일부 설명 부분이 누락되었다는 데 동의합니다. 개념과 구현의 주요 요점을 일반 텍스트 형식으로 설명합니다.

    이 일련의 기사는 순차적 언어 학습을 위한 것입니다. 이 계획은 이전 기사 중 하나에서 설명되었으며 아마도 모든 것을 다시 설명하는 것은 의미가 없을 것입니다. 기사의 시작 부분에는이 계획이 자세히 고려 된 기사에 대한 링크가 있습니다. 여기에 추가 기능이 작성되었으며 몇 가지 작은 변경이 이루어졌습니다. 모든 것이 간단하고 불필요한 것은 없으며 코드의 모든 줄에 주석이 달렸습니다. 그냥 집어 들고 사용할 수있는 다양한 기성품 구성표가 많이 있다는 것이 좋다고 생각합니다.

    이 글에 또 무엇이 추가될 수 있었을지 상상할 수 없습니다. 하지만 괜찮습니다. ))

     
    여러 심볼에 왜 이렇게 많은 코드가 필요한가요? 각 심볼에 대해 하나의 전문가 어드바이저를 넣는 것이 더 쉽지 않을까요? 그러면 프로그램이 더 빨리 실행될 것이라고 생각합니다. 이와 관련하여, #define NUMBER_OF_SYMBOLS 하나 변수를 넣는 방법을 제외하고 보류 주문 작업을 위해 이러한 함수를 하나의 심볼에만 사용할 수 있도록 변환하는 방법을 알려주실 수 있나요?
     
    kuva:
    여러 심볼에 대한 코드가 많은 이유는 무엇인가요?

    테스터에서 한 번에 여러 심볼에 대해 시스템을 테스트할 수 있도록 하기 위해서입니다.

    kuva:
    다른 심볼에 하나의 전문가 자문가를 배치하는 것이 더 간단하지 않을까요? 제 생각에는 프로그램을 실행하는 것이 더 빠를 것 같습니다. 이와 관련하여 #define NUMBER_OF_SYMBOLS 1 변수를 넣는 방법을 제외하고이 코드를 하나의 문자에서만 작동하도록 변환하는 방법을 알려주시겠습니까?

    하나의 문자에서만 작동하게 하려면 문자 검색과 관련된 모든 루프를 제거하면 됩니다. 일부 함수에서는 문자 시퀀스 번호의 첫 번째 매개변수를 제거해야 합니다.

    또한 외부 매개변수 값으로 초기화된 배열도 더 이상 필요하지 않습니다. 배열이 사용되었던 함수에서는 외부 매개변수의 변수로 대체해야 합니다.

    [삭제]  
    실제 틱에 대한 포워드 테스트를 수행하면 최적화 결과가 반대입니다.
     
    symbol_number를 통해 심볼을 검색하는 것은 매우 불편합니다. 예전에는 이 방식을 사용했지만 지금은 OOP로 전환했습니다. 각 심볼 = 클래스의 인스턴스. 런타임에 각 OnChartEvent 이벤트에서 클래스의 인스턴스를 순서대로 검색합니다. 조금 더 빠르게 작동합니다.