Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bence evet! Teşekkürler TheXpert!
Şimdi deneyeceğim!
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.
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!