Nasıl kodlanır? - sayfa 119

 

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 ??

 
matrixebiz:
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?

 
hiachiever:
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

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.

 

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;

 
matrixebiz:
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

 
Pussy Galore:
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

 
denis68:
Ş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,

Neden: