OnTradeTransaction işlevi hakkında soru - sayfa 3

 
Mikalas :

:)

1. FORTS İÇİN ÖRNEK

2. Kesme noktaları ayarlanamıyor mu?

3. Satır üzerinden mesajları okuyormuşsunuz gibi görünüyor :)

Hayır, görünüşe göre satır boyunca yazıyorsunuz :

 void OnTick ()
{
   MqlTick a_tick; //Зачем этот зазор ниже?
                                           
   if ( SymbolInfoTick ( _Symbol , a_tick ) )
  {
    PlaceOrder( _Symbol , a_tick.ask, 1 , false );   //Устанавливаем ордер
  }     
}

:)) Kesme noktaları belirledim ve hala anlamadım. Üzgünüm, ama kodunuz çirkin. Önce bir sipariş gönderilir ve ardından OnTradeTransaction ve CheckOrder() içinde anlamsız bazı kontroller yapılır. Kontrol düzeninde hacim de hesaplanır.

Birbirimize eziyet etmeyelim: kodunuza en azından kısa bir açıklama yapacaksınız (yazarın söylemek istediği, hangi hedeflere ulaşmaya çalıştığı :) ve bunun yüzeysel olmayan bir analizini yapmaya çalışacağım. Şimdiki haliyle, kırılma noktalarında bile yeniden adlandırmak istemiyorum.

 
Mikalas :

:)

Aşağıdakileri yapalım.

Sana sorular soracağım ve sen cevaplayacaksın, tamam mı?

...

Haydi!
Mikalas :

Soru 1. TradeTransaction olayı gelmediyse (veya kullanılmıyorsa) Order Ticket'ı (OrderSendAsync komutunu göndererek) nasıl bilirsiniz?

Sipariş biletini TrackingHistoryOrders işlevi aracılığıyla buluyorum, çünkü er ya da geç sipariş yürütülecek ve bu işlevin analiz edeceği sipariş geçmişine girecek.

 
C-4 :

Görünüşe göre satırdan yazıyorsun:

Kesme noktaları koydum ve hala anlamadım. Üzgünüm, ama kodunuz çirkin. Önce bir sipariş gönderilir ve ardından OnTradeTransaction ve CheckOrder() içinde anlamsız bazı kontroller yapılır. Kontrol düzeninde hacim de hesaplanır.

Birbirimize eziyet etmeyelim: kodunuza en azından kısa bir açıklama yapacaksınız (yazarın söylemek istediği, hangi hedeflere ulaşmaya çalıştığı :) ve bunun yüzeysel olmayan bir analizini yapmaya çalışacağım. Şimdiki haliyle, kırılma noktalarında bile yeniden adlandırmak istemiyorum.

:) :) :) :)

Artık genç bir adam değilim (9 yıl önceki fotoğraf) ve daha iyi algı için kodda "boşluklar" yapmak benim için daha uygun.

Ayrıca, 100 karakterlik satırlar ve sütunlar birlikte yazılmadığında birçok kişinin kodu okuması daha uygundur.

"Çirkin" size göre, çünkü yönteminizi icat etmek için zaman harcadınız.

OrderSendAsync komutunun siparişlerini takip ediyor, bu yüzden size kod sizinkinden farklı görünüyor = çirkin! :)

İlke çok basit ve bunu biliyorsunuz çünkü bu konudaki tartışmaya katıldınız.

Sorunun çözümü Yurich tarafından önerildi, bu, OrderSendAsync komutunun her sırası için olması gerçeğinden oluşuyordu.

kendi Büyüsü vardı, o zaman bu sipariş, eğer TradeTransaction olayı gelmediyse, (sihirle) bulmak çok kolaydır.

Her sembol için, örneğin AUDUSD için 1010000'den 1019999'a kadar bir dizi Sihirli sayı tahsis edilir,

1020000'den 1029999'a kadar EURUSD için

Bu benzersiz numaralar zamanla tekrar edebilir

 if ( mem_magic >= ( magic_number + 9999 ) ) mem_magic = magic_number;   //Переполнение, начинаем сначала

, başka bir siparişe "vurmamak" için, içinde bir değişken (datetime mem_time;) vardır.

siparişin tarih ve saatini saklar, bu da siparişi doğru ve neredeyse anında bulmanızı sağlar.

Devam mı?

 
C-4 :
Haydi!

Sipariş biletini TrackingHistoryOrders işlevi aracılığıyla buluyorum, çünkü er ya da geç sipariş yürütülecek ve bu işlevin analiz edeceği sipariş geçmişine girecek.

Harika, ama buna ERKEN ihtiyacım var, GEÇ değil (sipariş bir gün boyunca "askıda kalabilir" ve tarihte OLMAYACAKTIR)

değiştirmek istiyorum!

silmek istiyorum!

 

Bütün saçmalık ve bir yığın yardımcı kod şu sözden kaynaklanmaktadır: Ayrıca sunucudan terminale teslimat sırasında işlemler kaybolabilir.

Durumu netleştirebilecek var mı? Kimler özel olarak bir işlemi kaybedebilir (borsa kapanacak, komisyoncu kapanacak, MQ MT5 sunucusu bozulacak)?

MQ neden işlemlerin teslimini garanti etmek istemiyor, kim yararlanıyor?

 
Serj_Che :

Bütün saçmalık ve bir yığın yardımcı kod şu sözden kaynaklanmaktadır: Ayrıca sunucudan terminale teslimat sırasında işlemler kaybolabilir.

Durumu netleştirebilecek var mı? Kimler özel olarak bir işlemi kaybedebilir (değişim başarısız olacak, komisyoncu kapanacak)?

MQ neden işlemlerin teslimini garanti etmek istemiyor, bundan kim yararlanıyor?

Evet, kimse için karlı değil, sadece MQ'nun her şeyi aynı anda yapmak için “elleri uzanmıyor”, ancak çok fazla proje var, ancak

birkaç yetenekli programcı var, bu yüzden zaman azalıyor ...

Elbette yapacaklar. (izleme mekanizmasının kendisi hariç, bunun için zaten her şeye sahipler).

 
Vasily, biletin yoksa OrderSendAsync tarafından verilen bir siparişi nasıl değiştirebilirsin (silebilirsin)?
 
Mikalas :

Evet, kimse için karlı değil, sadece MQ'nun her şeyi aynı anda yapmak için “elleri uzanmıyor”, ancak çok fazla proje var, ancak

birkaç yetenekli programcı var, bu yüzden zaman azalıyor ...

Elbette yapacaklar. (izleme mekanizmasının kendisi hariç, bunun için zaten her şeye sahipler).

Anladığım kadarıyla borsa her şeyi veriyor. Normal bir komisyoncunun bir şey kaybetmesi de anlamsızdır.

MQ'ya benziyor. MQ MetaTrader5 için borsa ile entegrasyon da bir öncelik değildir.

 
Serj_Che :

Anladığım kadarıyla borsa her şeyi veriyor. Normal bir komisyoncunun bir şey kaybetmesi de anlamsızdır.

MQ'ya benziyor. MQ MetaTrader5 için borsa ile entegrasyon da bir öncelik değildir.

Evet, çünkü borsada mutfak yok (sadece komisyonlar) ve FOREX'te milyonlarca MMM takipçisi var,

belki 100 dolar vardır, ama HERKES! Büyük para, sayılacak bir şey var! :)

 

Vasili, bir cevap olacak mı?

bence hayır.

Kazandım?