Sergey Kovalev'in ders kitabında bir uzman buldum - takip eden bir durdurma. MetaEditor'a kopyaladım, derledim ama program çalışmıyor. Lütfen bana sebebinin ne olduğunu söyle. Belki yanlış bir şey yapıyorum.
//------------------------------------------------ --------------------
// changestoploss.mq4
// MQL4 eğitiminde örnek olarak kullanılmak üzere tasarlanmıştır.
//------------------------------------------------ --------------------
harici int Tral_Stop=10; // Mah. zulüm
//------------------------------------------------ --------------- 1 --
int start() // Özel. başlatma işlevi
{
string Symb=Sembol(); // Finans. alet
//------------------------------------------------ --------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Sipariş üzerinden döngü
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Sonraki Varsa
{ // Siparişlerin analizi:
int İpucu=SiparişTürü(); // Sipariş türü
if(OrderSymbol()!=Symb||Tip>1)continue;// Bizim siparişimiz değil
double SL=OrderStopLoss(); // Seçilen siparişin SL'si.
//------------------------------------------------ ------ 3 --
while(true) // Döngüyü Değiştir
{
çift TS=Tral_Stop; // başlangıç değeri
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Min. uzak
if (TS<Min_Dist) // İzin verilenden az ise
TS=Min_Dist; // Yeni TS değeri
//------------------------------------------------ --- 4 --
bool Değiştir=yanlış; // modifiyeye atanmamış
switch(İpucu) // Sipariş tipine göre
{
durum 0 : // Siparişi satın al
if (NormalizeDouble(SL,Digits)< // Daha düşük isteniyorsa.
NormalizeDouble(Teklif-TS*Puan,Rakamlar))
{
SL=Teklif-TS*Noktası; // sonra değiştir
string Metin="satın al"; // Satın Al için Metin
Değiştir=doğru; // modifiyeye atandı.
}
kırmak; // Çıkış anahtarı
durum 1: // Satış emri
if (NormalizeDouble(SL,Digits)> // Daha yüksek isteniyorsa.
NormalizeDouble(Sor+TS*Puan,Rakamlar)
|| NormalizeDouble(SL,Digits)==0)//veya sıfır
{
SL=Sor+TS*Puan; // sonra değiştir
Metin="Sat"; // Satış için Metin
Değiştir=doğru; // modifiyeye atandı.
}
} // bitiş anahtarı
if (Değiştir==yanlış) // Değiştirilmediyse
kırmak; // iken çık
//------------------------------------------------ --- 5 --
çift TP =OrderTakeProfit(); // Seçilen siparişin TP'si.
doublePrice=OrderOpenPrice(); // Fiyat seçildi. ord.
int Bilet=OrderTicket(); // Seçilen numara. ord.
Uyarı ("Değiştirme",Metin,Bilet". Cevap bekleniyor..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Değiştirin!
//------------------------------------------------ --- 6 --
if (Ans==true) // Anladım :)
{
Alert("Sipariş",Metin,Bilet" değiştirildi :)");
kırmak; // Değiştir döngüsünden.
}
//------------------------------------------------ --- 7 --
int Hata=GetLastError(); // İşe yaramadı :(
switch(Error) // Önlenebilir Hatalar
{
case 130:Alert("Yanlış duraklar. Tekrar deneyelim.");
Yeniler(); // Veriyi güncelle
devam etmek; // Yolda. yineleme
case 136:Alert("Fiyat yok. Yeni bir onay işareti bekleniyor..");
while(RefreshRates()==false) // Bir sonraki onay işaretine kadar
Uyku(1); // Döngüde gecikme
devam etmek; // Yolda. yineleme
case 146:Alert("İşlem alt sistemi meşgul. Tekrar deneyelim");
Uyku(500); // Basit bir çözüm
Yeniler(); // Veriyi güncelle
devam etmek; // Yolda. yineleme
// Kritik hatalar
durum 2: Alert("Genel hata.");
kırmak; // Çıkış anahtarı
case 5 : Alert("Müşteri terminalinin eski versiyonu.");
kırmak; // Çıkış anahtarı
case 64: Alert("Hesap bloke edildi.");
kırmak; // Çıkış anahtarı
case 133:Alert("Ticaret yasak");
kırmak; // Çıkış anahtarı
varsayılan: Alert("Bir hata oluştu ",Hata);//Diğer. hatalar
}
kırmak; // Değiştir döngüsünden.
} // Değiştirme döngüsünün sonu.
//------------------------------------------------ ------ sekiz --
} // Sipariş analizi sonu.
} // Sipariş numaralandırmasının sonu.
//------------------------------------------------ --------------- dokuz --
dönüş; // başlangıçtan çık()
}
//------------------------------------------------ -------------- on --
Sergey Kovalev'in ders kitabında bir uzman buldum - takip eden bir durdurma. MetaEditor'a kopyaladım, derledim ama program çalışmıyor. Lütfen bana sebebinin ne olduğunu söyle. Belki yanlış bir şey yapıyorum.
Bunu kullan:
Kullanıcı değişkenlerinde şunu yazıyoruz:
externstring с 9 = "------ Трейлингстоп ------" ;
externint TrailingStop= 20 ; //Трейлинг-Стоп рыночного ордера. Если = 0 или то тарла нетexternint TrailingStep= 5 ; //Шаг трала рыночного ордераexternbool WaitProfit = true ; // Если true, то ждать профит = значению TrailingStop и только потом начинать тралить//Иначе, трейлинговать не дожидаясь положительного профита
extern string с10=" -------- Прочие параметры -------------";
extern int MAGIC=123456;//У ордеров открытых вручную MAGIC=0
extern int Proskalz=10;//Проскальзывание
Herkese merhaba...
Lütfen bana MetaTrader 4 geçmiş dosyalarının yolunu nasıl toplayacağımı söyler misiniz? "c:\program files\metatrader 4\history\alpari-classic\" gibi
Çok teşekkürler, sergeev , sanırım anladım ...
Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");
bu satır, editörün renklerde yanlış olmasına rağmen doğru yolu gösteriyor... Kodu muhtemelen bir not defterine yazmalısınız. Şaka.
Herkese iyi akşamlar!
Sergey Kovalev'in ders kitabında bir uzman buldum - takip eden bir durdurma. MetaEditor'a kopyaladım, derledim ama program çalışmıyor. Lütfen bana sebebinin ne olduğunu söyle. Belki yanlış bir şey yapıyorum.
mql ile mi yazılmış?
kodu gönder
//------------------------------------------------ -------------------- // changestoploss.mq4 // MQL4 eğitiminde örnek olarak kullanılmak üzere tasarlanmıştır. //------------------------------------------------ -------------------- harici int Tral_Stop=10; // Mah. zulüm //------------------------------------------------ --------------- 1 -- int start() // Özel. başlatma işlevi { string Symb=Sembol(); // Finans. alet //------------------------------------------------ --------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Sipariş üzerinden döngü { if (OrderSelect(i-1,SELECT_BY_POS)==true) // Sonraki Varsa { // Siparişlerin analizi: int İpucu=SiparişTürü(); // Sipariş türü if(OrderSymbol()!=Symb||Tip>1)continue;// Bizim siparişimiz değil double SL=OrderStopLoss(); // Seçilen siparişin SL'si. //------------------------------------------------ ------ 3 -- while(true) // Döngüyü Değiştir { çift TS=Tral_Stop; // başlangıç değeri int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Min. uzak if (TS<Min_Dist) // İzin verilenden az ise TS=Min_Dist; // Yeni TS değeri //------------------------------------------------ --- 4 -- bool Değiştir=yanlış; // modifiyeye atanmamış switch(İpucu) // Sipariş tipine göre { durum 0 : // Siparişi satın al if (NormalizeDouble(SL,Digits)< // Daha düşük isteniyorsa. NormalizeDouble(Teklif-TS*Puan,Rakamlar)) { SL=Teklif-TS*Noktası; // sonra değiştir string Metin="satın al"; // Satın Al için Metin Değiştir=doğru; // modifiyeye atandı. } kırmak; // Çıkış anahtarı durum 1: // Satış emri if (NormalizeDouble(SL,Digits)> // Daha yüksek isteniyorsa. NormalizeDouble(Sor+TS*Puan,Rakamlar) || NormalizeDouble(SL,Digits)==0)//veya sıfır { SL=Sor+TS*Puan; // sonra değiştir Metin="Sat"; // Satış için Metin Değiştir=doğru; // modifiyeye atandı. } } // bitiş anahtarı if (Değiştir==yanlış) // Değiştirilmediyse kırmak; // iken çık //------------------------------------------------ --- 5 -- çift TP =OrderTakeProfit(); // Seçilen siparişin TP'si. doublePrice=OrderOpenPrice(); // Fiyat seçildi. ord. int Bilet=OrderTicket(); // Seçilen numara. ord. Uyarı ("Değiştirme",Metin,Bilet". Cevap bekleniyor.."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Değiştirin! //------------------------------------------------ --- 6 -- if (Ans==true) // Anladım :) { Alert("Sipariş",Metin,Bilet" değiştirildi :)"); kırmak; // Değiştir döngüsünden. } //------------------------------------------------ --- 7 -- int Hata=GetLastError(); // İşe yaramadı :( switch(Error) // Önlenebilir Hatalar { case 130:Alert("Yanlış duraklar. Tekrar deneyelim."); Yeniler(); // Veriyi güncelle devam etmek; // Yolda. yineleme case 136:Alert("Fiyat yok. Yeni bir onay işareti bekleniyor.."); while(RefreshRates()==false) // Bir sonraki onay işaretine kadar Uyku(1); // Döngüde gecikme devam etmek; // Yolda. yineleme case 146:Alert("İşlem alt sistemi meşgul. Tekrar deneyelim"); Uyku(500); // Basit bir çözüm Yeniler(); // Veriyi güncelle devam etmek; // Yolda. yineleme // Kritik hatalar durum 2: Alert("Genel hata."); kırmak; // Çıkış anahtarı case 5 : Alert("Müşteri terminalinin eski versiyonu."); kırmak; // Çıkış anahtarı case 64: Alert("Hesap bloke edildi."); kırmak; // Çıkış anahtarı case 133:Alert("Ticaret yasak"); kırmak; // Çıkış anahtarı varsayılan: Alert("Bir hata oluştu ",Hata);//Diğer. hatalar } kırmak; // Değiştir döngüsünden. } // Değiştirme döngüsünün sonu. //------------------------------------------------ ------ sekiz -- } // Sipariş analizi sonu. } // Sipariş numaralandırmasının sonu. //------------------------------------------------ --------------- dokuz -- dönüş; // başlangıçtan çık() } //------------------------------------------------ -------------- on --Herkese iyi akşamlar!
Sergey Kovalev'in ders kitabında bir uzman buldum - takip eden bir durdurma. MetaEditor'a kopyaladım, derledim ama program çalışmıyor. Lütfen bana sebebinin ne olduğunu söyle. Belki yanlış bir şey yapıyorum.
Bunu kullan:
Kullanıcı değişkenlerinde şunu yazıyoruz:
Danışmanın başında şunu yazıyoruz:
// ----------------------------- Тралим ордера ------------------------------------ TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);Başladıktan sonra, kullanıcı rutinlerinde şunu yazıyoruz:
ModifError() gibi işlevler benim özel işlevlerimdir - sadece bir hata mesajı yazdırırlar. Bunun yerine mesajlarınızı yazın.
https://docs.mql4.com/en/indicators/iBands