1. 계정의 모든 심볼의 모든 포지션 정보들 확보하기. 


#include <Trade\PositionInfo.mqh>
 
CPositionInfo m_PosiInfo; 

int Proc_SupplyPosition()
{
   int num_position_all_symbol = PositionsTotal(); // 계좌의 모든 포지션 수량 반환됨. 
   
   
   for(int idx_posi = 0 ; idx_posi < num_position_all_symbol; idx_posi++)
   {
      m_PosiInfo.SelectByIndex(idx_posi); // 인덱스로 포지션 선택하고, 
      
      Proc_GetInfoPosi(); // 현재 선택된 포지션 1개에서 필요한 정보 확보. 

   }
         
   return 1; 
}

void Proc_GetInfoPosi()
{
	// 필요한정보들 m_PosiInfo 이용하여 확보. 
   long ticket_posi = m_PosiInfo.Ticket(); 
   long time_msec_posi_open = m_PosiInfo.TimeMsc();
   ...
   
}

 

 

 

 

2. EA 가 배치된 챠트의 심볼의 포지션 정보들만 확보하기 

- 상기 1의 for 루프내에서 선택된 포지션의 심볼이 챠트의 심볼인것만 선택적으로 처리하는부분 추가됨. 

 

#include <Trade\PositionInfo.mqh>
 
CPositionInfo m_PosiInfo; 

int Proc_SupplyPosition()
{
   int num_position_all_symbol = PositionsTotal(); // 계좌의 모든 포지션 수량 반환됨. 
   
    
   for(int idx_posi = 0 ; idx_posi < num_position_all_symbol; idx_posi++)
   {
      m_PosiInfo.SelectByIndex(idx_posi); // 인덱스로 포지션 선택하고, 
      
      if(m_PosiInfo.Symbol() == _Symbol) //포지션의 심볼이 ea 가 적용중인 챠트의 심볼과 같은것만 검출. 
      {
         Proc_GetInfoPosi(); // 현재 선택된 포지션에서 정보 확보. 
      }      

   }
         
   return 1; 
}

void Proc_GetInfoPosi()
{
	// 필요한정보들 m_PosiInfo 이용하여 확보. 
   long ticket_posi = m_PosiInfo.Ticket(); 
   long time_msec_posi_open = m_PosiInfo.TimeMsc();
   ...
   
}

 

 

 

 


첫 등록 : 2020.11.08

최종 수정 : 

단축 주소 : https://igotit.tistory.com/2689

 


 

Posted by 리치굿맨

댓글을 달아 주세요

  1. 안녕하세요?

    왜 리턴 1을 반환하나요???

    2020.11.23 22:21 [ ADDR : EDIT/ DEL : REPLY ]
  2. 안녕하세요?

    함수를 종료시키지 않아서 계속 변수를 써먹기 위함인가요?

    2020.11.23 22:23 [ ADDR : EDIT/ DEL : REPLY ]
    • 상기 예의 함수 반환값은 별다른 의미없고 단순히 제가 코딩하는 습관 중의 하나. 초기 함수 선언시 함수내부 실행과정 중 오류있는 경우 음수 반환시키고 호출한곳에서 이 반환값 점검할 의도였으나, 상기예에서 함수는 막상 다 구현해보고 나니 딱히 오류 검출 할 필요성 없어서 리턴값은 1만 있는 상태. 이런 경우 함수 선언을 다시 void 로 수정 해도 되나 번잡스러우니 그냥 초기 선언을 수정없이 내버려 둔거예요.

      2020.11.24 12:46 신고 [ ADDR : EDIT/ DEL ]