Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 996

 
İnsanlara yardımcı ol. Anlaşmanın açıldığı fiyatı almaya çalışıyorum. İlk başta CTrade üzerinden işlem yaptım ama trade.resultprice sıfıra eşitti. Bunu MqlTrade aracılığıyla yapmaya başladım, test cihazının sonucu.price normal olarak gösterdi, ancak canlıda sıfıra eşit oldu. OnTradeTransaction üzerinden yaptım ama canlı yayında, çok hızlı işlemlerde sıfırı gösteriyor ve otomatik alım satım durduğunda son işlemin fiyatını gösteriyor. Satın alma işleminin geçtiği fiyatı almanın yolları nelerdir?
 
mikhail_shmakov :
İnsanlara yardımcı ol. Anlaşmanın açıldığı fiyatı almaya çalışıyorum. İlk başta CTrade üzerinden işlem yaptım ama trade.resultprice sıfıra eşitti. Bunu MqlTrade aracılığıyla yapmaya başladım, test cihazının sonucu.price normal olarak gösterdi, ancak canlıda sıfıra eşit oldu. OnTradeTransaction üzerinden yaptım ama canlı yayında, çok hızlı işlemlerde sıfırı gösteriyor ve otomatik alım satım durduğunda son işlemin fiyatını gösteriyor. Satın alma işleminin geçtiği fiyatı almanın yolları nelerdir?
 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;       // Тикет встречной позиции 
  };
"Çok hızlı işlemler" ne anlama geliyor? OnTradeTransaction her işlemde gerçekleştirilir. İşlem türünü ayırmanız ve fiyatı TRADE_TRANSACTION_DEAL_ADD'den almanız yeterlidir.
Документация по 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); 
  }
Merhaba sevgili programcılar. Lütfen bu işlevi değiştirmeme yardım edin. MQL5 referansından yukarıda sunulan fonksiyon Belirli bir Magic için tüm açık pozisyonların sayısını nasıl sayar?
 
Kolya32 :
Merhaba sevgili programcılar. Lütfen bu işlevi değiştirmeme yardım edin. MQL5 referansından yukarıda sunulan fonksiyon Belirli bir Magic için tüm açık pozisyonların sayısını nasıl sayar?
En azından, Emirleri*** her yerde Pozisyonlar*** olarak değiştirin, ardından kontrol etmeniz gerekir.
 
Alexey Viktorov :
En azından, Emirleri*** her yerde Pozisyonlar*** olarak değiştirin, ardından kontrol etmeniz gerekir.

Çalışıyor gibi görünüyor) bu işlevi MQL5 referans kitabına ekleyebilirsiniz )) Muhtemelen çok erken olmasına rağmen, hala test ediyorum)

 //+------------------------------------------------------------------+ 
//| Получает текущее количество открытых позиций с указанным 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 :

Çalışıyor gibi görünüyor) bu işlevi MQL5 referansına ekleyebilirsiniz )) Muhtemelen çok erken olmasına rağmen, hala test ediyorum)

Bu tür her önemsiz şey dizine eklenirse, dizin bir tuvalete dönüşecektir. Üzgünüz, bu yaptığınız değişikliklerin kalitesiyle ilgili değil.
 
mikhail_shmakov :
İnsanlara yardımcı ol. Anlaşmanın açıldığı fiyatı almaya çalışıyorum. İlk başta CTrade üzerinden işlem yaptım ama trade.resultprice sıfıra eşitti. Bunu MqlTrade üzerinden yapmaya başladım, test cihazında sonuç.fiyat normal olarak gösterildi, ancak canlıda sıfıra eşit oldu . OnTradeTransaction üzerinden yaptım ama canlı yayında, çok hızlı işlemlerde sıfırı gösteriyor ve otomatik alım satım durduğunda son işlemin fiyatını gösteriyor. Satın alma işleminin geçtiği fiyatı almanın yolları nelerdir?

OrderSend bir sipariş gönderir. Ardından, yürütülmesini ve ilgili işlemin tarihte görünmesini beklemeniz gerekir.

Tüm bunları doğru yapabilmek için ya OnTradeTransaction'a iyi hakim olmanız ya da OrderSend için bir kez oldukça ağır kod yazmanız gerekir.

İkinci durumda, CTrade de istediğiniz gibi çalışacaktır.

 

Seçilen grafik sembolünün fiyatını ölçmenin doğruluğunu belirleyen, ondalık noktadan sonraki ondalık basamak sayısını döndürecek Basamakların karşılığı nedir?

 
Aleksey Vyazmikin :

Seçilen grafik sembolünün fiyatını ölçmenin doğruluğunu belirleyen, ondalık noktadan sonraki ondalık basamak sayısını döndürecek Basamakların karşılığı nedir?

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

Teşekkür ederim!