Kodlama yardımı.. Uyarı yerine filtrelenecek göstergeyi nasıl alabilirim?

 

Bu, fiyat bir üst veya alt çizgiye ulaştığında bir uyarı üretir.

Bu çizgilere yaklaşana kadar işlemlerin yürütülmesine izin vermek istiyorum. Fiyat çok yaklaştığında, işlemlerin açılmasına izin vermeyin.

Buradakilerin hepsi diziler olduğunda, bu mantığın mevcut bar kapanışlarında/kapanışlarında olmasını nasıl sağlayabilirim?

for(int x=0; x<limit; x++) {

Xdown[x] = 0; Xup[x] = 0;

middle1[x] = iMA(NULL, 0, period, 0, MODE_EMA, PRICE_TYPICAL, x);// drawn line

middle2= iMA(NULL, 0, period, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands

avg = findAvg(period, x);

upper[x] = middle2 + (3.5*avg);

lower[x] = middle2 - (3.5*avg);

if (MathAbs(upper[x] - High[x]) < 2*Point)

{

Xdown[x] = upper[x];

if (NewBar() && x == 0)

Alert(Symbol()," ",Period()," reach upper edge");

}

if (MathAbs(lower[x] - Low[x]) < 2*Point)

{

Xup[x] = lower[x];

if (NewBar() && x == 0)

Alert(Symbol()," ",Period()," reach lower edge");

}

}

return(0);

}
 

Çok uğraştığını görüyorum, aferin! Bu aşamada, en çok ihtiyacınız olan şeyin kendinize nasıl yardım edeceğinizi bilmek olduğunu hissediyorum, bu yüzden MQL'nin "Gezgin->Arama" işlevini _kapsamlı olarak kullanmanızı tavsiye ederim, sorularınızın çoğuna cevap bulacaksınız (tek yapabileceğiniz şey). bir göstergeden gelen çağrılar arabelleklerdir ve bu iCustom() aracılığıyla yapılır; Nesneler diziler vb. değildir ve çok daha fazlası). Örneğin, bir "dizi" araması, Geçerli Çubuğun dizi indeksinin 0, Son Çubuğun dizi indeksinin 1 olduğunu vb. öğretecektir.

Arama işlevi girişlerinin tümü bunaltıcıysa, muhtemelen bu aşamada sizin için çok zor olan şeyleri yapmaya çalışıyorsunuzdur. Yukarıdaki örneklerin çoğuna codersguru'nun başlangıç kursunda değinildiğine inanıyorum, bu yüzden ikinci bir okuma tavsiye ederim.

Ayrıca basit bir EA alabilir ve nasıl çalıştığını size öğretecek şekilde biraz basitleştirmeye/değiştirmeye çalışabilirsiniz. Tamamlandığında, karmaşıklaştırmayı deneyebilirsiniz.

İşaretin dışındaysam özür dilerim.

Şimdi, genel olarak, Kapanış fiyatı üzerinde çalışmak için, yeni bir çubuğun Açılışını test edin ve ardından koşullarınızı dizilerin 1 dizinine yazın. Yeni bir çubuğun Açılışını algılamak için olası bir kod:

bool NewBar()

{

statik tarihsaat dt = 0;

if (Zaman[0] != dt)

{

dt = Zaman[0];

dönüş(doğru);

}

dönüş(yanlış);

}

Umarım bu yardımcı olur, iyi şanslar.

 

Evet, doğru yoldasın.

Hepsini durdurur ve c++ programlamasını yeniden okurdum.

Ne yazık ki Nesne yönelimli mq4 için o kadar iyi değil, bu yüzden temel bilgilerle telafi etmeniz gerekecek.

Devam et dostum, oraya varacaksın.

 
Aaragorn:
Bu, fiyat bir üst veya alt çizgiye ulaştığında bir uyarı üretir.

Bu çizgilere yaklaşana kadar işlemlerin yürütülmesine izin vermek istiyorum. Fiyat çok yaklaştığında, işlemlerin açılmasına izin vermeyin.

Buradakilerin hepsi diziler olduğunda, bu mantığın mevcut bar kapanışlarında/kapanışlarında olmasını nasıl sağlayabilirim?

Bunu örnek olarak alabilirsiniz. Almak istediğin şeye yakın. Görebildiğim kadarıyla, kullandığınız göstergenin aynısı.

 
pipeline:
Çok uğraştığını görüyorum, aferin! Bu aşamada, en çok ihtiyacınız olan şeyin kendinize nasıl yardım edeceğinizi bilmek olduğunu hissediyorum, bu yüzden MQL'nin "Gezgin->Arama" işlevini _kapsamlı olarak kullanmanızı tavsiye ederim, sorularınızın çoğuna cevap bulacaksınız (tek yapabileceğiniz şey). bir göstergeden gelen çağrılar arabelleklerdir ve bu iCustom() aracılığıyla yapılır; Nesneler diziler vb. değildir ve çok daha fazlası). Örneğin, bir "dizi" araması, Geçerli Çubuğun dizi indeksinin 0, Son Çubuğun dizi indeksinin 1 olduğunu vb. öğretecektir.

Arama işlevi girişlerinin tümü bunaltıcıysa, muhtemelen bu aşamada sizin için çok zor olan şeyleri yapmaya çalışıyorsunuzdur. Yukarıdaki örneklerin çoğuna codersguru'nun başlangıç kursunda değinildiğine inanıyorum, bu yüzden ikinci bir okuma tavsiye ederim.

Ayrıca basit bir EA alabilir ve nasıl çalıştığını size öğretecek şekilde biraz basitleştirmeye/değiştirmeye çalışabilirsiniz. Tamamlandığında, karmaşıklaştırmayı deneyebilirsiniz.

