Kodlama yardımı - sayfa 73

 

Merhaba,

Umarım birileri, yapmayı sevdiğim şeyi yapmak için bir gösterge elde etmede yardımcı olabilir.

Gövde uzunluğunu / veya toplam mum uzunluğunu ve ayrıca mum çubuğunun süresini gösteren bir göstergem var.

Tek sorun, 5 Haneli brokerler için uygun olmaması; Basamak 4'te mükemmelken zaman ve uzunluk birbirinin üzerine yansıtılır .

Birisinin kodu değiştirmeye istekli ve yetenekli olması çok güzel olurdu.

Şimdiden teşekkürler,

Saygılarımızla,

Ben

 

Basit bir şey eksik

Bir MA çapraz EA, herhangi bir MA çapraz EA için bir TL filtresi üzerinde çalışıyorum, ancak basit olduğu için ekli üzerine yapıştırıyorum.

Temel olarak TL hesaplayıcı, TL yönüne ve fiyat çaprazına bağlı olarak 1, 2 veya 3 sinyalleri verir ve TL yeterince eğimli değilse kötü bir "sıfır bölünme" verir.

Kodlama öğreniyorum ve tüm Kodlayıcıların Guru PDF'lerini ve beynimin alabileceği kadar MQL4 forumunu okuyorum, ancak yavaş öğreniyorum ve 3 hafta öncesine kadar her şeyi daha yeni kodladığım için....

Bazı işaretçiler arıyorum....

Sorun: Fiyat TL'ye dokunmadığında "TLfilter" değerini 3 olan nasıl çağıracağımı anlayamıyorum ve Satın alma işlemi tamam.

Al / Sat kriterlerine &&TTLfilter = 3! olarak yapıştırmaya çalıştım ve bulabildiğim diğer yöntemler ancak o zaman elde ettiğim tek şey takas yok.

Ayrıca onu OrderSelect döngüsüne sokmaya çalıştım ama şans yok.

Sadece neyi kaçırdığım gibi işaretçiler arıyorum.

Birisi bir bakmakla ilgileniyorsa.

EA'yı eklemeden önce çizelgeye bir TL çizin ve t6 olarak adlandırın.

//--- Yazdır ("TLfilter = ",TLfilter); dönüş(TLfiltre); Ne yaptığını görmek için TL bölümünün alt kısmında.

Bu EA'nın modları çift çizgi ile işaretlenmiştir ======= 1 2 ve 3

Düzenleme: Mümkün olduğunca temiz olduğundan emin olmak istediğim için buradaki kodlamamın hiçbiri x_trader_v2_tlmod.mq4

Dosyalar:
 

çoklu gösterge

Merhaba!

Bunun gibi bir çoklu gösterge kullanan/var olan var mı?

Çoklu Hareketli Ortalama - MQL4 Kod Tabanı

Aşağıda görürseniz, "özgürlük çubuğu" göstergesine benziyor... yani... Bu giriş göstergelerini değiştirmek istiyorum, 4ema kullanmak istemiyorum.... 1ema( 2 geçiş), CCI, STOCH ve SAR

Bazı çoklu göstergeler buldum ama böyle bir geçmişleri yoktu.

Birisi yardım edebilir ve kodu değiştirebilir mi?

 

Merhaba İnci1,

Görebildiğim kadarıyla yapılabiliyor, diğer 3 hareketli ortalamayı kullanmak istediğiniz göstergelerle ve sinyal verilecek koşullarla değiştirerek çağrıya girmeniz yeterli.

 

Bir şey deniyordum ama ilerleme yok

 

Neden şimdiye kadar kodladığınızı yayınlamıyorsunuz ve ne yapmaya çalıştığınızı açıklamıyorsunuz. bu şekilde birisi sana yardım edebilir

pearl1:
Bir şey deniyordum ama ilerleme yok
 

int başlangıç()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = Çubuklar - Sayılan. Çubuklar;

renkli Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(BOŞ, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); Ben burada berbatım.... o her zaman bu MA0.Buffer.0 ile karşılaştırır.... yani, eğer RSI kullanırsam, Stoch,... tüm elemanlar için bu tamponu yaratmalı mıyım? RSI için RSI0.Buffer.0?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Fiyat, i);

MA1.Buffer.1 = iMA(BOŞ, 0, MA1.Dönem, 0, MA1.Mod, MA1.Fiyat, i+1);

MA2.Buffer.0 = iMA(BOŞ, 0, MA2.Dönem, 0, MA2.Modu, MA2.Fiyat, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Fiyat, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Fiyat, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Fiyat, i+1);

MA4.Buffer.0 = iMA(BOŞ, 0, MA4.Dönem, 0, MA4.Modu, MA4.Fiyat, i);

MA4.Buffer.1 = iMA(BOŞ, 0, MA4.Dönem, 0, MA4.Modu, MA4.Fiyat, i+1);

MA1.UP.Tampon = BOŞ_DEĞER ;

MA1.DN.Tampon = BOŞ_DEĞER;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Boşluk * P1.Pozisyon + 1.0;

başka MA1.UP.Buffer = Boşluk * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

başka Text.Color.1 = Text.Color.Down;

//----

MA2.UP.Tampon = BOŞ_DEĞER;

MA2.DN.Tampon = BOŞ_DEĞER;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Boşluk * P2.Position + 1.0;

başka MA2.UP.Buffer = Boşluk * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

başka Text.Color.2 = Text.Color.Down;

//----

MA3.UP.Tampon = BOŞ_DEĞER;

MA3.DN.Tampon = BOŞ_DEĞER;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Boşluk * P3.Position + 1.0;

başka MA3.UP.Buffer = Boşluk * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

başka Text.Color.3 = Text.Color.Down;

//----

MA4.UP.Tampon = BOŞ_DEĞER;

MA4.DN.Tampon = BOŞ_DEĞER;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Boşluk * P4.Position + 1.0;

başka MA4.UP.Buffer = Boşluk * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

başka Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

dönüş(0);

 

Tüm öğeler için arabellek oluşturmanız gerekmez.

MA1.Buffer.0, MA1.Buffer.1, .... arabellek değil, basit değişkenlerdir. İsimlerini değiştirmeden herhangi bir şey için kullanabilirsiniz. Örneğin, rsi için kullanmak istiyorsanız, kodu şu şekilde değiştirebilirsiniz:

MA1.Buffer.0 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i); MA1.Buffer.1 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i+1);

değişkenlerin isimlerini değiştirmeye gerek kalmadan çalışacaktır (bu durumda sadece RSI1.Period ve RSI1.Price'ı harici parametreler olarak tanımlayın)

pearl1:
int başlangıç()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = Çubuklar - Sayılan. Çubuklar;

renkli Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(BOŞ, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); Ben burada berbatım.... o her zaman bu MA0.Buffer.0 ile karşılaştırır.... yani, eğer RSI kullanırsam, Stoch,... tüm elemanlar için bu tamponu yaratmalı mıyım? RSI için RSI0.Buffer.0?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Fiyat, i);

MA1.Buffer.1 = iMA(BOŞ, 0, MA1.Dönem, 0, MA1.Mod, MA1.Fiyat, i+1);

MA2.Buffer.0 = iMA(BOŞ, 0, MA2.Dönem, 0, MA2.Modu, MA2.Fiyat, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Fiyat, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Fiyat, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Fiyat, i+1);

MA4.Buffer.0 = iMA(BOŞ, 0, MA4.Dönem, 0, MA4.Modu, MA4.Fiyat, i);

MA4.Buffer.1 = iMA(BOŞ, 0, MA4.Dönem, 0, MA4.Modu, MA4.Fiyat, i+1);

MA1.UP.Tampon = BOŞ_DEĞER;

MA1.DN.Tampon = BOŞ_DEĞER;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Boşluk * P1.Pozisyon + 1.0;

başka MA1.UP.Buffer = Boşluk * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

başka Text.Color.1 = Text.Color.Down;

//----

MA2.UP.Tampon = BOŞ_DEĞER;

MA2.DN.Tampon = BOŞ_DEĞER;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Boşluk * P2.Position + 1.0;

başka MA2.UP.Buffer = Boşluk * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

başka Text.Color.2 = Text.Color.Down;

//----

MA3.UP.Tampon = BOŞ_DEĞER;

MA3.DN.Tampon = BOŞ_DEĞER;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Boşluk * P3.Position + 1.0;

başka MA3.UP.Buffer = Boşluk * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

başka Text.Color.3 = Text.Color.Down;

//----

MA4.UP.Tampon = BOŞ_DEĞER;

MA4.DN.Tampon = BOŞ_DEĞER;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Boşluk * P4.Position + 1.0;

başka MA4.UP.Buffer = Boşluk * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

başka Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

dönüş(0);
 
pearl1:
int başlangıç()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = Çubuklar - Sayılan. Çubuklar;

renkli Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(BOŞ, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i);

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Fiyat, i);

MA1.Buffer.1 = iMA(BOŞ, 0, MA1.Dönem, 0, MA1.Mod, MA1.Fiyat, i+1);

MA2.Buffer.0 = iMA(BOŞ, 0, MA2.Dönem, 0, MA2.Modu, MA2.Fiyat, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Fiyat, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Fiyat, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Fiyat, i+1);

MA4.Buffer.0 = iMA(BOŞ, 0, MA4.Dönem, 0, MA4.Modu, MA4.Fiyat, i);

MA4.Buffer.1 = iMA(BOŞ, 0, MA4.Dönem, 0, MA4.Modu, MA4.Fiyat, i+1);

MA1.UP.Tampon = BOŞ_DEĞER;

MA1.DN.Tampon = BOŞ_DEĞER;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Boşluk * P1.Pozisyon + 1.0;

başka MA1.UP.Buffer = Boşluk * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0 ) Text.Color.1 = Text.Color.Up;

başka Text.Color.1 = Text.Color.Down;

//----

MA2.UP.Tampon = BOŞ_DEĞER;

MA2.DN.Tampon = BOŞ_DEĞER;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Boşluk * P2.Position + 1.0;

başka MA2.UP.Buffer = Boşluk * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0 ) Text.Color.2 = Text.Color.Up;

başka Text.Color.2 = Text.Color.Down;

//----

MA3.UP.Tampon = BOŞ_DEĞER;

MA3.DN.Tampon = BOŞ_DEĞER;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Boşluk * P3.Position + 1.0;

başka MA3.UP.Buffer = Boşluk * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0 ) Text.Color.3 = Text.Color.Up;

başka Text.Color.3 = Text.Color.Down;

//----

MA4.UP.Tampon = BOŞ_DEĞER;

MA4.DN.Tampon = BOŞ_DEĞER;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Boşluk * P4.Position + 1.0;

başka MA4.UP.Buffer = Boşluk * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0 ) Text.Color.4 = Text.Color.Up;

başka Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

dönüş(0);

aha, teşekkürler, ama bu Tamponlar .... hepsini MA0.Buffer.0 ile karşılaştırıyor mu?

 

Sadece IMA() çağrılarını istediğiniz çağrılarla değiştirin (size verdiğim örnekteki iRSI() gibi) ve çalışmalılar, Değişken isimlerini değiştirmenize gerek yok

pearl1:
aha, teşekkürler, ama bu Tamponlar .... hepsini MA0.Buffer.0 ile karşılaştırıyor mu?