기고글 토론 "MQL5 Cookbook: 거래 수준을 설정/수정할 때 오류를 피하는 방법" - 페이지 2

 
tatankaska:
안녕하세요, 골드 전략 테스터에서 전문가 조언을 테스트할 때 항상 포지션 개설 실패 - 잘못된 스톱 - 포지션이 개설되지 않았습니다라는 메시지가 표시됩니다. 무엇이 잘못되었나요? 이러한 유형의 오류를 피하기 위해 작성되었나요?
도움을 드리기 위해 몇 가지 코드가 필요합니다. 가장 가능성이 높은 것은 코드에 오류가 있다는 것입니다. 스톱이 최소 허용 거리보다 큰지, 혹시라도 매수 및 매도 스톱을 잘못 배치하지 않았는지 확인하세요. 또한 브로커가 포지션 개시 시 스톱 지정을 허용하는지 확인하십시오. 일부 브로커는 기존 포지션에만 스톱을 추가해야 합니다(소위"시장가 체결").
 
marketeer:
도움을 드리기 위해 몇 가지 코드가 필요합니다. 가장 가능성이 높은 것은 코드에 오류가 있다는 것입니다. 스톱이 최소 허용 거리보다 큰지, 혹시라도 매수 및 매도 스톱을 잘못 배치하지 않았는지 확인하세요. 또한 브로커가 포지션 개시 시 스톱 지정을 허용하는지 확인하십시오. 일부 브로커는 기존 포지션에만 스톱을 추가해야 합니다(소위"시장가 실행").

안녕하세요 저는 변경없이 거래 수준을 설정 / 수정할 때 오류를 피하는 방법 (Positionpropertiesplus) 기사에 첨부 된 전문가 고문 만 테스트했습니다. Instaforex의 Instatrader 플랫폼. 이 어드바이저의 기능은 잘못된 중지 매개 변수를 설정하면 허용되는 최저값으로 설정되도록 작성되었습니다. 그래서 정상적으로 오류 프롬프트가 표시되지 않아야합니다 - 그것은 외환 쌍에 의해 사실입니다. 그러나이 플랫폼의 GOLD는 포지션 프로퍼티 플러스 EA가 스톱으로 포지션을 열려고 시도 할 때마다 오류 프롬프트가 유효하지 않은 중지 및 전략 테스터에 포지션이 열려 있지 않다는 메시지를 표시합니다. 인스타 트레이더 플랫폼과 브로커에 문제가있는 경우입니까? 골드 기호 속성에는 즉시 실행이 기록되어 있습니다.

다음은 언급 된 EA의 손절매 계산 기능의 예입니다 - 언급 된 기사에 첨부 된 EA를 변경없이 사용했으며 외환 쌍 대신 GOLD 만 사용했습니다:

//+------------------------------------------------------------------+

//| 손절매 값 계산하기|

//+------------------------------------------------------------------+

double CalculateStopLoss(ENUM_ORDER_TYPE order_type)

  {

손절매가 필요한 경우 //---

   if(StopLoss>0)

     {

      //--- 계산된 손절매 값의 경우

      double sl=0.0;

      //--- 매수 포지션의 값을 계산해야 하는 경우

      if(order_type==ORDER_TYPE_BUY)

        {

         // 레벨 계산

         sl=NormalizeDouble(sym_ask-CorrectValueBySymbolDigits(StopLoss*sym_point),sym_digits);

         //--- 계산된 값이 스톱 레벨의 하한값보다 낮으면 반환합니다.

         // 값이 더 크거나 같으면 조정된 값을 반환합니다.

         return(sl<sym_down_level ? sl : sym_down_level-sym_offset);

        }

      //--- SELL 포지션의 값을 계산해야 하는 경우

      if(order_type==ORDER_TYPE_SELL)

        {

         //--- 레벨 계산

         sl=NormalizeDouble(sym_bid+CorrectValueBySymbolDigits(StopLoss*sym_point),sym_digits);

         //--- 계산된 값이 스톱 레벨의 상한보다 높으면 반환합니다.

         // 값이 더 낮거나 같으면 조정된 값을 반환합니다.

         return(sl>sym_up_level ? sl : sym_up_level+sym_offset);

        }

     }

//---

   return(0.0);

  } 
 
tatankaska:
...

트레이딩, 자동매매 시스템 및 테스트 트레이딩 전략에 관한 포럼


안녕하세요,

코드를 게시할 때 SRC 버튼을 사용해 주세요. 감사합니다.


이번에는 제가 편집했습니다.


 
tatankaska:

안녕하세요 저는 변경없이 거래 수준을 설정 / 수정할 때 오류를 피하는 방법 (Positionpropertiesplus) 기사에 첨부 된 전문가 고문 만 테스트했습니다. Instaforex의 Instatrader 플랫폼. 이 어드바이저의 기능은 잘못된 중지 매개 변수를 설정하면 허용되는 최저값으로 설정되도록 작성되었습니다. 그래서 정상적으로 오류 프롬프트가 표시되지 않아야합니다 - 그것은 외환 쌍에 의해 사실입니다. 그러나이 플랫폼의 GOLD는 포지션 프로퍼티 플러스 EA가 스톱으로 포지션을 열려고 시도 할 때마다 오류 프롬프트가 유효하지 않은 중지 및 전략 테스터에 포지션이 열려 있지 않다는 메시지를 표시합니다. 인스타 트레이더 플랫폼과 브로커에 문제가있는 경우입니까? 골드 기호 속성에는 즉시 실행이 기록되어 있습니다.

다음은 언급 된 EA의 손절매 계산 기능의 예입니다 - 언급 된 기사에 첨부 된 EA를 변경없이 사용했으며 외환 쌍 대신 GOLD 만 사용했습니다:

예, 그렇습니다. Instatrader에서 GOLD로 스톱은 포지션 오픈 후에만 설정할 수 있습니다. 스톱없이 포지션이 열리고 수정 된 후 열리면 모든 것이 정상입니다. 감사합니다.
 

첨부된 EA의 스톱(SL/TP) 계산에 대해 다시 한 번 설명하자면, 심볼 포인트 = 심볼 틱 크기인 상품에 의해서만 올바르게 계산됩니다. GOLD는 그렇지 않습니다.

이 경우 (골드 기준) 스톱은 유효한 심볼 틱 크기로 수정해야 하며, 그렇지 않으면 오류 메시지 - 유효하지 않은 스톱이 표시됩니다.

따라서 GOLD에 의한 오류 프롬프트는 시장가 실행의 결과가 아닙니다. EA를 GOLD와 함께 사용하려면 SL/TP 계산에 약간의 수정이 필요합니다.

 
포지션 청산은 어떻게 하나요? 전문가 조언자에서 포지션을 청산하는 조건(신호)이 있다면 어떻게 청산하는지, 그러한 예는 어디에서 볼 수 있나요?
 
Nauris:
포지션 청산은 어떻게 하나요? 전문가 조언자에서 포지션을 청산하는 조건(신호)이 있는 경우 어떻게 해야 하며, 그러한 예는 어디에서 볼 수 있나요?
이 기사에서는 표준 라이브러리의 CTrade 클래스가 사용됩니다. 여기에는 PositionClose 메서드가 있습니다. 이를 사용할 수 있습니다.
 
이를 코드로 수정합니다.

//+------------------------------------------------------------------+
//| 정보 패널 설정하기|
//|------------------------------------------------------------------+
void SetInfoPanel()
  {
//--- 시각화 또는 실시간 모드
   if(ShowInfoPanel && (IsVisualMode() || IsRealtime()))
     {
     // SetInfoPanel() 함수의 나머지 코드
     // ...
     }
  }