Aslında, bu optimaldir. Ve daha karmaşık sıralama koşulları belirlemenizi sağlar.
Örneğin:
Ve hala başka bir çözüm yok.
Bir kalıbın amacı genel olmaktır. Örneğinizde en az bir a, b, c alanı içermeyen başka bir yapı geçilirse, derleme yapılmayacaktır. Diğer bir deyişle, işlev iki farklı veri türüyle aynı anda çalışamaz.
Bu koşul, bekleyen emir kısmen doldurulmuş ve bir pozisyon oluşturmuşsa işe yarar. O zaman aynı bilete sahip bir emir ve bir pozisyon aynı anda var olacaktır.
Bu nedenle, aşağıdaki yapı bazı durumlarda anlamlıdır.
Bu koşul, bekleyen emir kısmen doldurulmuş ve bir pozisyon oluşturmuşsa işe yarar. O zaman aynı bilete sahip bir emir ve bir pozisyon aynı anda var olacaktır.
RannForex-Server demo hesabında aşağıdaki kod ile bu Expert Advisor'ı çalıştırırsanız hemen bu durumu yeniden oluşturabilirsiniz.
// Воспроизведение ситуации наличия позиции и отложенного ордера с одинаковыми тикетами.#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )
MqlTradeResult Result = { 0 };
MqlTradeRequest Request = { 0 };
intOnInit ()
{
Request.action = TRADE_ACTION_PENDING ;
Request.symbol = _Symbol ;
Request.volume = 100 ;
Request.price = Ask;
Request.type = ORDER_TYPE_BUY_LIMIT ;
return (! OrderSend (Request, Result)); // Выставили лимитник по текущей цене.
}
#define TOSTRING(A) #A + " = " + DoubleToString (A, _Digits )
voidOnTradeTransaction ( constMqlTradeTransaction &, constMqlTradeRequest &, constMqlTradeResult & )
{
if ( OrderSelect (Result.order) && ( OrderGetInteger ( ORDER_STATE ) == ORDER_STATE_PARTIAL )) // Если наш лимитник исполнился частично
{
if (Ask - OrderGetDouble ( ORDER_PRICE_OPEN ) < 100 * _Point ) // и находится близко от текущей цены
{
Request.action = TRADE_ACTION_MODIFY ;
Request.order = Result.order;
Request.price = Ask - 1000 * _Point ;
// тогда передвигаем его подальше.if ( OrderSend (Request, Result)) // Если синхронный OrderSend выполнился успешно, то торговое окружение должно соответствовать.
{
// Проверка соответствия торгового окружения.if ( OrderSelect (Request.order) && // Если получилось взять данные нашего ордераNormalizeDouble ( OrderGetDouble ( ORDER_PRICE_OPEN ) - Request.price, _Digits )) // и цена ордера не равна цене успешного OrderSendAlert ( "Bug:" + TOSTRING( OrderGetDouble ( ORDER_PRICE_OPEN )) + " != " + TOSTRING(Request.price)); // сообщаем о баге MT5.
}
}
elseExpertRemove ();
}
}
Sonuç.
Yol boyunca, komut dosyası (her zaman ilk kez değil) eşzamanlı bir OrderSend'in yürütülmesinde bir hata gösterir.
OrderSend'i birkaç on/yüz milisaniye boyunca yürüttükten sonra, sipariş fiyatı eskidir ve OrderSend'in başarıyla yerleştirdiği fiyat değildir.
Aynı biletler konusuna dönersek, bazı sonuçlar çıkarabiliriz.
Kısmi bir sınır belirlenirse, oluşturulan anlaşma "Siparişler ve Anlaşmalar" sekmesinde görünmez.
Bir hedge işleminde, bir emir, farklı fiyatlarda birden fazla IN işlemi oluşturabilir. Sonuç olarak, bir pozisyon açmak için kesirli (puanlara göre) bir fiyat elde edilecektir.
Oluşan pozisyonu Kısmi-ertelenmiş silmeden kapatabilirsiniz. Ancak bundan sonra erteleme işe yararsa, daha önce kapatılan pozisyonun biletine eşit bir biletle anlaşma açacaktır. Onlar. Belirli bir biletle bir pozisyonu kapattığınızda bir durum olabilir. Ve sonra pozisyon aynı biletle tekrar görünür.
Aracı yazılımına bağlı olarak, kısmi yürütme farklı şekillerde uygulanabilir. Yukarıda standart MT5 uygulamasını tanımladım.
PS Birisi başka bir ticaret sunucusunda çoğaltmayı başardıysa, adı paylaşın.
Oluşan pozisyonu Kısmi-ertelenmiş silmeden kapatabilirsiniz. Ancak bundan sonra erteleme işe yararsa, daha önce kapatılan pozisyonun biletine eşit bir biletle anlaşma açacaktır. Onlar. Belirli bir biletle bir pozisyonu kapattığınızda bir durum olabilir. Ve sonra pozisyon aynı biletle tekrar görünür.
Benzersiz bir bilet değil mi? Bu nasıl olabilir?
Biletler siparişler ve fırsatlar için benzersiz mi?
Kendiniz için öyle bir açıklama bulabilirsiniz ki, bir açılış emri olduğu sürece her zaman bir pozisyon vardır. Sadece her zaman görünmez - sıfır hacim. Ve bu pozisyonun benzersiz bir bileti var. Eh, bir hedge üzerinde, bu nedenle, karşılık gelen giriş ve çıkış işlemlerinden sonra aynı pozisyonda giriş işlemlerine sahip olmak oldukça mümkündür.
Biletler siparişler ve fırsatlar için benzersiz mi?
Eşsiz. Ama elbette ORDER_TICKET, DEAL_TICKET'e eşit olabilir.
Teoride çalışması gerekir. Ama bunu yapmanı tavsiye etmem.
Aslında, bu optimaldir. Ve daha karmaşık sıralama koşulları belirlemenizi sağlar.
Örneğin:
Ve hala başka bir çözüm yok.
Bir kalıbın amacı genel olmaktır. Örneğinizde en az bir a, b, c alanı içermeyen başka bir yapı geçilirse, derleme yapılmayacaktır. Diğer bir deyişle, işlev iki farklı veri türüyle aynı anda çalışamaz.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Ticaret için kontrol paneli. YARDIM GEREKLİ MQL5
Vladimir Karputov , 2020.08.18 09:04
Bu kod işe yaramadı - pirzola ve kareyi karşılaştıramazsınız:
Bu koşul, bekleyen emir kısmen doldurulmuş ve bir pozisyon oluşturmuşsa işe yarar. O zaman aynı bilete sahip bir emir ve bir pozisyon aynı anda var olacaktır.
Bu nedenle, aşağıdaki yapı bazı durumlarda anlamlıdır.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Kitaplıklar: MT4Orders
fxsaber , 2020.08.20 15:44
Asenkron işlemlerle çalışanlar için, hesabınızda mümkün olan maksimum sayıda asenkron işlem için ayarları bilmek faydalı olacaktır.
Öğrenmek kolay.
Dikkatli olun, bir sınırla karşılaşabilirsiniz.
Renat, uzun zaman önce sadece limiti vurmakla kalmayıp, DC'den bir blok yakalayabileceğinizi söyledi.
Bu koşul, bekleyen emir kısmen doldurulmuş ve bir pozisyon oluşturmuşsa işe yarar. O zaman aynı bilete sahip bir emir ve bir pozisyon aynı anda var olacaktır.
RannForex-Server demo hesabında aşağıdaki kod ile bu Expert Advisor'ı çalıştırırsanız hemen bu durumu yeniden oluşturabilirsiniz.
Sonuç.
Yol boyunca, komut dosyası (her zaman ilk kez değil) eşzamanlı bir OrderSend'in yürütülmesinde bir hata gösterir.
OrderSend'i birkaç on/yüz milisaniye boyunca yürüttükten sonra, sipariş fiyatı eskidir ve OrderSend'in başarıyla yerleştirdiği fiyat değildir.
Aynı biletler konusuna dönersek, bazı sonuçlar çıkarabiliriz.
PS Birisi başka bir ticaret sunucusunda çoğaltmayı başardıysa, adı paylaşın.
Arama dizisi : Oshibka 010.
Benzersiz bir bilet değil mi? Bu nasıl olabilir?
Biletler siparişler ve fırsatlar için benzersiz mi?
Benzersiz bir bilet değil mi? Bu nasıl olabilir?
Kendiniz için öyle bir açıklama bulabilirsiniz ki, bir açılış emri olduğu sürece her zaman bir pozisyon vardır. Sadece her zaman görünmez - sıfır hacim. Ve bu pozisyonun benzersiz bir bileti var. Eh, bir hedge üzerinde, bu nedenle, karşılık gelen giriş ve çıkış işlemlerinden sonra aynı pozisyonda giriş işlemlerine sahip olmak oldukça mümkündür.
Biletler siparişler ve fırsatlar için benzersiz mi?
Eşsiz. Ama elbette ORDER_TICKET, DEAL_TICKET'e eşit olabilir.