Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 539
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
Teşekkür ederim! Anlaşılan çocuk gibi mutluydum ama danışman "yenilerini" koymayı bıraktı. Söyle bana, nerede hata yaptın?
Huh, bir hata buldum, orijinal olarak baktığım yerde değil. Bir sonraki görevi kendi başınıza halledemezsiniz.
Bana sapma aralığını nasıl ayarlayacağımı söyle - MA'dan fiyatın kaldırılması.
İşte giriş kısmı
Huh, bir hata buldum, orijinal olarak baktığım yerde değil. Bir sonraki görevi kendi başınıza halledemezsiniz.
Bana sapma aralığını nasıl ayarlayacağımı söyle - MA'dan fiyatın kaldırılması.
İşte giriş kısmı
Ve buna göre, koşul
Danışmandaki ilk verileri doğru bir şekilde (1 alış, -1 satış) olarak değiştirmeniz gerekir.
//+------------------------------------------- --------------------+
//| SimpleBars_rob.mq4 |//| Copyright © 2010, ENSED Ekibi |
//| http://www.ensed.org |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2010, ENSED Ekibi"
#özellik bağlantısı "http://www.ensed.org"
extern int SL = 50, // zararı durdur değeri (puan olarak)
TP=150; // kar değerini al (puan olarak)
harici çift Lot = 0.1; // çalışma partisi (mikro lot - 0.01, mini lot - 0.1, normal lot - 1.0)
harici string Order_Comment = "robot"; // siparişlerle birlikte verilen yorum
extern int Kayma = 5; // izin verilen maksimum kayma seviyesi (puan olarak)
harici int Magic_Number = 777; // sihirli sayı - robot için siparişler ("kendi" anlaşmalarını ayırt etmek için)
harici bool Play_Sound = yanlış; // açılışta ses çal: true - izin verildi, false - devre dışı
//------------------------------------------------ -------------------------------------------------- ------------------+
//+ SimpleBars göstergesinin zaman çerçevelerini ve parametrelerini ayarlama |
dış int nokta = 6;
extern bool useClose = true;
dış int genişlik = 3;
//+ SimpleBars göstergesinin zaman çerçevelerini ve parametrelerini ayarlama |
//------------------------------------------------ -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//+ sondaki durdurma |
extern bool UseTrailing = true; // takip eden durdurmayı etkinleştir/devre dışı bırak
extern int TrailingStop = 50; // sabit sondaki durma boyutu (puan olarak)
extern int TrailingStep = 1; // sondaki durdurma adımı (nokta olarak)
//+ sondaki durdurma |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| işlev. program başlatıldığında yürütülür |
geçersiz init() {
if(GlobalVariableCheck("this_bar"+Symbol()+Period()))
GlobalVariableDel("this_bar"+Symbol()+Period());
dönüş;
}
//| işlev. program başlatıldığında yürütülür |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| işlev. program başlatmama sırasında yürütülür |
geçersiz tanım() {
if(GlobalVariableCheck("this_bar"+Symbol()+Period()))
GlobalVariableDel("this_bar"+Symbol()+Period());
dönüş;
}
//| işlev. program başlatmama sırasında yürütülür |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| ticaret sinyali arama fonksiyonu |
int fsinyaller() {
çift sinyal = iCustom(NULL, 0, "SimpleBars", nokta, 0, 1, 4, 0);
dönüş(0); // bir satın alma açmak için sinyal
dönüş(1); // bir satış açmak için sinyal
dönüş(-1); // sinyal yok
} // int fsinyalleri sonlandır()
//| ticaret sinyali arama fonksiyonu |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| robotun bu çubukta çalıştığı gerçeğini izlemek için işlev |
bool this_bar() {
Eğer(
(!GlobalVariableCheck("this_bar"+Symbol()+Period()))
|| (GlobalVariableGet("this_bar"+Symbol()+Period())!=Zaman[0])
) {
GlobalVariableSet("this_bar"+Symbol()+Period(),Time[0]);
dönüş(yanlış);
} başka {
dönüş(doğru);
} //eğer if (.. (!GlobalVariableCheck("this_bar"+Symbol()+Period())) biter
} // bool sonu this_bar()
//| robotun bu çubukta çalıştığı gerçeğini izlemek için işlev |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| bu tür siparişler için arama fonksiyonu |
bool find_orders(int magic=-1, int type=-1, string symb="NULL") {
/*, verilen sembol için verilen sihirli sayı ile bu türden en az bir sıra bulunursa true değerini döndürür */
for (int i=OrdersTotal()-1; i>=0; i--) {
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) ara;
if(((OrderType()==type) || (type==-1))
&& ((OrderMagicNumber()==sihir) || (sihir==-1))
&& ((OrderSymbol()==Symbol() || (symb=="YOK")))) {
// sıra bulunursa, true değerini döndürün ve döngüden çıkın
dönüş(doğru);
kırmak;
} //end if((OrderType()==type) && (OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
} //end for (int i2=Sipariş Toplamı()-1; i2>=0; i2--)
dönüş(yanlış); // yanlış döndür
} // bitiş bool bul_sıraları(int büyü, int türü)
//| bu tür siparişler için arama fonksiyonu |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| siparişler için Zarar Durdur değerini hesaplama işlevi |
double sl(int sl_value, int type, double fiyat=0.0, string symb="YOK", int rmode=1) {
//type=0 -> pazar alımları
//type=1 -> pazar satışları
if(symb=="YOK") symb=Symbol();
if(type==0) fiyat=NormalizeDouble(MarketInfo(symb,MODE_ASK),MarketInfo(symb,MODE_DIGITS));
if(type==1) fiyat=NormalizeDouble(MarketInfo(symb,MODE_BID),MarketInfo(symb,MODE_DIGITS));
if(sl_value<=0) return(0);
if(rmode==1) {
if((type==0) || (type==2) || (type==4)) return(MarketInfo(symb,MODE_ASK)-sl_value*MarketInfo(symb,MODE_POINT)); // satın almalar için
if((type==1) || (type==3) || (type==5)) return(MarketInfo(symb,MODE_BID)+sl_value*MarketInfo(symb,MODE_POINT)); //indirimde
}
if(rmode==2) {
if((type==0) || (type==2) || (type==4)) return(MarketInfo(symb,MODE_BID)-sl_value*MarketInfo(symb,MODE_POINT)); // satın almalar için
if((type==1) || (type==3) || (type==5)) return(MarketInfo(symb,MODE_ASK)+sl_value*MarketInfo(symb,MODE_POINT)); //indirimde
}
} // double sl'yi sonlandır(int sl_value, int tipi, double fiyat=0.0, string symb="YOK", int rmode=1)
//| siparişler için Zarar Durdur değerini hesaplama işlevi |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| siparişler için Kar Al hesaplama fonksiyonu |
double tp(int tp_value, int type, double fiyat=0.0, string symb="YOK") {
//type=0 -> pazar alımları
//type=1 -> pazar satışları
if(symb=="YOK") symb=Symbol();
if(type==0) fiyat=NormalizeDouble(MarketInfo(symb,MODE_ASK),MarketInfo(symb,MODE_DIGITS));
if(type==1) fiyat=NormalizeDouble(MarketInfo(symb,MODE_BID),MarketInfo(symb,MODE_DIGITS));
if(tp_value<=0) return(0);
if((tip==0) || (tür==2) || (tür==4)) dönüş(fiyat+tp_değeri*MarketInfo(symb,MODE_POINT)); // satın almalar için
if((type==1) || (type==3) || (type==5)) return(MarketInfo(symb,MODE_BID)-tp_value*MarketInfo(symb,MODE_POINT)); //indirimde
} // double tp'yi sonlandır(int tp_value, int tipi, double fiyat=0.0, string symb="YOK")
//| siparişler için Kar Al hesaplama fonksiyonu |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| sipariş açma işlevi |
void open_positions(int sinyal, çift lot, çift fiyat=0.0, string symb="YOK") {
//signal=0 -> bir satın alma açma sinyali
//signal=1 -> satış açma sinyali
/* extern */ int Count_Of_Trade_Try=5, Pause_Of_Trade_Try=5;
int ben = 0; // döngü sayacı için değişken
int hata = 0;
if(symb=="YOK") symb=Symbol();
if(sinyal==0)
fiyat=NormalizeDouble(MarketInfo(symb,MODE_ASK),MarketInfo(symb,MODE_DIGITS)); // alımlar için açık fiyat
if(sinyal==1)
fiyat=NormalizeDouble(MarketInfo(symb,MODE_BID),MarketInfo(symb,MODE_DIGITS)); // açılış fiyatını sat
while(i<=Count_Of_Trade_Try) {
//kendi kendini açan sipariş fonksiyonu (yerleşik). Algılama kolaylığı için parametreler farklı satırlara ayrılmıştır:
int bilet = OrderSend(Symbol(), //symbol)
sinyal, // sipariş tipi
çok, //hacim
fiyat, //açık fiyat
Kayma, // kabul edilebilir teklif seviyesi
sl(SL,sinyal), //Kaybı Durdur değeri
tp(TP,sinyal), //Kar Al değeri
Order_Comment, //sipariş yorumu
Magic_Number, //sihirli sayı
0, //son kullanma tarihi (bekleyen siparişler için kullanılır)
CLR_NONE); // grafikte görüntülenen okun rengi (CLR_NONE - ok çizilmez)
if(ticket!=-1) // eğer açılış başarılıysa, bir grafik nesnesi çizin ve döngüden çıkın
kırmak;
err=GetLastError();
if(err!=0) Print("Hata: "+Market_Err_To_Str(err));
ben++;
Uyku(Pause_Of_Trade_Try*1000); // hata durumunda tekrar denemeden önce duraklatın
} // while'ı sonlandır(i<=say)
} // end void open_positions(int sinyal, çift lot, çift fiyat=0.0, string symb="YOK")
//| sipariş açma işlevi |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------+
//| hata kodu şifre çözme işlevi |
string Market_Err_To_Str(int hata) {
/* fonksiyon sadece ticari hata kodlarını kapsar */
geçiş(hata) {
case(0): return("Hata yok");
case(1): return("Hata yok ama sonuç bilinmiyor");
case(2): return("Genel hata");
case(3): return("Yanlış parametreler");
case(4): return("Ticaret sunucusu meşgul");
case(5): return("Müşteri terminalinin eski versiyonu");
case(6): return("Ticaret sunucusuna bağlantı yok");
case(7): return("Yetersiz haklar");
case(8): return("Talepler çok sık");
case(9): return("Sunucuyu bozan yasadışı işlem");
case(64): return("Hesap bloke edildi");
case(65): return("Yanlış hesap numarası");
case(128): return("Anlaşma zaman aşımı süresi doldu");
case(129): return("Yanlış fiyat");
case(130): return("Yanlış duraklar");
case(131): return("Yanlış hacim");
case(132): return("Piyasa kapandı");
case(133): return("Ticaret yasaktır");
case(134): return("İşlemi tamamlamak için yeterli para yok");
case(135): return("Fiyat değişti");
case(136): return("Fiyat yok");
case(137): return("Broker meşgul");
case(138): return("Yeni fiyatlar");
case(139): return("Sipariş bloke edildi ve halihazırda işleniyor");
case(140): return("Yalnızca satın almaya izin verilir");
case(141): return("Çok fazla istek");
case(145): return("Sipariş piyasaya çok yakın olduğu için değişiklik yapılması yasaktır");
case(146): return("Ticaret alt sistemi meşgul");
case(147): return("Komisyoncu tarafından son kullanma tarihinin kullanılması yasaktır");
case(148): return("Açık ve bekleyen emirlerin sayısı komisyoncu tarafından belirlenen limite ulaştı");
case(149): return("Hedging yasak ise, mevcut bir pozisyona zıt bir pozisyon açmaya çalışın");
case(150): return("FIFO kuralına aykırı olarak bir enstrümanda pozisyon kapatmaya teşebbüs");
varsayılan: dönüş("");
} // bitiş anahtarı(hata)
} //dizi sonu Err_To_Str(int hata)
//| hata kodu şifre çözme işlevi |
//+------------------------------------------- -------------------------------------------------- ------+
//+------------------------------------------- -------------------------------------------------- ------+
//| Kapanış işlemleri |
//+------------------------------------------- -------------------------------------------------- ---+
//| numarasına (bilet) göre bir siparişi kapatma işlevi |
bool close_by_ticket(int c_ticket, int kayma) {
/*
bir anlaşmayı numarasına (bilet) göre kapatma işlevi.
Bir piyasa emrini kapatırken, izin verilen maksimum kayma (kayma) seviyesi dikkate alınır.
*/
/* extern */ int Count_Of_Trade_Try=5, Pause_Of_Trade_Try=5;
int ben = 0; // döngü sayacı için değişken
int hata = 0;
bool bilet = yanlış; // anlaşmayı kapatmanın (un)başarısız olduğunu gösteren değişken
çift fiyat = 0.0; //kapanan anlaşmanın fiyatı (piyasa emirleri için)
if(OrderSelect(c_ticket,SELECT_BY_TICKET,MODE_TRADES)) { //bilete göre bir sipariş seçin
if(OrderType()==OP_BUY) fiyat = NormalizeDouble(Teklif,Rakamlar); // satın alma fiyatı
if(OrderType()==OP_SEL) fiyat = NormalizeDouble(Sor,Rakamlar); //satış fiyatı
for(i=0;i<=Count_Of_Trade_Try;i++) {
if(OrderType()<=1) //piyasa emriyse kapatın, bekliyorsa silin
bilet=OrderClose(OrderTicket(),OrderLots(),fiyat,kayma,CLR_NONE);
başka
bilet=OrderDelete(OrderTicket());
if(ticket) { //eğer kapatma veya silme başarılıysa, true döndür ve döngüden çık
dönüş(doğru);
kırmak;
} // if(bilet) sonlandır
err=GetLastError();
if(err!=0) Print("Hata: "+Market_Err_To_Str(err));
Uyku(Pause_Of_Trade_Try*1000); // hata durumunda tekrar denemeden önce duraklatın
} //end for(i=0;i<=Count_Of_Trade_Try;i++)
} //son if(OrderSelect(c_ticket,SELECT_BY_TICKET,MODE_TRADES))
dönüş(yanlış); // yanlış döndür
} // bitiş bool close_by_ticket(int c_ticket)
//| numarasına (bilet) göre bir siparişi kapatma işlevi |
//+------------------------------------------- -------------------------------------------------- ---+
bool cbm(int büyü, int kayma, int türü) {
/*
büyü ile kapat (verilen türdeki tüm siparişleri verilen MagicNumber ile kapatarak)
İzin verilen maksimum kayma dikkate alınır
close_by_ticket işlevi kullanılır.
*/
int n = 0;
while (find_orders(sihir, tür))
for (int i2=SiparişlerToplam()-1; i2>=0; i2--) {
if (!OrderSelect(i2,SELECT_BY_POS,MODE_TRADES)) kırılması;
if ((OrderType()==type) && (OrderMagicNumber()==sihir)) {
close_by_ticket(OrderTicket(), kayma);
n++;
} //son if (((OrderType()==OP_BUY) || (OrderType()==OP_SELL)) && (OrderMagicNumber()==magic))
} //end for (int i2=Sipariş Toplamı()-1; i2>=0; i2--)
if(n>0)
dönüş(doğru);
dönüş(yanlış);
} // bool sonu cbm(int büyü, int kayma, int türü)
//| Kapanış işlemleri |
//+------------------------------------------- -------------------------------------------------- ------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| takip eden durdurma kaybı |
geçersiz T_SL() {
if(!UseTrailing) dönüşü;
int ben = 0;
for(i=0; i<SiparişToplam(); i++) {
if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) devam;
if(OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic_Number) devam ediyor;
if(OrderType()==OP_BUY) {
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingStop*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Teklif-(TrailingStop+TrailingStep-1)*Nokta,Rakamlar))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingStop*Point,Digits))
} // if(OrderType()==OP_BUY) sonlandır
if(OrderType()==OP_SEL) {
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Sor+(TrailingStop+TrailingStep-1)*Nokta,Rakamlar))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //son if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Digits))
} // if(OrderType()==OP_SELL) sonlandır
} //end for(i=0; i<OrdersTotal(); i++)
} // void'i sonlandır T_SL()
//| takip eden durdurma kaybı |
//+------------------------------------------- -------------------------------------------------- ------------------+
//+------------------------------------------- -------------------------------------------------- ------------------+
//| ana işlev |
geçersiz başlangıç() {
int işaret = fsinyaller();
if(!find_orders(Magic_Number)) {
if((sig!=-1)) {
if(!this_bar()) {
open_positions(sig, Lot);
if(Play_Sound)
PlaySound("alert.wav");
}
} // if((sig!=-1) && (!this_bar())) sonlandır
} başka {
if(sig==0) {
if(cbm(Magic_Number, Slipage, 1)) {
open_positions(sig, Lot);
if(Play_Sound)
PlaySound("alert.wav");
} // if(cbm(Magic_Number, Slipage, 1)) sonlandır
} // if(sig==0) sonlandır
if(sig==1) {
if(cbm(Magic_Number, Slippage, 0)) {
open_positions(sig, Lot);
if(Play_Sound)
PlaySound("alert.wav");
} // if(cbm(Magic_Number, Slipage, 0)) sonlandır
} // if(sig==1) sonlandır
TSL();
} // if(!find_orders(Magic_Number)) sonlandır (başka)
dönüş;
}
//| ana işlev |
//+------------------------------------------- -------------------------------------------------- ------------------+
Merhaba bilenler. Yardım - çalışmıyor. Sanırım değişkenlerin başlatılmasıyla kafam karıştı. Başım dönüyor, ama herhangi bir hata bulamıyorum.
EA, pozisyonları açmak yerine, Klose(0) fiyatında oklar çizmeli ve kapanış yerine - bir çarpı işareti koymalı ve verileri ( fExpiration_func(Expiration), fop_time, cl_time, fop_price, cl_price, ftype) yeni bir satıra yazdırmalıdır.
Burada stokastik sadece bir örnek olarak alınmıştır.
O zaman soru, iki değerin nasıl döndürüleceğidir. Bu şekilde denedim ama hatalar
O zaman soru, iki değerin nasıl döndürüleceğidir. Bu şekilde denedim ama hatalar
O zaman soru, iki değerin nasıl döndürüleceğidir. Bu şekilde denedim ama hatalar
Ve değişkenler kullanmayı denemedi. Aniden yardım
sakıncası yoksa yardım et
danışmana göstergeye göre ticaret yapmayı öğretin
BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910
UP= iCustom(Symbol(),NULL,"Şimdi",BQuant,0,0);
DOW= iCustom(Symbol(),NULL,"Şimdi",BQuant,1,0);
if(DOW){OrderSend(Symbol(), OP_SELL, Lot, Bid, Slip, 0, 0, "Forex-Robots.ru SAT", Magic, 0,Red);}
if(UP ){OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip, 0, 0, "Forex-Robots.ru BUY", Magic, 0,Blue);}
Yorum
(
"\n Kar: ", YUKARI,
"\n Kar: ", DOW
);
Değerleri yorum yoluyla almaya çalıştım ama her zaman statikler, bu göstergede verilerin nasıl görüntülendiğini söyle
Ve değişkenler kullanmayı denemedi. Aniden yardım
Teşekkürler Çalışıyor
sakıncası yoksa yardım et
danışmana göstergeye göre ticaret yapmayı öğretin
BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910