
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
Bunun yanlış olup olmadığını anlamaya çalışıyorum;
for (int i=qqea_alert_x_candles_ago; i>0; i--) {
// int ben = 1;
qqea_up = iCustom(NULL,0,"QQE Uyarısı v3",0,i);
qqea_down = iCustom(NULL,0,"QQE Uyarısı v3",1,i);
if (qqea_up < qqea_down) {
if (i == 1) qqecross = Doğru;
qqea_long = Doğru;
qqea_short = Yanlış;
} else if (qqea_up > qqea_down) {
if (i == 1) qqecross = Doğru;
qqea_long = Yanlış;
qqea_short = Doğru;
}
}
}
"qqea_alert_x_candles_ago" çubukları geri gelene kadar geçerli sinyali kontrol etmelidir, ancak daha sonra (i == 1) vardır ve bu i==1 yalnızca bir kez olur ??
Bunun yanlış olup olmadığını anlamaya çalışıyorum;
for (int i=qqea_alert_x_candles_ago; i>0; i--) {
// int ben = 1;
qqea_up = iCustom(NULL,0,"QQE Uyarısı v3",0,i);
qqea_down = iCustom(NULL,0,"QQE Uyarısı v3",1,i);
Print("qqea_up: ", qqea_up, "qqea_down: ", qqea_down);
if (qqea_up < qqea_down) {
if (i == 1) qqecross = Doğru;
qqea_long = Doğru;
qqea_short = Yanlış;
} else if (qqea_up > qqea_down) {
if (i == 1) qqecross = Doğru;
qqea_long = Yanlış;
qqea_short = Doğru;
}
}
}
"qqea_alert_x_candles_ago" çubukları geri gelene kadar geçerli sinyali kontrol etmelidir, ancak daha sonra (i == 1) vardır ve bu i==1 yalnızca bir kez olur ??Görünüşte kodunuz iyi görünüyor, bu "qqea_alert_x_candles_ago" > 0 olduğu varsayılıyor.
Bu işe yaramazsa sorununuz, iCustom ile ilgili olarak büyük olasılıkla daha fazladır.
Bu işlevin doğru çalışması için, gerçek göstergedeki her giriş öğesi için bir giriş öğesi iletmeniz gerekir. Bunu yapmazsanız veya yanlış veri türlerini iletirseniz, icustom hiçbir şey döndürmez.
Yukarıdaki koda bir Print deyimi ekledim. iCustom'dan döndürülen değerlerin gerçekten herhangi bir şey içerip içermediğini belirlemek için bunu kullanın.
Şerefe,
Hiachiever
Çubukları saymak için gereken kodla ilgili yardım
My EA, açık bir pozisyonun stoploss'unu hesaplamak için bir dizi seçeneğe sahiptir. Bu seçeneklerden biri, son "x" sayıdaki fiyat çubuklarının en düşük değerini kullanmaktır.
Uzun bir pozisyon için bu seçeneğin stoploss'unu (SL) hesaplamak için şu anda EA içinde kullanılan kod satırı:
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBars, harici olarak girilen bir değişkendir.
Benim sorunum şu ki, pozisyon açıldığından beri StopLossBar'ların değerinin, stoploss için diğer koşullarımdan biri bu koşulda olana kadar sayılan her çubukla artmasını istiyorum. Sanırım şöyle bir kod satırı:
StopLossBars = StopLossBars + BarsCountedSincePositionOpened
hile yapacaktı. Maalesef kodlamam kes ve yapıştır ile oldukça sınırlı ve BarsCountedSincePositionOpened'i nasıl hesaplayacağımı veya kodlayacağımı bilmiyorum.
Biri bana nasıl yapacağımı söyleyebilir mi lütfen?
Görünüşte kodunuz iyi görünüyor, bu "qqea_alert_x_candles_ago" > 0 olduğu varsayılıyor.
Bu işe yaramazsa sorununuz, iCustom ile ilgili olarak büyük olasılıkla daha fazladır.
Bu işlevin doğru çalışması için, gerçek göstergedeki her giriş öğesi için bir giriş öğesi iletmeniz gerekir. Bunu yapmazsanız veya yanlış veri türlerini iletirseniz, icustom hiçbir şey döndürmez.
Yukarıdaki koda bir Print deyimi ekledim. iCustom'dan döndürülen değerlerin gerçekten herhangi bir şey içerip içermediğini belirlemek için bunu kullanın.
Şerefe,
HiachieverKod başka bir EA'dan ama döngü "qqea_alert_x_candles_ago" > 1'e gittiğinde bu ifadenin "if (i == 1) qqeacross = True;" olduğunu düşünüyordum. Şimdi Yanlış olurdu, doğru mu? i>qqea_alert_x_candles_ago tarihine kadar ne zaman True kalmalıdır.
Yardım ediyor
Sayın Baylar ve Bayanlar,
Bu kodlamayı bir meslektaşımdan aldım. Bana bunun SMA yukarı veya aşağı girişlerini işaret eden çok iyi bir Gösterge olması gerektiğini söyledi. Birisi aşağıdaki bu kodlama ile bir gösterge oluşturmama yardımcı olabilir.
/*[[
İsim := SMA Yukarı ve Aşağı
Ayrı Pencere := hayır
İlk Renk := Mavi
İlk Beraberlik Türü := Çizgi
İkinci Veriyi Kullan := Evet
İkinci Renk := Kırmızı
İkinci Çekiliş Tipi := Çizgi
]]*/
Girişler : MAPeriod(10), Bandwide_UP(20),Bandwide_DOWN(20);
Değişkenler : shift(0), cnt(0), sum(0), loopbegin1(0), loopbegin2(0), first(True), prevbars(0);
Değişkenler : MA(0);
SetLoopCount(0);
// ilk kontroller
MAPeriod < 1 ise Çıkış;
// ek çubuk yükleme veya toplam yeniden yükleme olup olmadığını kontrol edin
Eğer Çubuklar 1 O zaman önce = Doğru;
önceki çubuklar = Çubuklar;
// loopbegin1 ve loopbegin2 sayılan çubukların sayılmasını önler akımı hariç tutar
Önce Başla
loopbegin1 = Çubuklar-MAPeriod-1;
Eğer loopbegin1 < 0 ise Exit; // saymak için yeterli çubuk yok
loopbegin2 = Çubuklar-MAPeriod-1;
Eğer loopbegin2 < 0 ise Exit; // saymak için yeterli çubuk yok
ilk = Yanlış; // bu blok sadece bir kez değerlendirilecek
Son;
// Yakınsama ayrımı
loopbegin1 = loopbegin1+1; // mevcut çubuk da yeniden sayılacak
Shift için = loopbegin1 Aşağı 0 Başlangıcı
MA = iMA(MAPeriod,MODE_SMA,shift);
SetIndexValue(shift,(MA+Bandwide_UP*point));
SetIndexValue2(shift,(MA-Bandwide_DOWN*point));
loopbegin1 = loopbegin1-1; // önceki çubukların yeniden sayılmasını engelle
Son;
Saygılarımla,
Rogerio
kodla ilgili yardım gerekli
Şu anda aşağıdaki kodla ilgili yardıma ihtiyacım var, yalnızca AC sıfırın üzerinde veya altındaysa bir sipariş açar ve kırmızı yeşile dönerse ve vize ayeti açarsa açılmasını istiyorum
double AC1 = iAC(NULL, 0, Current + 0);
double AC2 = iAC(NULL, 0, Current + 1);
if ((AC1 < AC2)) Sıra = SIGNAL_CLOSEBUY;
Kod başka bir EA'dan ama döngü "qqea_alert_x_candles_ago" > 1'e gittiğinde bu ifadenin "if (i == 1) qqeacross = True;" olduğunu düşünüyordum. Şimdi Yanlış olurdu, doğru mu? i>qqea_alert_x_candles_ago tarihine kadar ne zaman True kalmalıdır.
Hayır bu doğru değil.
for döngüsünde 6'dan başlıyorsunuz ve 1'e düşüyorsunuz. Bu, son döngüde for döngüsünün yürüttüğü "if (i == 1) qqecross = True;" işlemini gerçekleştireceği anlamına gelir. kontrol et . Sonuç, qqecross meydana gelirse çıktının doğru olacağıdır.
Bunun sunabileceği tek sorun, önceki bir döngüde qqecross'un true olarak ayarlanmış olmasıdır. Bunun üstesinden gelmek için qqecross = false; for döngüsünden önce. Bu şekilde, eğer qqecross = true ise, bunun henüz tamamlanmış olan döngü tarafından ayarlandığından emin olabilirsiniz.
Şerefe,
hiachiever
My EA, açık bir pozisyonun stoploss'unu hesaplamak için bir dizi seçeneğe sahiptir. Bu seçeneklerden biri, son "x" sayıdaki fiyat çubuklarının en düşük değerini kullanmaktır.
Uzun bir pozisyon için bu seçeneğin stoploss'unu (SL) hesaplamak için şu anda EA içinde kullanılan kod satırı:
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBars, harici olarak girilen bir değişkendir.
Benim sorunum şu ki, pozisyon açıldığından beri StopLossBar'ların değerinin, stoploss için diğer koşullarımdan biri bu koşulda olana kadar sayılan her çubukla artmasını istiyorum. Sanırım şöyle bir kod satırı:
StopLossBars = StopLossBars + BarsCountedSincePositionOpened
hile yapacaktı. Maalesef kodlamam kes ve yapıştır ile oldukça sınırlı ve BarsCountedSincePositionOpened'i nasıl hesaplayacağımı veya kodlayacağımı bilmiyorum.
Biri bana nasıl yapacağımı söyleyebilir mi lütfen?Bunu yapmanın yolu, global kapsamda bir vriable oluşturmaktır (yani init'ten önce)
Örneğin
int BarCount;
int başlangıç ()
Ardından zararı durdurma kodunuzda aşağıdakileri kullanın:
if (BarCount<Bars)
{
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBars++;
BarCount=Barlar;
}
Bu, StopLossBar'ları her yeni çubukta 1 artıracaktır.
Kodunuza eklenen diğer tek şey, yeni bir ticaret açıldığında 'StopLossBars'ı orijinal varsayılan değerine sıfırlamak olacaktır.
Şerefe,
Hiachiever
Şu anda aşağıdaki kodla ilgili yardıma ihtiyacım var, yalnızca AC sıfırın üzerinde veya altındaysa bir sipariş açar ve kırmızı yeşile dönerse ve vize ayeti açarsa açılmasını istiyorum
double AC1 = iAC(NULL, 0, Current + 0);
double AC2 = iAC(NULL, 0, Current + 1);
if ((AC1 < AC2)) Sıra = SIGNAL_CLOSEBUY;Yaptığım şey, bu iki satırı kaldırarak gösterge kodundaki diğer iki arabelleği açmak veya görüntülemek;
// SetIndexLabel(1,NULL);
// SetIndexLabel(2,NULL);
Sonra değiştirilmiş AC'mle bir iCustom araması yaptı;
double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);
double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);
double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);
double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);
bool acbuy = ac2==0 && ac11==0; // Kırmızı, Yeşile dönüşür
bool acsell = ac1==0 && ac22==0; // Yeşil, Kırmızıya dönüşür
umarım yardımcı olur
matrixebiz bu iki satırı yeniden yazmaktan kastınız nedir; ve nasıl yaparım, denediğim AC indikatörünün koduna giremiyorum,