초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 897

 
분명해 보입니다. 아마도 그럴 것입니다. 다시 한번 감사합니다!
 
Alexey Viktorov :
할 수 있다.

그러나 ~함에 따라?

 
Andy :

그러나 ~함에 따라?

Barabashka는 이미 모든 것을 말했습니다.

 
Alexey Kozitsyn :

위치 ID는 변경되지 않습니다. 그것에 대한 거래를 찾으십시오.

고맙습니다. 청산 후 함수는 의도한 대로 거래의 평균 가격이 아니라 재개된 위치 의 가격을 반환합니다. 어디에 오류가 있는지 알려주세요.

double Aver_Pr_sell_nett()
  {
   double total_price_multiply_volume_sell   = 0.0;
   double total_volume_sell                  = 0.0;
   double net_price_sell_=0.0;
   string symb=_Symbol;
   int    total       =0;  // 

   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         //--- Получим количество сделок в полученном списке
         total=HistoryDealsTotal();
         //--- Пройдем по всем сделкам в полученном списке
         for(int i=0; i<total; i++)
           {
            ulong dt = HistoryDealGetTicket(i);
            long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
            if(did==pt && in_out==DEAL_ENTRY_IN)
              {
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  total_price_multiply_volume_sell+=PositionGetDouble(POSITION_PRICE_OPEN)*PositionGetDouble(POSITION_VOLUME);
                  total_volume_sell+=PositionGetDouble(POSITION_VOLUME);
                  if(total_price_multiply_volume_sell!=0 && total_volume_sell!=0)
                    {
                     net_price_sell_=total_price_multiply_volume_sell/total_volume_sell;
                     
                    };
                 }
              }
           }
        }
     }
//---
   return(net_price_sell_);
  }
 
Sile Si :

고맙습니다. 청산 후 함수는 의도한 대로 거래의 평균 가격이 아니라 재개된 위치 의 가격을 반환합니다. 어디가 잘못되었는지 알려주세요.

직책으로 작업하는 경우 - 직책으로 작업하십시오. 거래를 하고 있다면 거래를 하십시오. 거래는 포지션 가격이 아니라 거래 가격을 보여줍니다.

 
Alexey Kozitsyn :

직책으로 일하는 경우 - 직책으로 일하십시오. 거래를 하고 있다면 거래를 하십시오. 거래는 포지션 가격이 아니라 거래 가격을 보여줍니다.

포지션 개설과 관련된 거래를 선택하지 않았습니까?

 
Sile Si :

포지션 개설과 관련된 거래를 선택하지 않았습니까?

알고리즘은 간단합니다. 포지션 ID로 포지션을 선택하십시오 - 모든 거래. 포지션의 볼륨을 형성하는 트랜잭션만 작동하도록 선택합니다. 청산 거래를 제외합니다.

포지션을 선택하면 거래를 받고 POSITION의 가격에 대해 거래를 요청합니다! 그리고 각 특정 거래의 가격이 필요합니다.

 
Alexey Kozitsyn :

그리고 각 특정 거래의 가격이 필요합니다.

죄송합니다. 포지션 대신 거래를 선택하는 방법을 이해하지 못합니다. 보여주세요)

 
Sile Si :

죄송합니다. 포지션 대신 거래를 선택하는 방법을 이해하지 못합니다. 보여주세요)

 ulong dt = HistoryDealGetTicket (i);
 
Alexey Kozitsyn :

네, 그게 제가 하는 일입니다

 ulong dt = HistoryDealGetTicket (i);
long did = HistoryDealGetInteger (dt, DEAL_POSITION_ID );

그런 다음 거래 ID를 포지션 티켓과 비교하고 거래를 선택했다고 생각합니다.

그러나 위치의 가격을 반환합니다. 왜요?

사유: