찻주전자의 질문 - 페이지 137

 
alph :

어드바이저가 5-6시간 안에 포지션을 닫을 수 있는 코드를 알려주시겠습니까? 또는 링크를 게시하십시오.

관심이 있으시면 직접 시도하십시오. 먼저 PositionSelect() 함수를 사용하여 열린 위치를 확인합니다. 성공하면 PositionGetInteger( POSITION_TIME )를 사용하여 포지션 오픈 시간을 알아내고 약 5-6시간 동안 상태를 확인합니다. 포지션을 청산해야 할 때라면 포지션 유형( ENUM_POSITION_TYPE ) PositionGetInteger( POSITION_TYPE ) 및 해당 볼륨 PositionGetDouble( POSITION_VOLUME)을 찾으십시오. 그런 다음 동일한 볼륨으로 반대 방향으로 주문합니다. 포지션 마감 방법의 예는 MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX)에서 찾을 수 있습니다 .

 
joo :
감사합니다, 그것이 당신에게 필요한 것 같습니다.

설마.

"마우스 클릭" 이벤트를 수신하려면 OnChartEvent() 를 사용해야 하지만 스크립트에서는 사용할 수 없습니다. 어떻게 해야 할까요? 이것은 보편적인 기능이 작동하지 않는다는 것을 의미합니까?

 
joo :

설마.

"마우스 클릭" 이벤트를 받으려면 OnChartEvent()를 사용해야 하는데 스크립트에서는 사용할 수 없습니다. 어떻게 해야 할까요? 이것은 보편적인 기능이 작동하지 않는다는 것을 의미합니까?

그런 다음 GetKeyState + GetPosition + 그래픽 개체의 알려진 좌표를 사용합니다.
 
sergeev :
그런 다음 GetKeyState + GetPosition + 그래픽 개체의 알려진 좌표를 사용합니다.

윈에이피?

그게 다야, 목록에서 파일을 보고 선택하는 범용 기능(일종의 미니 파일 관리자)을 만들고 싶은 마음이 사라졌습니다. :(

 
joo :

윈에이피?

그게 다야, 목록에서 파일을 보고 선택하는 범용 기능(일종의 미니 파일 관리자)을 만들고 싶은 마음이 사라졌습니다. :(

그럼 왜 스크립트입니까? 한 틱이 아닌 사용자의 선택을 기다리는 동안 기능을 어떻게 만들 것인가?
 
sergeev :
그럼 왜 스크립트입니까?
그는 진드기에 관심이 없기 때문에 - 진드기가 똑딱거리거나 똑딱거리지 않습니다.
 
Yedelkin :

포지션 마감 방법의 예는 MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX)에서 찾을 수 있습니다 .

고맙습니다.

그러나 수업에서는 여전히 상호 이해를 얻지 못합니다. 비록 내가 얻는 것은 일반적으로 어딘가에서보고 알아 낸 사실 때문입니다.

 
joo :
그는 진드기에 관심이 없기 때문에 - 진드기가 똑딱거리거나 똑딱거리지 않습니다.
전문가는 신경 쓰지 않습니다. 스크립트는 왜?
 
alph :

그러나 수업에서는 여전히 상호 이해를 얻지 못합니다. 비록 내가 얻는 것은 일반적으로 어딘가에서보고 알아 낸 사실 때문입니다.

글쎄, 모든 클래스 메서드 는 일반 코드입니다. 이 코드를 구문 분석해 보십시오.

   MqlTradeRequest   m_request={0};         // request data
   MqlTradeResult    m_result={0};          // result data
   MqlTradeCheckResult m_check_result={0};  // result check data
   bool   partial_close=false;
   int    retry_count  =10;
   uint   retcode      =TRADE_RETCODE_REJECT;
  
     do
     {
       //--- checking
       if ( PositionSelect (symbol))
        {
         if (( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
           {
             //--- prepare request for close BUY position
            m_request.type = ORDER_TYPE_SELL ;
            m_request.price= SymbolInfoDouble (symbol, SYMBOL_BID );
           }
         else
           {
             //--- prepare request for close SELL position
            m_request.type = ORDER_TYPE_BUY ;
            m_request.price= SymbolInfoDouble (symbol, SYMBOL_ASK );
           }
        }
       else
        {
         //--- position not found
         m_result.retcode=retcode;
         return ( false );
        }
       //--- setting request
      m_request.action      = TRADE_ACTION_DEAL ;
      m_request.symbol      =symbol;
      m_request.deviation   =(deviation== ULONG_MAX ) ? m_deviation : deviation;
      m_request.type_filling=m_type_filling;
      m_request.volume      = PositionGetDouble ( POSITION_VOLUME );
       //--- check volume
       double max_volume= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MAX );
       if (m_request.volume>max_volume)
        {
         m_request.volume=max_volume;
         partial_close= true ;
        }
       else
         partial_close= false ;
       //--- order check
       if (! OrderCheck (m_request,m_check_result))
        {
         //--- copy return code
         m_result.retcode=m_check_result.retcode;
         return ( false );
        }
       //--- order send
       if (! OrderSend (m_request,m_result))
        {
         if (--retry_count!= 0 ) continue ;
         if (retcode== TRADE_RETCODE_DONE_PARTIAL )
            m_result.retcode=retcode;
         return ( false );
        }
      retcode= TRADE_RETCODE_DONE_PARTIAL ;
       if (partial_close) Sleep ( 1000 );
     }
   while (partial_close);
 
sergeev :
전문가는 신경 쓰지 않습니다. 스크립트는 왜?
스크립트가 아닌 경우 OnChartEvent() 에 대한 모든 논리를 실행/호출합니까?