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
...
Bu gönderiye bir göz atın: https://www.mql5.com/en/forum/174385/page12
Benzer bir problemle ilgiliydi ve aynı countOpenedOnACurrentBar'ı kullanabilirsiniz.
geçiş başına yalnızca bir işlem açmayı sınırlama işlevi
merhaba arkadaşlar ben acemiyim. Basit bir stratejim var. EMA geçtiğinde sadece kafa derisi yüzüyorum. Her geçişte sadece bir ticaret alıyorum. Her EMA geçişinde yalnızca bir ticaret alabilecek bir koda ihtiyacım var. Lütfen......
Basitçe EMA geçiş kodu ihtiyacı ........
Çok teşekkürler MLADEN ...
Sadece işlevini kontrol ediyorum. İyi görünüyor. Ayrıca biraz yardıma ihtiyacım var. EMA geçişi ile RSI(50) değeri eklemem gerekiyor ....nasıl yapabilirim..?
Çiftler: GBP/USD ve EUR/USD
Zaman çerçevesi: 15dk, 1 saat ve üzeri;
----------------------------------
SATIN AL: EMA 5 Çapraz EMA 12'yi yukarı, RSI 50'den büyük
SATIŞ: EMA 5 EMA 12'yi aşağı yönlü, RSI 50'den az
(her EMA geçişinde yalnızca bir işlem)
cevap bekliyorum. Lütfen.......
Bunu birkaç yolla yapabilirsiniz.
Bir yol (doğrudan EA'da) şöyle olabilir:
Gerekli tüm bilgilere sahipsiniz: gri çizgi "trend"dir. Yeşil ve Kırmızı çizgiler giriş ve tekrar giriş noktaları olarak kullanılabilir. Görsel olarak bir anda "optimize edebilir" ve ardından bu parametreleri EA'da kullanabilirsiniz (görsel olarak çok daha hızlı "optimizasyon", acı verici "parametreleri değiştirin, çalıştırın, neye sahip olduğunuzu görün ve sonra aynı şeyi tekrar tekrar" yapın. Ve EA'dan aramak oldukça kolay.
Sonuç olarak, her zaman bir Ea'dan bir gösterge kullanımı kullanmanızı öneririm. Ea'nın mantığını, sadece gösterge kodunuzu değiştirerek ve hassaslaştırarak, ona dokunmadan bile değiştirebilirsiniz, bu durumda EA, benim görüşüme göre, emirler ve para yönetimi için (sinyaller göstergeden geldiğinden beri) "sadece" bir çerçevedir. EA'ları kullanmanın en etkili yoludur. Göstergeyi de eklemek, böylece Ea'nızda hangi yolu (doğrudan veya "gösterge ile" yolu) kullanmak istediğinize karar verirsiniz.
Not: Yukarıdaki örneklerde testler mevcut (hala açık) çubuk üzerinde yapılır. Kapalı çubuğu test etmek istiyorsanız, 0 ve 1'i 1 ile ve iCustom(), iMa() ve iRSI() çağrılarında to ile değiştirin.
Çok teşekkürler MLADEN ...
Sadece işlevini kontrol ediyorum. İyi görünüyor. Ayrıca biraz yardıma ihtiyacım var. EMA geçişi ile RSI(50) değeri eklemem gerekiyor ....nasıl yapabilirim..?
Çiftler: GBP/USD ve EUR/USD
Zaman çerçevesi: 15dk, 1 saat ve üzeri;
----------------------------------
SATIN AL: EMA 5 Çapraz EMA 12'yi yukarı, RSI 50'den büyük
SATIŞ: EMA 5 EMA 12'yi aşağı yönlü, RSI 50'den az
(her EMA geçişinde yalnızca bir işlem)
cevap bekliyorum. Lütfen.......Ayın 1 bakiyesi?
Gidday Burada oturmuş, ekran görüntüsü için ayın 1'i için başlangıç bakiyesini çıkarmanın bir yolu olup olmadığını anlamaya çalışıyorum.
Yapmaya çalıştığım, 1. bakiye ile mevcut bakiye arasındaki yüzde farkını elde etmek.
Ben tüm yüzde farkı üzerinde var.
(Bakiye - Mevduat)/Mevduat*100
Aylık bir fark eklemek istiyorum.
(Denge - 1.)/1.*100
Herhangi bir ipucu ipucu veya gerçek kod harika olurdu.
Şerefe
Beno
Tekrar teşekkürler MALADEN ...
Göstergeniz ve tavsiyeniz için teşekkürler. Sadece talimatlarını takip etmeye çalışıyorum. Ama mq4'te beceriksiz olduğum için yapamadım.................
İŞTE BENİM..............
------------------------------------
-----------------------------------
#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 3
#özellik göstergesi_color1 KireçYeşil
#özellik göstergesi_color2 SolukVioletKırmızı
#özellik göstergesi_renk3 DarkGray
#özellik göstergesi_width1 2
#özellik göstergesi_width2 2
#özellik göstergesi_minimum -1.1
#özellik göstergesi_maksimum +1.1
harici int EmaFast = 5;
harici int EmaSlow = 12;
extern int EmaPrice = PRICE_CLOSE;
harici int RsiPeriod = 14;
extern int RsiPrice = PRICE_CLOSE;
çift kayıt[];
çift imza[];
çift eğilim[];
harici çift TakeProfit=15.0;
dış çift Lot = 0.1;
//------------------------------------------------ ------------------
//
//------------------------------------------------ ------------------
int init()
{
dönüş(0);
}
//------------------------------------------------ ------------------
//
//------------------------------------------------ ------------------
int başlangıç()
{
int count,counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Barlar-sayılan_barlar,Barlar-1);
int cnt, bilet, toplam;
double trendc = iCustom(NULL,0,"ema + rsi ikili",EmaFast,EmaSlow,EmaPrice,RsiPeriod,RsiPrice,2,0);
double trendp = iCustom(NULL,0,"ema + rsi ikili",EmaFast,EmaSlow,EmaPrice,RsiPeriod,RsiPrice,2,1);
eğer (trendc!=trendp)
toplam = SiparişlerToplam();
if(toplam < 1)
{
if (trendc== 1) //... satın alma sinyali
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Puan,"My EA",12345,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if (trendc==-1) //... sat sinyali
{
bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print(" SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
}
dönüş(0);
}
------------------------------------------
------------------------------------------
Yardımınıza ihtiyaçım var....
Rahatsız ettiğin için sana daha fazla bakarsam senden özür diledim. Ama gerçekten çaresizim...
cevap bekliyorum. Lütfen.......
...
Bunun gibi bir şey kullanmayı deneyin:
forMonth, 0 bakiyesinin geçerli ay olduğunu görmek istediğiniz geriye dönük aydır. Ardından, gerekli ayın ilk gününde bakiyenin ne olduğunu hesaplar. İşlev , para yatırma ve çekme işlemlerini de hesaba katacaktır (OrderType() == 6) bu nedenle sorunsuz çalışması gerekir.
Gidday Burada oturmuş, ekran görüntüsü için ayın 1'i için başlangıç bakiyesini çıkarmanın bir yolu olup olmadığını anlamaya çalışıyorum.
Yapmaya çalıştığım, 1. bakiye ile mevcut bakiye arasındaki yüzde farkını elde etmek.
Ben tüm yüzde farkı üzerinde var.
(Bakiye - Mevduat)/Mevduat*100
Aylık bir fark eklemek istiyorum.
(Denge - 1.)/1.*100
Herhangi bir ipucu ipucu veya gerçek kod harika olurdu.
Şerefe
Beno...
Göstergeden siparişleri yönetemezsiniz. Siparişleri yalnızca komut dosyalarından veya EA'lardan yönetebilirsiniz (aradığınız durum budur). Gönderinizden gelen kod bir göstergedir.
Gönderdiğim örnekler bir EA'dan kullanılacaktır (anladığım kadarıyla, zaten sipariş sayısını sınırlamak istediğiniz ve girişler için ema ve rsi koşullarını test etmek istediğiniz bir EA'nız var).
Tekrar teşekkürler MALADEN ...
Göstergeniz ve tavsiyeniz için teşekkürler. Sadece talimatlarını takip etmeye çalışıyorum. Ama mq4'te beceriksiz olduğum için yapamadım ................
İŞTE BENİM..............
------------------------------------
-----------------------------------
#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 3
#özellik göstergesi_color1 KireçYeşil
#özellik göstergesi_color2 SolukVioletKırmızı
#özellik göstergesi_color3 DarkGray
#özellik göstergesi_width1 2
#özellik göstergesi_width2 2
#özellik göstergesi_minimum -1.1
#özellik göstergesi_maksimum +1.1
harici int EmaFast = 5;
harici int EmaSlow = 12;
extern int EmaPrice = PRICE_CLOSE;
harici int RsiPeriod = 14;
extern int RsiPrice = PRICE_CLOSE;
çift kayıt[];
çift imza[];
çift eğilim[];
harici çift TakeProfit=15.0;
dış çift Lot = 0.1;
//------------------------------------------------ ------------------
//
//------------------------------------------------ ------------------
int init()
{
dönüş(0);
}
//------------------------------------------------ ------------------
//
//------------------------------------------------ ------------------
int başlangıç()
{
int count,counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Barlar-sayılan_barlar,Barlar-1);
int cnt, bilet, toplam;
double trendc = iCustom(NULL,0,"ema + rsi ikili",EmaFast,EmaSlow,EmaPrice,RsiPeriod,RsiPrice,2,0);
double trendp = iCustom(NULL,0,"ema + rsi ikili",EmaFast,EmaSlow,EmaPrice,RsiPeriod,RsiPrice,2,1);
eğer (trendc!=trendp)
toplam = SiparişlerToplam();
if(toplam < 1)
{
if (trendc== 1) //... satın alma sinyali
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Puan,"My EA",12345,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if (trendc==-1) //... sat sinyali
{
bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print("SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
}
dönüş(0);
}
------------------------------------------
------------------------------------------
Yardımınıza ihtiyaçım var....
Rahatsız ettiğin için sana daha fazla bakarsam senden özür diledim. Ama gerçekten çaresizim...
cevap bekliyorum. Lütfen.......Cevap için teşekkürler, MLADEN ,
Üzgünüm, sanırım bana bu kodu yeni bir EA'ya koymamı söyledin.
sadece cevabını anlamayı özledim...
EVET. Haklısın....
EA'm var ve değiştirmek istedim. Yeni bir durumla......
benim durumum:
-------------------------------------------------- ----
SATIN AL: EMA 5 Çapraz EMA 12'yi yukarı, RSI 50'den büyük
SATIŞ: EMA 5 EMA 12'yi aşağı yönlü, RSI 50'den az
Çıkış: Küçük Kar Al ile
(her EMA geçişinde yalnızca bir işlem)
işte benim EA'm.....
---------------------
---------------------
dış çift Lot = 0.1;
harici int TakeProfit=5;
harici int StopLoss=5;
harici int RSIPos=50;
harici int RSINeg=50;
extern int Kayma=2;
harici int terk=101;
tarihsaat bar zamanı=0;
int bartick=0;
çift p;
int cnt=0;
int OrdersPerSymbol=0;
çift boğaMA3=0;
çift ayıMA7=0;
çift RSI=0;
bool RSIPOS=0;
bool RSINEG=0;
çift TP;
çift SL;
int init()
{
if (Symbol()=="AUDUSD") {TakeProfit= 60; StopLoss= 23; terk etmek=103;}
if (Symbol()=="EURAUD") {TakeProfit= 95; StopLoss=141; terk etmek=33;}
if (Symbol()=="EURCHF") {TakeProfit= 81; StopLoss= 77; terk etmek=97;}
if (Symbol()=="EURGBP") {TakeProfit= 11; StopLoss= 77; terk etmek=108;}
if (Symbol()=="EURJPY") {TakeProfit= 38; StopLoss= 75; terk etmek=183;}
if (Symbol()=="EURUSD") {TakeProfit=35; StopLoss= 35; terk etmek=5;}
if (Symbol()=="GBPCHF") {TakeProfit= 79; StopLoss= 98; terk etmek=113;}
if (Symbol()=="GBPJPY") {TakeProfit= 13; StopLoss= 98; terk etmek=117;}
if (Symbol()=="GBPUSD") {TakeProfit= 55; StopLoss=100; terk etmek=69;}
if (Symbol()=="USDCAD") {TakeProfit= 66; StopLoss= 76; terk etmek=106;}
if (Symbol()=="USDCHF") {TakeProfit=117; StopLoss= 78; terk etmek=111;}
if (Symbol()=="USDJPY") {TakeProfit= 53; StopLoss= 74; terk etmek=110;}
}
int tanım()
{
}
int başlangıç()
{
p=Nokta;
// Hata denetimi ve çubuk sayma
if(AccountFreeMargin()<(200*Lot)) {Print("-----PARA YOK"); dönüş (0);}
if(Bars<100) {Print("-----BAR YOK "); dönüş (0);}
if(bartime!=Zaman[0]) {bartime=Zaman[0]; bartic++;}
bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);
bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);
RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);
if(RSI>RSIPos) {RSIPOS=true; RSINEG=yanlış;}
if(RSI<RSINeg) {RSIPOS=yanlış; RSINEG=doğru;}
OrdersPerSymbol=0;
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol()==Symbol() )
{
OrdersPerSymbol++;
}
}
if(OrdersPerSymbol==0)
{
if(bullMA3>(bearMA7+p) && RSINEG)
{
SL=Sor-(Kaybı Durdur*p);
TP=Sor+(Kar Al*p);
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"SATIN AL"+CurTime(),0,0,Beyaz);
çubuk = 0;
}
if(bullMA3<(bearMA7-p) && RSIPOS)
{
SL=Teklif+(Kaybı Durdur*p);
TP=Teklif-(Kar Al*p);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"SAT"+CurTime(),0,0,Red);
çubuk = 0;
}
}
if(OrdersPerSymbol==1 && bartick==vazgeç)
{
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),Lots,Bid,Slippage,Beyaz);
SL=Teklif+(Kaybı Durdur*p);
TP=Teklif-(Kar Al*p);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"SAT"+CurTime(),0,0,Red);
bartic++;
}
if(OrderType()==OP_SEL)
{
OrderClose(OrderTicket(),Lots,Ask,Slippage,Red);
SL=Sor-(Kaybı Durdur*p);
TP=Sor+(Kar Al*p);
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"SATIN AL"+CurTime(),0,0,Beyaz);
bartic++;
}
}
for(cnt=0;cnt<SiparişlerToplam();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol()==Symbol() )
{
if(OrderType()==OP_BUY)
{
if (OrderMagicNumber()==0)
{
if( Bid-OrderOpenPrice() > 3*Puan )
{
OrderClose(OrderTicket(),Lots,Bid,0,Beyaz);
dönüş(0);
}
}
}
if(OrderType()==OP_SEL)
{
if (OrderMagicNumber()==0)
{
if( OrderOpenPrice()-Ask > (3*Puan))
{
OrderClose(OrderTicket(),Lots,Ask,0,Kırmızı);
dönüş(0);
}
}
}
}
}
dönüş(0);
}
-------------------
---------------------
Nasıl değiştirebilirim....? Cevap için bekliyorum. Lütfen.......
dipu
Girişler söz konusu olduğunda, bu iyi çalışıyor
Şimdi çıkışlara dikkat edin, bunu yazdığınız şekilde çok erken kapatıyorsunuz. Ayrıca 5 haneli komisyoncu da ilgileniyor ve girişler olması gerektiği gibi çalışıyor. rsi için varsayılan süre 14 olarak ayarlanmıştır (hangisini kullanmak istediğinizi bilmiyordum, kodda 2. dönemi kullanıyorsunuz ama bu muhtemelen çok kısa). Ema periyotları varsayılan olarak 5 ve 12'dir. Ayrıca şu anda kapalı bir barı test ediyor (bar kapanana kadar bekler ve sonra al sat sinyali varsa emri girer)
Cevap için teşekkürler, MLADEN ,
net bilgi için üzgünüm değil ......
SATIN AL: EMA 5 EMA 12'yi yukarı doğru çapraz, RSI[14] 50'den büyük
SATIŞ: EMA 5 EMA 12'yi aşağı yönlü, RSI[14] 50'den az
Çıkış: küçük TP/Sl ile...(5pip)
(her EMA geçişinde yalnızca bir işlem)
Sadece deneyeceğim ve sonucu size bildireceğim....
O da değişsin.. ya da olmasın..
Yardımın için tekrar teşekkürler.....