[Arşiv!] Ücretsiz danışman yazacağım - sayfa 83

 
int SiparişGönder ( string sembolü, int cmd, çift hacim, çift fiyat, int kayma, çift stoploss, çift kâr alma, string yorum=NULL, int magic=0, datetime son kullanma=0, color arrow_color=CLR_NONE)
Bir pozisyon açmak veya bekleyen bir emir vermek için kullanılan ana fonksiyon.
İş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).
parametreler:
semboller - Ticaret için sembol.
cmd - Operasyon türü. Herhangi bir Ticaret işlemi numaralandırması olabilir.
Ses - Parti sayısı.
fiyat - İşlemin tercih edilen fiyatı.
kayma sayfası - Alış veya satış emirleri için maksimum fiyat kayması.
kaybı durdurmak - zarar seviyesini durdur.
kar almak - kar seviyesi al.
yorum - Yorum metni sipariş edin. Yorumun son kısmı sunucu tarafından değiştirilebilir.
büyü - Sihirli numara sipariş edin. Kullanıcı tanımlı tanımlayıcı olarak kullanılabilir.
son - Siparişin sona erme süresi (yalnızca bekleyen siparişler için).
ok_renk - Grafikteki açılış okunun rengi. Parametre eksikse veya CLR_NONE değerine sahipse grafikte açma oku çizilmez.
 
#özellik bağlantısı "dwgrell@gmail.com"

//--- 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);
}
//+------------------------------------------- --------------------+
 
#property link "dwgrell@gmail.com"

//--- input parameters
extern int period=16;
extern int porog=50;

extern double lot=1;
extern int k=5000;

extern bool pl=true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double bs=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,1,0),Digits);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
if(pl==false)lots=lot;
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);//Открываем отложник на покупку.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);//Открываем отложник на продажу.
}
if(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//Выбираем ближайший ордер.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,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,0,0,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,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(OrdersTotal()==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,0,0,"",1394,0,Blue);}
if(OrderType()==OP_SELL) {/*OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);*/
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {/*OrderModify(OrderTicket(),bs,ss,tpb,0,Red);*/
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){/*OrderModify(OrderTicket(),ss,bs,tps,0,Blue);*/
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);}
}

return(0);
}
//+------------------------------------------------------------------+
 
Hesap: 154603 İsim: Dmitry Para birimi: Amerikan Doları 12 Temmuz 2011
Kapanan İşlemler:
Bilet açık zaman tip boy kalem fiyat S/L T/P kapanış Vakti fiyat komisyon vergiler Takas Kâr
3705573 2011.07.12 13:57 satın almak 2.16 euro 1.3982 1.3973 1.4065 2011.07.12 14:13 1.3973 0,00 0,00 0,00 -194.40
3705328 2011.07.12 13:19 satın almak 2.01 euro 1.3924 1.3899 1.3948 2011.07.12 13:49 1.3948 0,00 0,00 0,00 482.40
3705356 2011.07.12 13:14 satmak 2.17 euro 1.3900 1.3924 1.3876 2011.07.12 13:19 1.3924 0,00 0,00 0,00 -520.80
3705285 2011.07.12 13:05 satmak 2.17 euro 1.3914 1.3924 1.3904 2011.07.12 13:11 1.3904 0,00 0,00 0,00 217.00
3705278 2011.07.12 13:04 satın almak 2.17 euro 1.3924 1.3914 1.3934 2011.07.12 13:05 1.3914 0,00 0,00 0,00 -217.00
3704812 2011.07.12 11:32 satın almak 2.40 euro 1.3959 1.3914 1.4020 2011.07.12 13:01 1.3914 0,00 0,00 0,00 -1 080.00
3704030 2011.07.12 13:01 satmak 1.88 euro 1.3914 1.3917 1.3911 2011.07.12 13:01 1.3917 0,00 0,00 0,00 -56.40
3704158 2011.07.12 10:22 satın almak 2.13 euro 1.3896 1.3898 1.3958 2011.07.12 11:30 1.3958 0,00 0,00 0,00 1 320.60
3704063 2011.07.12 10:12 satın almak 2.02 euro 1.3861 1.3834 1.3888 2011.07.12 10:21 1.3888 0,00 0,00 0,00 545.40
3704020 2011.07.12 10:05 satın almak 1.92 euro 1.3848 1.3834 1.3859 2011.07.12 10:12 1.3859 0,00 0,00 0,00 211.20
3704001 2011.07.12 10:04 satmak 1,95 euro 1.3837 1.3848 1.3831 2011.07.12 10:05 1.3848 0,00 0,00 0,00 -214.50
3703505 2011.07.12 10:01 satın almak 1.82 euro 1.3843 1.3837 1.3849 2011.07.12 10:04 1.3837 0,00 0,00 0,00 -109.20
3703920 2011.07.12 09:52 satmak 2.04 euro 1.3845 1.3843 1.3755 2011.07.12 10:01 1.3843 0,00 0,00 0,00 40.80
3703631 2011.07.12 09:12 satmak 1.88 euro 1.3892 1.3935 1.3849 2011.07.12 09:50 1.3849 0,00 0,00 0,00 808.40
3703533 2011.07.12 09:03 satmak 1.80 euro 1.3915 1.3935 1.3895 2011.07.12 09:10 1.3895 0,00 0,00 0,00 360,00
3703506 2011.07.12 09:02 satmak 1.82 euro 1.3927 1.3930 1.3924 2011.07.12 09:02 1.3930 0,00 0,00 0,00 -54.60
 
Bunu gerçekten tavsiye etmem.
 
grell benim zararımı durdur ayarlanmadı
 
mumun dibinde kaybı durdur
 
veya hangi sıraya bağlı olarak maksimum
 
Danışmanın kodunu incelemeye çalışın ve neden hadım edildiğini anlayacaksınız. orada her şey basit, çünkü test cihazı için yazdım. Ama garip bir şekilde, her şey çalışıyor.
 
Dürüst olmak gerekirse, MQL programlamasını anlamıyorum.