MT5 ve iş başında hız - sayfa 31

 
fxsaber :

Bu Expert Advisor'ı mevcut pozisyon ve emirlerin olmadığı bir hesapta çalıştırırsanız.

ve ardından Expert Advisor tarafından açılan pozisyonu elinizle kapatın, ardından hedge üzerinde üç açık pozisyon görünecektir (üçlü hacmin netleştirme pozisyonunda).


Bu doğru bir davranış mı? Büyük olasılıkla, Terminal'in nasıl çalıştığını yanlış anlıyorum. O zaman lütfen açıklayın.

İlk önce yardımı okumanız gerekir.

https://www.mql5.com/ru/docs/event_handlers/ontrade

Not:

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction() . В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

Basitçe söylemek gerekirse, OnTrade() işleyicisi her bir bireysel ticaret işlemi için çağrılabilir. Bir pozisyonu kapatmanın sonucu, birkaç ayrı işlemin gelmesi olabilir.

Bunu kontrol etmek kolaydır - örneğinizin OnTrade() öğesine Print() öğesini eklemeniz yeterlidir.

Ayrıca, daha önceki testinize göre, OrderSendAsync() aracılığıyla sipariş biletini bulmayı boşuna beklediğinize dikkatinizi çekmek istiyorum.

Документация по MQL5: Обработка событий / OnTrade
Документация по MQL5: Обработка событий / OnTrade
  • www.mql5.com
//|                                               OnTrade_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Anton :

Ayrıca, daha önceki testinize göre, OrderSendAsync() aracılığıyla sipariş biletini bulmayı boşuna beklediğinize dikkatinizi çekmek istiyorum.

Görünüşe göre hiçbir yerde yok. OnTrade'de yalnızca HistorySelect gecikmeleri gösterilir.

 
fxsaber :

Görünüşe göre hiçbir yerde yok. OnTrade'de yalnızca HistorySelect gecikmeleri gösterilir.

 if ( PositionSelectByTicket (Result.order)) // Если позиция открыта - закрываем.
 
Anton :

İlk önce yardımı okumanız gerekir.

https://www.mql5.com/ru/docs/event_handlers/ontrade

Not:

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction() . В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

Basitçe söylemek gerekirse, OnTrade() işleyicisi her bir bireysel ticaret işlemi için çağrılabilir. Bir pozisyonu kapatmanın sonucu, birkaç ayrı işlemin gelmesi olabilir.

Bunu kontrol etmek kolaydır - örneğinizin OnTrade() öğesine Print() öğesini eklemeniz yeterlidir.

Tabii ki çıktılar aldım. Sorun OnTrade'e yapılan çağrıların sayısı değil, açık pozisyonların sayısıydı.

İlk OnTrade'den sonra bir piyasa emri verilir. Bir sonraki OnTrade'de, bu piyasa emri, koşula göre daha fazla emir açılmasına izin vermemelidir. Ancak sonraki OnTrade'lerde bile OrdersTotal() + PositionsTotal() toplamı sıfırdır. Doğru mu?

 
Anton :

Teşekkür ederim kopyala yapıştır kısmını görmemiştim.

 
fxsaber :

Görünüşe göre hiçbir yerde yok. OnTrade'de yalnızca HistorySelect gecikmeleri gösterilir.

Sipariş seçimlerinin önbelleğe alınması bugün iyileştirildi, birkaç saat içinde bir beta olacak.

 
Renat Fatkhullin :

Sipariş seçimlerinin önbelleğe alınması bugün iyileştirildi, birkaç saat içinde bir beta olacak.

HistorySelect'i mi kastediyorsunuz? Sadece otomatik bağlantı OrderSelect'e yol açmaz.

 
Nelson Wanyama :

mt5'in neden 'Komisyonlar' sekmesini içermediğine dair bir fikriniz var mı? Sadece bir ticaret kapandıktan sonra ortaya çıkarlar.

Mt5'te neden "Komisyonlar" sekmesi olmadığı hakkında bir fikriniz var mı? Yalnızca işlem kapatıldıktan sonra görünürler.


 
fxsaber :

Tabii ki çıktılar aldım. Sorun OnTrade'e yapılan çağrıların sayısı değil, açık pozisyonların sayısıydı.

İlk OnTrade'den sonra bir piyasa emri verilir. Bir sonraki OnTrade'de, bu piyasa emri, koşula göre daha fazla emir açılmasına izin vermemelidir. Ancak sonraki OnTrade'lerde OrdersTotal() + PositionsTotal() toplamı sıfırdır. Doğru mu?

Her şey yardımın içinde: https://www.mql5.com/en/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.  Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade .
Böylece OrdersTotal() kesinlikle boş olabilir. Ayrıca PositionsTotal(). Her şey işlemlere, türlerine ve içeriğine bağlıdır.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function                                   | //| Expert deinitialization function                                 | //| TradeTransaction function                                        |...
 
Anton :

Her şey yardımın içinde: https://www.mql5.com/en/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.
Böylece OrdersTotal() kesinlikle boş olabilir. Ayrıca PositionsTotal().

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

Her siparişin durumunu açıklayan bir durumu vardır. Bilgi için işlevi kullanın   OrderGetInteger()   veya   GeçmişSiparişGetInteger()   ORDER_STATE değiştiricisi ile. Geçerli değerler ENUM_ORDER_STATE numaralandırmasında saklanır.

ENUM_ORDER_STATE

tanımlayıcı

Tanım

ORDER_STATE_STARTED

Siparişin doğruluğu kontrol edildi, ancak henüz komisyoncu tarafından kabul edilmedi



Başarılı bir OrderSendAsync işleminden sonra Başlatıldı durumu oluşmuyor mu?