İşaretin dışındaysam özür dilerim.

Şimdi, genel olarak, Kapanış fiyatı üzerinde çalışmak için, yeni bir çubuğun Açılışını test edin ve ardından koşullarınızı dizilerin 1 dizinine yazın. Yeni bir çubuğun Açılışını algılamak için olası bir kod:

bool NewBar()

{

statik tarihsaat dt = 0;

if (Zaman[0] != dt)

{

dt = Zaman[0];

dönüş(doğru);

}

dönüş(yanlış);

}

Umarım bu yardımcı olur, iyi şanslar.

tamam bu arama işlevi hakkında ... hiçbir şey döndürmez. Metaeditörde birkaç kez kullanmayı denedim. İstediğimi yazıp geri dönüyorum ve hiçbir şey olmuyor ya da arama dizisinin yanındaki o küçük git kutusuna tıklıyorum ve hiçbir şey olmuyor. Ne kadar kötü bir arama olduğunu fark ettim çünkü hiç çalışmıyor. Meta düzenleyici gezgin penceresindeki arama özelliğine atıfta bulunuyorum... çalışmasını sağlamak için bilmediğim bir protokol var mı?

 
fx-programmer:
Evet, doğru yoldasın.

Hepsini durdurur ve c++ programlamasını yeniden okurdum.

Ne yazık ki Nesne yönelimli mq4 için o kadar iyi değil, bu yüzden temel bilgilerle telafi etmeniz gerekecek.

Devam et dostum, oraya varacaksın.

teşvik için teşekkür ederim. manevi destek önemli. Buradaki teorik amacımın ne olduğunu görüyor musunuz? Bu amaca ulaşmak için daha iyi bir yöntem (sizin deyiminizle temel bilgiler) önerebilir misiniz?

 
pipeline:

Şimdi, genel olarak, Kapanış fiyatı üzerinde çalışmak için, yeni bir çubuğun Açılışını test edin ve ardından koşullarınızı dizilerin 1 dizinine yazın. Yeni bir çubuğun Açılışını algılamak için olası bir kod:

bool NewBar()

{

statik tarihsaat dt = 0;

if (Zaman[0] != dt)

{

dt = Zaman[0];

dönüş(doğru);

}

dönüş(yanlış);

}

Umarım bu yardımcı olur, iyi şanslar.

ne demek istediğimi anlarsanız neredeyse yardımcı olur.. doğru döndüğünü varsayarsak ne olur, şimdi yeni bir çubuk olduğu tespit edildiğinde, mevcut kapanışta göstergenin değerini diziden nasıl çıkarırsınız?

 
 
Aaragorn:

Dün gece Google'da dolaşıyordum ve bunu buldum...

http://www.gordago.com/?act=download

bu konuda tecrübesi olan var mı? gerçek mi

Gordago, özel göstergeleri işlemez veya hala işleme yeteneğine sahip değildir. Bu önemli bir dezavantaj.

Programlamayı öğrenmenin tek yolu, şu anda yaptığınız gibi, onu yavaş yavaş kapatmaktır... örneklerden öğrenmek. Kodlayıcıların Guru'nun eşyaları öğrenmek için harikadır.

İyi şanlar,

Maji

 
Bugün göstergelerin canı cehenneme demeyi düşünüyorum ve önceki(x) çubuklarının en yüksek ve en düşük en düşük değerlerini referans almama izin verecek bir şey yaratıp yaratamayacağıma bakın.

Göstergelere ne kadar çok bakarsam, bu o kadar çekici görünüyor....

tamam, önceden tanımlanmış değişkenlerde yüksek () görüyorum. örneğin son 30 saatin en yüksek seviyesini elde etmek için nasıl kullanırım?

 

Bir gösterge yazmak bir şeydir ve bir EA yazmak başka bir şeydir. Onları karıştırmayın. Göstergelerde, doğru çizmek için tarihle de uğraşmak zorundasınız. Bir EA yazarken sadece mevcut tik'e sahipsiniz ve her tik'in değerlerini hesaplamanız gerekiyor (eğer bir ticareti kaybetmek istemiyorsanız). Yani, CURRENT tick'in üst ve alt kenarının değerlerini almak için 2 şey yapabilirsiniz.

  1. Orijinal göstergeyi özel gösterge olarak kullanın
  2. göstergenin mantığını EA'nızın içine yazın

1. seçenek zor değil. İlk önce, üst satır ve alt satır için kullanılan arabellek indeksinin ne olduğunu öğrenmelisiniz.

gösterge koduna bakman gerektiğini bul

SetIndexBuffer(0,üst);

SetIndexBuffer(1,orta1);

SetIndexBuffer(2,alt);

Gördüğünüz gibi üst satır dizin 0, orta dizin 1 ve alt satır dizin 2'dir.

Şimdi, bu bilgiye sahip olduğumuza göre, göstergenin kaç parametresi olduğunu bilmeliyiz. Bu bilgiyi elde etmek için harici kelimesiyle başlayan satırları aramanız gerekir.

sadece 1 satır buldum

dış int nokta = 34;

Artık göstergeyi bir custome olarak kullanabiliriz.

double upLevel = iCustome(NULL,0, "Trend Bantları", 34, 0, 0);

double LowLevel = iCustome(NULL,0, "Trend Bantları", 34, 2, 0);

34, göstergenin parametresidir

0 tampon indeksidir (alt için 2)

son 0 çubuk kaymasıdır (EA'da akıma ihtiyacımız var, bu yüzden 0 kullanıyoruz

artık üst ve alt değerlere sahip olduğunuza göre bunları fiyata göre kontrol edebilirsiniz

Umarım ilerlemenizi sağlar

Eli

Neden: