FORTS. Yürütme soruları - sayfa 62

 

Herkese iyi günler!

Biraz farklı bir durumum var. Komisyoncu BCS. Bir piyasa emri ilk seferde yürütülmez.

Marketten satın almak için sipariş gönderme. İşlev, "Sipariş verildi" ve sipariş numarasını döndürür, ancak sipariş fiilen yürütülmez!

Ve böylece robot birçok girişimde bulunur. Piyasaya bir satın alma emri gönderir, başarılı bir yanıt alır, ancak işlem yapılmaz. Aynı zamanda, yanıttaki sipariş numarası her seferinde yenidir.

Sonuç olarak, pozisyon er ya da geç açılacaktır, ancak komisyoncuyu emirlerle bombalamanız gerekir ki bu açıkça yanlıştır.

Lütfen yardım edin, robotum mu yoksa komisyoncu mu hata yapıyor anlamıyorum? Robotla ilgili herhangi bir şikayet yok, tüm doğrulama fonksiyonları beklendiği gibi gidiyor ve cevaplar kontrol ediliyor.

Brokerlar aradı ama "danışman" sanki elleriyle bir anlaşma açılmış gibi, o zaman robotta bir hata var gibi omuzlarını silkti, ama burada işsizler.

 2015.12 . 23 11 : 02 : 00.053 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 55 ms
2015.12 . 23 11 : 02 : 00.006 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 59.554 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 59.507 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 59.413 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 116 ms
2015.12 . 23 11 : 01 : 59.304 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 59.117 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 59.055 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 58.774 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 54 ms
2015.12 . 23 11 : 01 : 58.711 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 58.680 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 58.633 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 58.259 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 74 ms
2015.12 . 23 11 : 01 : 58.181 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.916 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.869 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.775 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 57.729 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.682 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 57.619 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.557 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.510 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.385 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.323 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.292 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.245 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.058 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 63 ms
2015.12 . 23 11 : 01 : 56.995 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.777 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 56.730 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.481 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 56.434 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.169 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 56.122 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.075 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 56.028 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.451 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 55.389 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.326 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 55.279 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.155 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 55.092 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.045 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 54 ms
2015.12 . 23 11 : 01 : 54.983 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.983 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 54.921 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.843 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 54.796 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.655 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 54.609 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.546 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 54.484 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.453 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 151 ms
2015.12 . 23 11 : 01 : 54.297 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.844 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 53.797 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.751 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 53.688 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.423 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 53.376 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.361 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 60 ms
2015.12 . 23 11 : 01 : 53.298 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.283 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 53.236 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.142 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 53.080 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.033 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.986 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.877 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 52.830 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.830 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 69 ms
2015.12 . 23 11 : 01 : 52.752 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.643 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.596 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.487 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.440 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.425 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.378 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.081 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 55 ms
2015.12 . 23 11 : 01 : 52.019 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.988 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 51.941 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.879 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 51 ms
2015.12 . 23 11 : 01 : 51.832 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.364 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 51.317 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.223 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 51.161 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.114 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 51.052 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.989 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.943 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.693 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.631 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.584 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.521 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.475 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.412 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.397 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.350 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.225 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 50.178 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.147 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.100 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.053 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 49.991 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 49.975 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 49.913 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 49.866 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 51 ms
2015.12 . 23 11 : 01 : 49.804 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
 
Сергей :

Herkese iyi günler!

Biraz farklı bir durumum var. Komisyoncu BCS. Bir piyasa emri ilk seferde yürütülmez.

Marketten satın almak için sipariş gönderme. İşlev, "Sipariş verildi" ve sipariş numarasını döndürür, ancak sipariş fiilen yürütülmez!

Ve böylece robot birçok girişimde bulunur. Piyasaya bir satın alma emri gönderir, başarılı bir yanıt alır, ancak işlem yapılmaz. Aynı zamanda, yanıttaki sipariş numarası her seferinde yenidir.

Sonuç olarak, pozisyon er ya da geç açılacaktır, ancak komisyoncuyu emirlerle bombalamanız gerekir ki bu açıkça yanlıştır.

Lütfen yardım edin, robotum mu yoksa komisyoncu mu hata yapıyor anlamıyorum? Robotla ilgili herhangi bir şikayet yok, tüm doğrulama fonksiyonları beklendiği gibi gidiyor ve cevaplar kontrol ediliyor.

Brokerler aradı ama "danışman" sanki elleriyle bir anlaşma açılırmış gibi omuzlarını silkti, o zaman robotta bir hata var, ama burada iş yok.

