Uzmanlar için soru - sayfa 13

 

Bence evet! Teşekkürler TheXpert!

Şimdi deneyeceğim!

 
Sevgili uzmanlar, lütfen OrderCloseBy () işlevini anlamama yardım edin. Tamamen kafam karışmış bir şey. Karşıt koşullarda pozisyonları açıp kapatan bir Uzman Danışmanım var. Yani AÇIK ALIŞ ve KAPALI SAT koşulları ile AÇIK SAT ve KAPALI ALIŞ koşulları aynıdır, dolayısıyla bir pozisyonu aynı fiyattan kapattıktan hemen sonra diğer yönde aynı hacimde bir pozisyon açılır. Bu yüzden, çift hacimde ters yönde bir pozisyon açarak ve ardından OrderCloseBy() işleviyle zıt emirleri kapatarak OrderClose()'u değiştirmeye karar verdim. Yani, sonunda da ortaya çıkmalıydı, ancak her işlemden bir spread tasarrufu ile, ancak test cihazı tamamen farklı bir şey gösteriyor. Bu yüzden kodu yanlış mı yazdım yoksa fikrin kendisi tarafımdan yanlış mı anlaşıldı anlayamıyorum ... Açıklamalar için size çok minnettar olacağım ...
 
Her şeyden önce, DC'nizin teknik desteği ile bu işlevin terminal tarafından desteklenip desteklenmediğini kontrol edin. Çünkü tüm DC'lerde değil, OrderCloseBy () işlevinin kullanımına izin verilir.
 
Demoda OrderCloseBy () desteklenir.
 

Ben uzman değilim. Bu işlev için "referans" klasörümde "normal" olan her şeye ek olarak böyle bir not var (buraya kopyaladım - hangi şubeden hatırlamıyorum) -

Ve OrderCloseBy işlevi YALNIZCA 2 siparişi aynı anda kapatmak için kullanılır ve bir spread tasarrufu sağlar.
Terminalden programlı olarak geçmeniz, tüm açık sipariş numaralarını ve özelliklerini hatırlamanız, ana siparişin numarasını seçmeniz, altında istenen (mevcut olandan) karşı siparişi seçmeniz ve numarasını değiştirmeniz gerekir.


// yani Anladığım kadarıyla bu fonksiyon ile sadece önceden seçilmiş iki zıt pozisyonu kapatabiliyorsunuz.

Ve daha fazla yok.

 

İyi evet...

bu yüzden böyle anılır.

 

Öyleyse, bir pozisyonu tersine çevirmek için aşağıdaki iki seçenek arasında ekonomik bir fark olup olmadığı sorusunu yeniden ifade etmeme izin verin:

1) OrderClose işlevini kullanarak 1 lotluk bir hacimle SATIŞ'ı kapatın ve ardından 1 lotluk hacimli bir ALIM açın

2) 1 lot hacimli bir SATIŞ açıldığında, önce 2 lot hacimli ALIŞ açın ve ardından OrderCloseBy fonksiyonu ile SATIŞ'ı kapatın, ardından 1 lot hacimli açık ALIŞ pozisyonu da kalacaktır.

Ders kitabından alınan örneğe göre, bir yayma 2) seçeneği kaydedilecektir.

 
Kısacası, 1+1 spread telafi edilecek ve kalan 1, işlem koşullarına göre olağan spread olacaktır.
 
https://book.mql4.com/en/trading/orderclose - burası OrderCloseBy () işlevinin eyleminin açıklandığı yerdir. Aynısını demoda yapmaya çalıştım - gerçekte yayılma daha az. Ama yine de Expert Advisor'da çalışmıyor... Kısacası kafam karıştı...
 
Dmirtiy писал(а) >>
https://book.mql4.com/en/trading/orderclose - burası OrderCloseBy () işlevinin eyleminin açıklandığı yerdir. Aynısını demoda yapmaya çalıştım - gerçekte yayılma daha az. Ama yine de Expert Advisor'da çalışmıyor... Kısacası kafam karıştı...

Bu soruyla iki dalda aydınlandın. Sen bizim meraklımızsın.

Burada kolay çözümler yok. MQL5'in piyasaya sürülmesiyle bu sorun tamamen ortadan kalkacaktır.

Uzman Danışmanlarımda kullandığım birkaç prosedür önerebilirim.

//Açık siparişlerin mevcut durumunun belirlenmesi:

geçersiz KontrolSiparişleri()
{
int i;
Satın Alma Siparişi = yanlış;
SellOrder = yanlış;
Lot Satın Al = 0.0;
Çok Sat = 0.0;

için ( i=0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS);
if ( OrderSymbol() == Symbol())
{
if ( OrderType() == OP_BUY )
{
SatınalmaSiparişi = doğru;
LastBuyLots = OrderLots();
BuyLots += LastBuyLots; // açık alım pozisyonu miktarı
BuyTicket = OrderTicket();
}
if (OrderType() == OP_SEL)
{
SellOrder = doğru;
LastSellLots = OrderLots();
SellLots += LastSellLots; // açık satış pozisyonu miktarı
SellTicket = OrderTicket();
}
}
}
}

//Açılış (kapanış) emirleri:

void TradeVariant (int varyantı)
{
anahtar(varyant)
{
// if (Desen < 0 && !Sipariş && !SellOrder && !FridayLastHour) değişkeni = 1;
// satış sinyali, açık sipariş yok ve Cuma'nın son saati değil
// bir satış emri aç
dava 1:
OpenSellOrder(Lots);
kırmak;

// if (Pattern < 0 && BuyOrder && !SellOrder && !FridayLastHour) değişkeni = 2;
// satış sinyali, açık alım emri var, satış emri yok
// ve Cuma'nın son saati değil - arkanı dön
durum 2:
OpenSellOrder(Lot + BuyLot);
kırmak;

// if (Pattern < 0 && BuyOrder && !SellOrder && FridayLastHour) değişkeni = 3;
// satış sinyali, açık alım emri var, satış emri yok
// ve bu Cuma'nın son saati - satın alma emrini kapat
durum 3:
CloseBuyOrders();
kırmak;

// if (Desen > 0 && !SellOrder && !BuyOrder && !FridayLastHour) değişkeni = 4;
// satın alma sinyali, açık sipariş yok ve bu Cuma'nın son saati değil
// bir satın alma emri aç
durum 4:
OpenBuyOrder(Çoklar);
kırmak;

// if (Pattern > 0 && SellOrder && !BuyOrder && !FridayLastHour) değişkeni = 5;
// al sinyali, açık satış emri var, alış emri yok
// ve Cuma'nın son saati değil - arkanı dön
durum 5:
OpenBuyOrder(Lot + SellLot);
kırmak;

// if (Pattern > 0 && SellOrder && !BuyOrder && FridayLastHour) değişkeni = 6;
// al sinyali, açık satış emri var, alış emri yok
// ve bu Cuma'nın son saati - satış emrini kapat
durum 6:
CloseSellOrders();
kırmak;

durum 7:
// if (Sipariş && Satın Al) değişkeni = 7;
// açık çapraz siparişlerimiz var
if (WaitBeforeTransaction(WaitSeconds) == 1) // istekler arasında duraklat
{
if (LastBuyLots <= LastSellLots)
OrderCloseBy( BuyTicket, SellTicket);
başka
OrderCloseBy( SellTicket, BuyTicket);
}
kırmak;

// yoksa hiçbir şey yapma
varsayılan:
kırmak;
}
}

Umarım değişkenleri anlamışsınızdır.

İyi şanlar!

Neden: