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

 
사람들을 도와주세요. 거래가 열렸던 가격을 구하려고 합니다. 처음에는 CTrade를 통해 거래했지만 trade.resultprice는 0이었습니다. 나는 MqlTrade를 통해 그것을 하기 시작했고 테스터에서 result.price가 정상적으로 표시되었지만 라이브에서는 0이 되었습니다. 저는 OnTradeTransaction 을 통해 하였지만 라이브에서는 매우 빠른 거래로 0으로 표시되고 자동 거래가 중지되면 마지막 거래의 가격을 표시합니다. 구매 거래가 이루어진 가격을 얻는 방법은 무엇입니까?
 
mikhail_shmakov :
사람들을 도와주세요. 나는 거래가 열린 가격을 얻으려고 노력하고 있습니다. 처음에는 CTrade를 통해 거래했지만 trade.resultprice는 0이었습니다. 나는 MqlTrade를 통해 그것을 하기 시작했고 테스터에서 result.price가 정상적으로 표시되었지만 라이브에서는 0이 되었습니다. 저는 OnTradeTransaction 을 통해 하였지만 라이브에서는 매우 빠른 거래로 0으로 표시되고 자동 거래가 중지되면 마지막 거래의 가격을 표시합니다. 구매 거래가 이루어진 가격을 얻는 방법은 무엇입니까?
 struct MqlTradeTransaction 
  { 
   ulong                          deal;             // Тикет сделки 
   ulong                          order;             // Тикет ордера 
   string                         symbol;           // Имя торгового инструмента 
   ENUM_TRADE_TRANSACTION_TYPE    type;             // Тип торговой транзакции 
   ENUM_ORDER_TYPE                order_type;       // Тип ордера 
   ENUM_ORDER_STATE               order_state;       // Состояние ордера 
   ENUM_DEAL_TYPE                 deal_type;         // Тип сделки 
   ENUM_ORDER_TYPE_TIME           time_type;         // Тип ордера по времени действия 
   datetime                       time_expiration;   // Срок истечения ордера 
   double                         price;             // Цена  
   double                         price_trigger;     // Цена срабатывания стоп-лимитного ордера 
   double                         price_sl;         // Уровень Stop Loss 
   double                         price_tp;         // Уровень Take Profit 
   double                         volume;           // Объем в лотах 
   ulong                          position;         // Тикет позиции 
   ulong                          position_by;       // Тикет встречной позиции 
  };
"매우 빠른 트랜잭션"은 무엇을 의미합니까? OnTradeTransaction은 모든 거래에서 실행됩니다. 거래 유형을 구분하고 TRADE_TRANSACTION_DEAL_ADD에서 가격을 취하기만 하면 됩니다.
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
  • www.mql5.com
Например, при отсылке рыночного ордера на покупку он обрабатывается, для счета создается соответствующий ордер на покупку, происходит исполнение ордера, его удаление из списка открытых, добавление в историю ордеров, далее добавляется соответствующая сделка в историю и создается новая позиция. Все эти действия являются торговыми транзакциями...
 

//+------------------------------------------------------------------+ 
//| Получает текущее количество отложенных ордеров с указанным ORDER_MAGIC      | 
//+------------------------------------------------------------------+ 
int GetOrdersTotalByMagic( long const magic_number) 
  { 
   ulong order_ticket; 
   int total= 0 ; 
//--- пройдем по всем отложенным ордерам 
   for ( int i= 0 ;i< OrdersTotal ();i++) 
       if ((order_ticket= OrderGetTicket (i))> 0 ) 
         if (magic_number== OrderGetInteger ( ORDER_MAGIC )) total++; 
//--- 
   return (total); 
  }
안녕하세요 프로그래머 여러분. 기능 변경을 도와주세요. MQL5 참조 에서 위에 제시된 기능 주어진 Magic에 대한 모든 열린 위치의 수를 계산하도록 하는 방법은 무엇입니까?
 
Kolya32 :
안녕하세요 프로그래머 여러분. 이 기능을 변경할 수 있도록 도와주세요. MQL5 참조 에서 위에 제시된 기능 주어진 Magic에 대한 모든 열린 위치의 수를 계산하도록 하는 방법은 무엇입니까?
최소한 모든 곳에서 Orders***를 Positions***로 변경한 다음 확인해야 합니다.
 
Alexey Viktorov :
최소한 모든 곳에서 Orders***를 Positions***로 변경한 다음 확인해야 합니다.

작동하는 것 같습니다) 이 기능을 MQL5 참고서 에 추가할 수 있습니다. )) 너무 이르긴 하지만 아직 테스트 중입니다.)

 //+------------------------------------------------------------------+ 
//| Получает текущее количество открытых позиций с указанным ORDER_MAGIC      | 
//+------------------------------------------------------------------+ 

int GetPositionsTotalByMagic( long const magic_number)  
  { 
   ulong position_ticket; 
   int total= 0 ; 
//--- пройдем по всем открытым позициям 
   for ( int i= 0 ;i< PositionsTotal ();i++) 
       if ((position_ticket= PositionGetTicket (i))> 0 ) 
         if (magic_number== PositionGetInteger ( POSITION_MAGIC )) total++; 
//--- 
   return (total); 
  } 
 
Kolya32 :

작동하는 것 같습니다) 이 기능을 MQL5 참고서 에 추가할 수 있습니다. )) 너무 이르긴 하지만 아직 테스트 중입니다.)

그러한 사소한 모든 것이 디렉토리에 추가되면 디렉토리는 변소로 바뀝니다. 죄송합니다. 이것은 변경 사항의 품질에 관한 것이 아닙니다.
 
mikhail_shmakov :
사람들을 도와주세요. 나는 거래가 열린 가격을 얻으려고 노력하고 있습니다. 처음에는 CTrade를 통해 거래했지만 trade.resultprice는 0이었습니다. MqlTrade를 통해 시작했는데 테스터에서 result.price가 정상적으로 표시되었지만 라이브에서는 0이 되었습니다 . 저는 OnTradeTransaction 을 통해 하였지만 라이브에서는 매우 빠른 거래로 0으로 표시되고 자동 거래가 중지되면 마지막 거래의 가격을 표시합니다. 구매 거래가 이루어진 가격을 얻는 방법은 무엇입니까?

OrderSend는 주문을 보냅니다. 그런 다음 실행과 기록에 해당 트랜잭션이 나타날 때까지 기다려야 합니다.

이 모든 작업을 올바르게 수행하려면 OnTradeTransaction 명령을 잘 사용하거나 OrderSend에 대해 다소 무거운 코드를 한 번 작성해야 합니다.

두 번째 경우에는 원하는 대로 CTrade도 작동합니다.

 

선택한 차트 기호 의 가격 측정 정확도를 결정하는 소수점 이하 소수점 이하 자릿수를 반환하는 Digits에 해당하는 것은 무엇입니까?

 
Aleksey Vyazmikin :

선택한 차트 기호 의 가격을 측정하는 정확도를 결정하는 소수점 이하 소수점 이하 자릿수를 반환하는 Digits의 아날로그는 무엇입니까?

 SymbolInfoInteger ( "XXXYYY" , SYMBOL_DIGITS );
 
Artyom Trishkin :

고맙습니다!

사유: