마지막 종료 거래 확인하기 - 메타트레이더 5를 위한 코드

Mike 2024.04.22 03:51 42 0 0
첨부파일

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 마지막으로 종료된 거래의 데이터를 확인하는 방법에 대해 알아보려고 합니다. 이 코드를 사용하면 반복문 없이도 간편하게 마지막 거래 정보를 가져올 수 있습니다.

코드 사용 방법

  • 현재 날짜의 시작 시간을 설정할 변수를 생성합니다. (이건 선택 사항입니다.)
  • 차트 출력을 위해 사용할 기타 변수를 생성합니다. (이것도 선택 사항입니다.)
  • 이 코드를 OnTick(); 함수 안에 넣으면 매 틱마다 결과를 보여줍니다. 바당 한 번만 설정할 수도 있습니다. 바당 한 번으로 설정할 수 있습니다.
// 변수 설정
string DayStart = "00:00"; // 하루 시작 시간
double LastClosed_Profit; // 마지막 종료 거래의 수익
string TradeSymbol, TradeType;

// 전문가 초기화 --------------------
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

// 전문가 비활성화 -------------------
void OnDeinit(const int reason)
  {
  }

// 전문가 OnTick --------------------------
void OnTick()
  {
// 마지막 종료 거래 확인.
   CheckLastClosed();
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void CheckLastClosed()
  {
   datetime HistoryTime = StringToTime(DayStart);

// 시작일부터 현재까지의 거래 이력
   if(HistorySelect(HistoryTime,TimeCurrent))
     {
      int Total = HistoryDealsTotal();

      // 마지막 거래의 티켓 번호를 가져와서 선택합니다.
      ulong Ticket = HistoryDealGetTicket(Total -1);

      // 필요한 정보를 가져옵니다.
      LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);
      TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);

      // 매도 거래 식별
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)
        {
         TradeType = "매도 거래";
        }

      // 매수 거래 식별
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)
        {
         TradeType = "매수 거래";
        }

      // 차트 출력
      Comment("\n","총 거래 수 - :  ", Total,
              "\n","마지막 거래 티켓 - :  ", Ticket,
              "\n", "마지막 종료 수익 -:  ", LastClosed_Profit,
              "\n", "마지막 거래 유형 -:  ", TradeType);

     }
  }
//+------------------------------------------------------------------+

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

전체 거래 이력을 확인하고 싶다면, HistorySelect(); 함수를 아래와 같이 사용하시면 됩니다.

// 전체 이력 가져오기
HistorySelect(0,TimeCurrent());
목록
댓글 0