初学者的问题 MQL5 MT5 MetaTrader 5 - 页 996

 
人们的帮助。试图获得一个交易开盘的价格。起初我通过CTrade进行交易,但trade.resultprice等于零。我开始通过MqlTrade进行交易,结果.price在Strategy Tester中显示良好的结果,但在Live中却等于零。我试过用OnTradeTransaction,但在实时交易中太慢,自动交易停止时显示为零。有什么方法可以获得买入交易通过的价格?
 
mikhail_shmakov:
人们的帮助。试图获得一个交易开盘的价格。起初我通过CTrade进行交易,但trade.resultprice等于零。我开始通过MqlTrade进行交易,结果.price在策略测试器中显示良好,但在Live中却等于零。我试过用OnTradeTransaction,但在实时交易中太慢,自动交易停止时显示为零。有什么方法可以获得买入交易通过的价格?
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_AD时取价。
Документация по 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参考 的函数,如何让它计算给定魔法的所有未结头寸的数量?
 
Kolya32:
你好,程序员朋友们。请帮助我修改这个功能。我已经在MQL5参考 中介绍了这个函数。 我应该怎样做才能使它为Magic计算出未结头寸的数量?
我们至少应该把订单***改为职位***,然后再检查。
 
Alexey Viktorov:
至少要把各地的订单***改为职位***,然后再检查。

它似乎是有效的))我们可以把这个功能添加到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等于零。我开始通过MqlTrade进行交易,结果.price在Strategy Tester中显示出良好的结果,但在Live中等于零。我试过用OnTradeTransaction,但在实时交易中太慢,自动交易停止时显示为零。有什么方法可以获得买入交易通过的价格?

OrderSend发送一个订单。然后我们必须等待它的执行,并等待相应的交易出现在历史上。

为了正确完成这一切,人们必须精通OnTradeTransaction,或者为OrderSend写一次相当重的代码。

在第二种情况下,CTrade也将如愿以偿地工作。

 

什么是Digits的类似物,它将返回小数点后的小数位数,决定所选 图表符号的价格测量 的准确性?

 
Aleksey Vyazmikin:

什么是Digits的类似物,它将返回小数点后的小数位数,决定所选 图表符号的价格测量 的准确性?

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

谢谢你!