기고글 토론 "MQL5 Cookbook: 다중 통화 Expert Advisor - 간단하고 깔끔하며 빠른 접근" - 페이지 3

 
//+------------------------------------------------------------------+
//|| 트레일링 스톱 레벨을 계산합니다.
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- 계산용 변수
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // 낮은 구매 가치
   double    sell_point  =high[symbol_number].value[1]; // 높은 판매 가치

그렇게 하는 것은 올바르지 않습니다. 포지션과 바 가격이 갭으로 열리면 스톱로스가 올바르게 설정되지 않습니다.

 
Jose:

이 기사는 깔끔하고 따라하기 쉬우며 .set 파일에 설정을 제공합니다. 심볼 실행 모드, 특히 즉시 또는 시장가인지 여부를 확인하고 그 후에야 주문을 열 수 있도록하는 조건에 문제가 있었기 때문에 제거해야했지만 모든 것이 잘 작동했습니다 .

질문이 있습니다. 저는 이와 같은 다양한 고급 접근 방식을 보았는데, 일부 기능을 복제하는 데 많은 코드 (및 시간)를 소비하더라도 제공된 Expert, ExpertSignal, ExpertTrade.... 구조를 무시하고 처음부터 구축되었습니다. 누구든지 제게 이것을 정당화 할 수 있습니까?

안녕하세요 여러분!

이 EA를 테스트하려고 하는데 전략 테스터에서 다음과 같은 메시지가 나타납니다: "포지션을 여는 동안 오류가 발생했습니다: 4753 - 1 포지션을 찾을 수 없음". 이유를 모르겠습니다. 이것은 "TradeFunctions.mqh" 파일의 159번째 줄에서 "trade.PositionOpen" 함수가 실행될 때 발생합니다. 누군가 도와주실 수 있나요?

 

저자가 설명한 대로 포지션 반전이 발생하는 위치를 알려주시겠어요? 다음은 설명과 함께 그의 코드입니다.

//--- 포지션이 있는 경우
   else
     {
      //--- 위치 유형 가져오기
      GetPositionProperties(symbol_number,P_TYPE);
      //--- 위치가 신호와 반대이고 위치 반전이 활성화된 경우
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- 위치 볼륨 가져오기
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- 볼륨 조절
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- 위치를 반대로 해보겠습니다.
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) 함수를 살펴보세요 ;

//+------------------------------------------------------------------+
//|| 포지션 열기|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- 거래 구조에서 마직 번호 설정하기
   trade.SetExpertMagicNumber(MagicNumber);
//--- 미끄러짐 크기를 포인트 단위로 설정합니다.
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- 즉시 실행 및 시장가 실행 모드
// *** 803 빌드부터 손절매 및 이익실현 레벨 *** ***.
// ***는 SYMBOL_TRADE_EXECUTION_MARKET 모드에서 포지션을 개설할 때 설정할 수 있습니다 ***.
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- 포지션이 열리지 않으면 이에 대한 메시지를 인쇄합니다.
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("포지션 개설 시 오류: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
그냥 잠금입니다! 반전이 없습니다... 로트 증분도 마찬가지입니다! 제가 틀린 건 아닌지 설명해 주시겠어요?
 
Tango_X:

저자가 설명한 대로 포지션 반전이 발생하는 위치를 알려주시겠어요? 다음은 설명과 함께 그의 코드입니다.

OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) 함수를 살펴보세요;

그냥 잠금입니다! 반전이 없습니다... 로트 증분도 마찬가지입니다! 제가 틀린 건가요?

거래 계좌에는 네팅과 헤지의 두 가지 유형이 있습니다.

그 중액션네팅에 있었습니다.헤지에 있습니다.
매수 1.0매도 2.01.0 매도1.0 매수, 2.0 매도
 
Vladimir Karputov:

트레이딩 계좌에는 네팅과 헤지의 두 가지 유형이 있습니다.

네팅 계좌는액션네팅 개시헤지 개시
매수 1.0Sell 2.01.0 매도1.0 매수 및 2.0 매도

구매 완료! 감사합니다!

 
"TimeframeToString"은 존재하지 않으며 문서에 선언되어 있지 않으므로 "EnumToString"으로 대체해 주세요.