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
İşlem sunucusu tarafından siparişe atanan biletin numarasını veya başarısız olursa -1'i döndürür. Ek hata bilgisi almak için GetLastError() işlevi çağrılmalıdır.
Notlar:
Bir piyasa emrinin açılışında (OP_SELL veya OP_BUY), sadece Bid (satış için) veya Ask (satın almak için) en son fiyatları açık fiyat olarak kullanılabilir. Mevcut olandan farklı bir güvenlik ile işlem yapılırsa, bu güvenliğin alınabilmesi için en son fiyat teklifleri için MODE_BID veya MODE_ASK parametresi ile MarketInfo() fonksiyonunun kullanılması gerekir. Hesaplanmış veya normalleştirilmemiş fiyat uygulanamaz. Fiyat dizisinde talep edilen açılış fiyatı yoksa veya ondalık noktadan sonraki basamak miktarına göre normalleştirilmediyse, 129 hatası (ERR_INVALID_PRICE) üretilecektir. İstenen açılış fiyatı tamamen güncel değilse, slippage parametresinde bağımsız olarak 138 hatası (ERR_REQUOTE) oluşturulacaktır. İstenen fiyat güncel değilse ancak iş parçacığında mevcutsa, pozisyon cari fiyattan ve sadece cari fiyatın fiyat +- kayma aralığında olması durumunda açılacaktır.
StopLoss ve TakeProfit seviyeleri piyasaya çok yakın olamaz. MODE_STOPLEVEL parametresi ile MarketInfo() işlevi kullanılarak noktalardaki minimum durma seviyeleri elde edilebilir. Hatalı veya normalleştirilmemiş durdurma seviyeleri durumunda, 130 hatası (ERR_INVALID_STOPS) üretilecektir.
Bekleyen bir emir verilirken, açık fiyat piyasaya çok yakın olamaz. MODE_STOPLEVEL parametresi ile MarketInfo() işlevi kullanılarak, bekleyen fiyatın mevcut piyasadan bir puanlık minimum uzaklığı elde edilebilir. Bekleyen bir emrin yanlış açık fiyatı olması durumunda, 130 hatası (ERR_INVALID_STOPS) üretilecektir.
Bazı ticaret sunucularında bekleyen emir sona erme süresinin uygulanması devre dışı bırakılabilir. Bu durumda, süre sonu parametresinde sıfır olmayan bir değer belirtildiğinde, 147 hatası (ERR_TRADE_EXPIRATION_DENIED) üretilecektir.
Bazı ticaret sunucularında, açık ve bekleyen emirlerin toplam miktarı sınırlandırılabilir. Bu limit aşılırsa yeni pozisyon açılmaz (veya bekleyen emir verilmez) ve işlem sunucusu 148 hatası verir (ERR_TRADE_TOO_MANY_ORDERS).
//--- giriş parametreleri
dış int nokta=16;
harici int eşik=50;
dış çift lot=1;
harici int k=5000;
extern bool pl=true;
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
double bs=NormalizeDouble(iCustom(Symbol(),0,"Ortalama",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0,"Ortalama",period,1,0),Digits);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl==true)çift lot=MathMin(AccountFreeMargin()/k,5);
if(pl==yanlış)lot=lot;
if(SiparişToplam()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//Satın alma geciktiricisini açın.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//Bir satış gecikmesi açın.
}
if(SiparişToplam()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//En yakın siparişi seçin.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(SiparişToplam()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Mavi);}
if(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Kırmızı);}
if(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Mavi);}
if(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,lot,bs,3,ss,tpb,"",1394,0,Kırmızı);}
}
dönüş(0);
}
//+------------------------------------------- --------------------+