Sergey!

Kodunuzu görmeden bir şey söylemek zor.

Ancak çıktıya bakılırsa, siparişin yerleşimini doğru bir şekilde kontrol etmiyorsunuz.

 
Михаил :

Sergey!

Kodunuzu görmeden bir şey söylemek zor.

Ancak çıktıya bakılırsa, siparişin yerleşimini doğru bir şekilde kontrol etmiyorsunuz.


Michael, bu terminal günlüğü, yani. siparişi kabul eder, doğru doldurulduğunu söyler, başarı kodunu ve sipariş numarasını döndürür, yani. emri yürütme kuyruğuna koyar, ancak yürütmez. Ve pek çok kez.

Ama ne olduğunu anlamış gibiyim.

Algoritmaya göre, izin verilen risk, tüm depozito için bir anlaşma açmanıza izin verir. İşlem hacmi = mevcut fonlar / GO, yani. Depozito neredeyse son kuruşuna kadar kullanılır. (Elbette bu bir hata, bunu yapamazsınız).

Resmi olarak, bu hacimle bir anlaşma açmak için yeterli para vardır ve bu nedenle sipariş, terminalin kontrollerinden geçer ve MT5 çekirdeği tarafından kabul edilir ( OrderSend işlevi true ve sipariş numarasını döndürür),

ancak yürütme kuyruğunda (brokerde veya değişim ile ağ geçidinde) daha sonra bir yerde reddedilir ve sonuç olarak yürütülmez. Burada, bir yerde, Metaquotes kısmındaki MT5 kusuru var.

Sorun şu ki, bir müşteri olarak bu konuda hiçbir şekilde bilgilendirilmiyorum. Robot için her şey yolunda gitti, ancak aslında sipariş komisyoncu / ağ geçidi / takas tarafından reddedildi (burada sadece tahmin edebilirim).


OrderSend işlevinin siparişi reddetmesi ve robota TRADE_RETCODE_NO_MONEY hata kodunu döndürmesi gerekirdi. ama nedense olmadı.

Görünüşe göre, OnTradeTransaction işleminin yürütülmesinin ilerlemesini ayrıntılı olarak izlemek gerekiyor .

 
Сергей :


Michael, bu terminal günlüğü, yani. siparişi kabul eder, doğru doldurulduğunu söyler, başarı kodunu ve sipariş numarasını döndürür, yani. emri yürütme kuyruğuna koyar, ancak yürütmez. Ve pek çok kez.

Ama ne olduğunu anlamış gibiyim.

Algoritmaya göre, izin verilen risk, tüm depozito için bir anlaşma açmanıza izin verir. İşlem hacmi = mevcut fonlar / GO, yani. Depozito neredeyse son kuruşuna kadar kullanılır. (Elbette bu bir hata, bunu yapamazsınız).

Resmi olarak, bu hacimle bir anlaşma açmak için yeterli para vardır ve bu nedenle sipariş, terminalin kontrollerinden geçer ve MT5 çekirdeği tarafından kabul edilir ( OrderSend işlevi true ve sipariş numarasını döndürür),

ancak yürütme kuyruğunda (brokerde veya değişim ile ağ geçidinde) daha sonra bir yerde reddedilir ve sonuç olarak yürütülmez. Burada, bir yerde, Metaquotes kısmındaki MT5 kusuru var.

Sorun şu ki, bir müşteri olarak bu konuda hiçbir şekilde bilgilendirilmiyorum. Robot için her şey yolunda gitti, ancak aslında sipariş komisyoncu / ağ geçidi / takas tarafından reddedildi (burada sadece tahmin edebilirim).


OrderSend işlevinin siparişi reddetmesi ve robota TRADE_RETCODE_NO_MONEY hata kodunu döndürmesi gerekirdi. ama nedense olmadı.

Siparişin yerleşimini doğru bir şekilde kontrol etmediğinizi bir kez daha tekrarlıyorum.

Bir sipariş BİLET almış olmanız, siparişin borsada işlem gördüğü anlamına gelmez!

 
Михаил :

Siparişin yerleşimini doğru bir şekilde kontrol etmediğinizi bir kez daha tekrarlıyorum.

Bir sipariş BİLET almış olmanız, siparişin borsada işlem gördüğü anlamına gelmez!

Katılıyorum, ortaya çıktığı gibi, bu konuda bilgi eksikliğim var.

Ondan önce böyle bir davranışla karşılaşmadım, sadece markete gönderdim ve her zaman ya açıldı ya da hemen bir hata aldım.

Genel olarak, kuyrukta sipariş yürütmenin düşük seviyeli nüanslarını araştırmaya gerek yoktu. Ve burada...

 
Сергей :

Katılıyorum, ortaya çıktığı gibi, bu konuda bilgi eksikliğim var.

Ondan önce böyle bir davranışla karşılaşmadım, sadece markete gönderdim ve her zaman ya açıldı ya da hemen bir hata aldım.

Genel olarak, kuyrukta sipariş yürütmenin düşük seviyeli nüanslarını araştırmaya gerek yoktu. Ve burada...

Bir sipariş aldıktan sonra OrderRealSelect() işlevini kullanın

https://www.mql5.com/en/forum/67298/page2#comment_2089220

ФОРТС: В помощь начинающим
ФОРТС: В помощь начинающим
  • www.mql5.com
Установка отложенного ордера командой OrderSend(). - Страница 2 - Категория: биржевой трейдинг
 

Yaklaşık olarak şu şekilde yapılmalıdır:

 //+------------------------------------------------------------------+
//|                                                   Test_array.mq5 |
//|                                          Copyright 2015, Mikalas |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Mikalas"
#property link        "https://www.mql5.com"
#property version    "1.00"
//
#define ERR_ZERO_TICKET - 1
//
enum ENUM_ORD_REAL_STATE
{
  ORD_NOT_SPECIFIED         = 0 , //Состояние ордера не определено
  ORD_NONE_CANCELED         = 1 , //Ордера нет, отменён пользователем
  ORD_NONE_PARTIAL_CANCELED = 2 , //Ордера нет, исполнился частично (не был залит вторым объёмом)
  ORD_NONE_PARTIAL          = 3 , //Ордера нет, исполнился частично
  ORD_NONE_EXPIRED          = 4 , //Ордера нет, удалён по сроку
  ORD_NONE_FILLED           = 5 , //Ордера нет, исполнился полностью
  ORD_NONE_REJECTED         = 6 , //Ордера нет, отклонён брокером(биржей)
  ORD_BUSY                  = 7 , //Ордер находится в переходном состоянии
  ORD_EXIST                 = 8 , //Ордер выставлен на биржу, возможны действия над ним
  ORD_EXIST_PARTIAL         = 9    //Ордер выставлен на биржу, частично исполнился, возможны действия над ним
};
enum ENUM_ORD_SELECT
{
  SELECT_ERROR = 0 ,
  SELECT_FALSE = 1 ,
  SELECT_TRUE  = 2 ,
  SELECT_BUSY  = 3
};
//
struct ORDER_DATA
{
   int                      error_code;
   datetime                 time_setup;
   ENUM_ORDER_TYPE          type;
   ENUM_ORDER_STATE         state;
  ENUM_ORD_REAL_STATE     real_state;
   datetime                 expiration;
   datetime                 time_done;
   long                     t_set_msc;
   long                     t_done_msc; 
   ENUM_ORDER_TYPE_FILLING type_filling;
   ENUM_ORDER_TYPE_TIME     type_time;
   long                     magic;
   long                     pos_id;
   double                   vol_init;
   double                   vol_cur;
   double                   price_open;
   double                   sl;
   double                   tp;
   double                   price_cur;
   double                   price_stlim;
   string                   symbol;
   string                   comment;      
};
//
//
ulong order_ticket;
//
//+------------------------------------------------------------------+
// Expert Order Real Select function                                 |
//+------------------------------------------------------------------+
ENUM_ORD_SELECT OrderRealSelect( const ulong ticket, ORDER_DATA &ord_data, const bool get_data )
{
   double init_vol = 0 ;
   double cur_vol = 0 ;
   ZeroMemory ( ord_data );
  ord_data.real_state = ORD_NOT_SPECIFIED;
  ord_data.error_code = ERR_SUCCESS ;
   ResetLastError ();
//---  
   if ( ticket > 0 )
  {
     if ( HistoryOrderSelect ( ticket ) )
    {
       if ( get_data )
      {
        ord_data.comment = HistoryOrderGetString ( ticket, ORDER_COMMENT );
        ord_data.expiration = datetime ( HistoryOrderGetInteger ( ticket, ORDER_TIME_EXPIRATION ) ); 
        ord_data.magic = HistoryOrderGetInteger ( ticket, ORDER_MAGIC );
        ord_data.pos_id = HistoryOrderGetInteger ( ticket, ORDER_POSITION_ID );
        ord_data.price_cur = HistoryOrderGetDouble ( ticket, ORDER_PRICE_CURRENT );
        ord_data.price_open = HistoryOrderGetDouble ( ticket, ORDER_PRICE_OPEN );
        ord_data.price_stlim = HistoryOrderGetDouble ( ticket, ORDER_PRICE_STOPLIMIT );
        ord_data.sl = HistoryOrderGetDouble ( ticket, ORDER_SL );
        ord_data.state = ENUM_ORDER_STATE ( HistoryOrderGetInteger ( ticket, ORDER_STATE ) );
        ord_data.symbol = HistoryOrderGetString ( ticket, ORDER_SYMBOL );
        ord_data.t_done_msc = datetime ( HistoryOrderGetInteger ( ticket, ORDER_TIME_DONE_MSC ) );
        ord_data.t_set_msc = datetime ( HistoryOrderGetInteger ( ticket, ORDER_TIME_SETUP_MSC ) );
        ord_data.time_done = datetime ( HistoryOrderGetInteger ( ticket, ORDER_TIME_DONE ) );
        ord_data.time_setup = datetime ( HistoryOrderGetInteger ( ticket, ORDER_TIME_SETUP ) );
        ord_data.tp = HistoryOrderGetDouble ( ticket, ORDER_TP );
        ord_data.type = ENUM_ORDER_TYPE ( HistoryOrderGetInteger ( ticket, ORDER_TYPE ) );
        ord_data.type_filling = ENUM_ORDER_TYPE_FILLING ( HistoryOrderGetInteger ( ticket, ORDER_TYPE_FILLING ) );
        ord_data.type_time = ENUM_ORDER_TYPE_TIME ( HistoryOrderGetInteger ( ticket, ORDER_TYPE_TIME ) );
        ord_data.vol_cur = HistoryOrderGetDouble ( ticket, ORDER_VOLUME_CURRENT );
        ord_data.vol_init = HistoryOrderGetDouble ( ticket, ORDER_VOLUME_INITIAL );
      }
       else
      {
        ord_data.state = ENUM_ORDER_STATE ( HistoryOrderGetInteger ( ticket, ORDER_STATE ) );
        cur_vol = HistoryOrderGetDouble ( ticket, ORDER_VOLUME_CURRENT );
        init_vol = HistoryOrderGetDouble ( ticket, ORDER_VOLUME_INITIAL );
      }   
//---
       switch ( ord_data.state )
      { 
         case ORDER_STATE_CANCELED : if ( get_data )
                                   {
                                     if ( ord_data.vol_init == ord_data.vol_cur )
                                     {
                                       ord_data.real_state = ORD_NONE_CANCELED;
                                     }
                                     else
                                     {
                                       ord_data.real_state = ORD_NONE_PARTIAL_CANCELED;
                                     }
                                   }
                                   else
                                   {
                                     if ( init_vol == cur_vol )
                                     {
                                       ord_data.real_state = ORD_NONE_CANCELED;
                                     }
                                     else
                                     {
                                       ord_data.real_state = ORD_NONE_PARTIAL_CANCELED;
                                     }
                                   }    
                                   break ;
                                        
         case ORDER_STATE_PARTIAL :  ord_data.real_state = ORD_NONE_PARTIAL;
                                   break ;
                                         
         case ORDER_STATE_EXPIRED :  ord_data.real_state = ORD_NONE_EXPIRED;
                                   break ;
                                                                              
         case ORDER_STATE_FILLED :   ord_data.real_state = ORD_NONE_FILLED;
                                   break ;
                                         
         case ORDER_STATE_REJECTED : ord_data.real_state = ORD_NONE_REJECTED;
                                   break ;  
      }
    }
     else
     if ( OrderSelect ( ticket ) )
    {
       if ( get_data )
      {
        ord_data.comment = OrderGetString ( ORDER_COMMENT );
        ord_data.expiration = datetime ( OrderGetInteger ( ORDER_TIME_EXPIRATION ) ); 
        ord_data.magic = OrderGetInteger ( ORDER_MAGIC );
        ord_data.pos_id = OrderGetInteger ( ORDER_POSITION_ID );
        ord_data.price_cur = OrderGetDouble ( ORDER_PRICE_CURRENT );
        ord_data.price_open = OrderGetDouble ( ORDER_PRICE_OPEN );
        ord_data.price_stlim = OrderGetDouble ( ORDER_PRICE_STOPLIMIT );
        ord_data.sl = OrderGetDouble ( ORDER_SL );
        ord_data.state = ENUM_ORDER_STATE ( OrderGetInteger ( ORDER_STATE ) );
        ord_data.symbol = OrderGetString ( ORDER_SYMBOL );
        ord_data.t_done_msc = datetime ( OrderGetInteger ( ORDER_TIME_DONE_MSC ) );
        ord_data.t_set_msc = datetime ( OrderGetInteger ( ORDER_TIME_SETUP_MSC ) );
        ord_data.time_done = datetime ( OrderGetInteger ( ORDER_TIME_DONE ) );
        ord_data.time_setup = datetime ( OrderGetInteger ( ORDER_TIME_SETUP ) );
        ord_data.tp = OrderGetDouble ( ORDER_TP );
        ord_data.type = ENUM_ORDER_TYPE ( OrderGetInteger ( ORDER_TYPE ) );
        ord_data.type_filling = ENUM_ORDER_TYPE_FILLING ( OrderGetInteger ( ORDER_TYPE_FILLING ) );
        ord_data.type_time = ENUM_ORDER_TYPE_TIME ( OrderGetInteger ( ORDER_TYPE_TIME ) );
        ord_data.vol_cur = OrderGetDouble ( ORDER_VOLUME_CURRENT );
        ord_data.vol_init = OrderGetDouble ( ORDER_VOLUME_INITIAL );
      }
       else
      {
        ord_data.state = ENUM_ORDER_STATE ( OrderGetInteger ( ORDER_STATE ) );
      }
//--- 
       switch ( ord_data.state )
      { 
         case ORDER_STATE_STARTED :
         case ORDER_STATE_REQUEST_ADD :
         case ORDER_STATE_REQUEST_MODIFY :
         case ORDER_STATE_REQUEST_CANCEL : ord_data.real_state = ORD_BUSY;
                                         break ; 
 
         case ORDER_STATE_PARTIAL :        ord_data.real_state = ORD_EXIST_PARTIAL;
                                         break ;
                                          
         case ORDER_STATE_PLACED :         ord_data.real_state = ORD_EXIST;
                                         break ;
      }
    }
     else
    {
      ord_data.error_code = GetLastError ();
    }  
//---   
     if ( ( ord_data.error_code != ERR_SUCCESS ) ||
       ( ord_data.real_state == ORD_NOT_SPECIFIED ) )
    {
       return ( SELECT_ERROR );
    }
     else
    {
       switch ( ord_data.real_state )
      {
         case ORD_BUSY:           return ( SELECT_BUSY );
                                 break ;
                        
         case ORD_EXIST:   
         case ORD_EXIST_PARTIAL: return ( SELECT_TRUE );
                                 break ;
                              
         default :                 return ( SELECT_FALSE );
                                 break ;                                             
      }
    }
  } 
   else
  {
    ord_data.error_code = ERR_ZERO_TICKET; 
     return ( SELECT_ERROR );
  }
}
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   return ( INIT_SUCCEEDED );
}
//
void OnTick ()
{
   if ( PositionSelect ( _Symbol ) )
  {
     //Позиция открыта, ордер исполнился
  }
   else
  {
     if ( order_ticket > 0 )
    {
       //Проверяем что с ордером
      ORDER_DATA order_data;
      ENUM_ORD_SELECT ord_select = OrderRealSelect( order_ticket, order_data, true );
       switch ( ord_select )
      {
         case SELECT_BUSY:   //Ничего не делаем, ордер в переходном состоянии
                           break ;
        
         case SELECT_FALSE: //Ордера нет .... Проверяем, что с ним произошло
                           break ;
                           
         case SELECT_TRUE: //Ордер есть.... Проверяем почему есть, а не исполнился
                           break ; 
                           
         case SELECT_ERROR: //Проверяем что за ошибка
                           break ;                                                             
      }
    }
     else
    {
       //Позиции нет, ордера нет. Устанавливаем ордер
    }
  }
}
 
 
Михаил :

Yaklaşık olarak şu şekilde yapılmalıdır:

Michael, teşekkürler! Çok kullanışlı bir özellik.
 
Bu konu başlayalı 1 yıl olmuş....
 

Aitugan, belki bazı yorumlar olacak? :((

Anlıyorum, elbette, dikkatinizi Kıbrıs'taki tatilinizden uzaklaştırmak istemem ama bir şekilde sessizlik müstehcen uzun bir süre devam etti. :((

Neden: