ICözel işlev - sayfa 12

 

icustom() ile iki göstergeyi arayarak alım satım yapan basit bir ea gönderebilecek olan var mı?

Bekleyen emirleri kapatmak için bir fonksiyon var mı?

teşekkürler

 

iÖzel yardım

Merhaba.

Özel göstergeleri kullanmak için FerruFX'in göstergelerinden birini değiştirmeye çalışıyorum. Zaten tüm MA'ların doğru çalışmasını sağladım, ancak diğer iki gösterge için doğru bilgileri nasıl alacağımdan emin değilim. Sonunda, eklediğim iki gösterge olan PerkyAsctrend1 ve HeikenAshi MTF'den MTF verilerini görüntülemesini istiyorum. Her ikisi için de iCustom kullanıyorum ve o ölçüde doğru komutları kullandığımı düşünüyorum.

PerkyAsctrend1 için veri üretebiliyorum (ancak doğru veriyi değil). Doğru görüntülenmesini sağlamak için mantığı anladığımı sanıyordum, ama sanırım anlamıyorum. Ferru, göstergesinde MA, CCI, MACD, ADX, Bullspower ve BearsPower kullandı, ancak bunlar farklı türde göstergelerdir ve ne yazık ki bu ayarda PerkyAsctrend1 için bir referans olarak (bana göre) pek kullanışlı değiller.

HeikenAshi MTF göstergesinin göstergeye eklemek için yeterince kolay olacağını düşündüm. Görünüşe göre yanılmışım. Heiken sütunu açıklanamaz bir şekilde "Etiket" gösteriyor ve hepsi ilk onay işaretinden sonra kayboluyor.

Umarım kod aslında bana olduğu kadar size de iğrenç görünmez. Ben amatör bir programcıyım. Biri yardım edebilirse, gerçekten minnettar olurum. Bu konuda daha deneyimli bir çift göze ihtiyacım var. Tamamlandığında oldukça faydalı olacağını düşünüyorum.

-

İşte bana sorun çıkaran kod parçaları. Her iki iCustom da bana fiyat geçmişindeki/grafiklerindeki toplam çubuk sayısı olan 2147483647 değerini veriyor.

int RISK = 4;

int AllBars = 250;

int MaMethod = 1;

int MaPeriod = 20;

//...

// sinir bozucu

//...

string Pesky_Trend_1 //-- , Pesky_Trend_5, Pesky_Trend_15, Pesky_Trend_30, Pesky_Trend_60, Pesky_Trend_240, Pesky_Trend_1440, Pesky_Trend_10080;

double Pesky_m_1=iCustom(NULL,PERIOD_M1, "PerkyAsctrend1", RISK, AllBars,0,shift_1);

if ((Pesky_m_1 > 0)) { Pesky_Trend_1 = "UP"; x = 416; color_indic = Kireç; UP_33 = 1; AŞAĞI_33 = 0; }

if ((Pesky_m_1 < 0)) { Pesky_Trend_1 = "AŞAĞI"; x = 406; color_indic = Kırmızı; UP_33 = 0; AŞAĞI_33 = 1; }

// ...

// Gösterge (Heiken)

//...

string HA_Trend_1 //-- , HA_Trend_5, HA_Trend_15, HA_Trend_30, HA_Trend_60, HA_Trend_240, HA_Trend_1440, HA_Trend_10080;

double HA_1_1=iCustom(NULL,PERIOD_M1,"Heiken MTF",MaMethod,MaPeriod,shift_1);

double HA_2_1=iCustom(NULL,PERIOD_M1,"Heiken MTF",MaMethod,MaPeriod,shift_1+1);

if ((HA_1_1 > HA_2_1)) { HA_Trend_1 = "UP"; x = 466; color_indic = Kireç; UP_41 = 1; AŞAĞI_41 = 0; }

if ((HA_1_1 < HA_2_1)) { HA_Trend_1 = "AŞAĞI"; x = 456; color_indic = Kireç; UP_41 = 0; AŞAĞI_41 = 1; }

//...

Kaydırma değerlerinin alışılmışın dışında olduğunu biliyorum ama asıl yazar bunu böyle yaptı.

int başlangıç()

{

//...

// Göstergeler için kaydırma hesaplaması (yalnızca testler)

çift vardiya_1, vardiya_5, vardiya_15, vardiya_30, vardiya_60, vardiya_240, vardiya_1440, vardiya_10080;

if(test == doğru)

{

shift_1=iBarShift(NULL,PERIOD_M1,look_time_shift,false);

shift_5=iBarShift(NULL,PERIOD_M5,look_time_shift,yanlış);

shift_15=iBarShift(NULL,PERIOD_M15,look_time_shift,yanlış);

shift_30=iBarShift(NULL,PERIOD_M30,look_time_shift,yanlış);

shift_60=iBarShift(NULL,PERIOD_H1,look_time_shift,yanlış);

shift_240=iBarShift(NULL,PERIOD_H4,look_time_shift,yanlış);

shift_1440=iBarShift(NULL,PERIOD_D1,look_time_shift,false);

shift_10080=iBarShift(NULL,PERIOD_W1,look_time_shift,yanlış);

}

başka

{

shift_1=shift_indicators;

shift_5=shift_göstergeleri;

shift_15=shift_indicators;

shift_30=shift_indicators;

shift_60=shift_indicators;

shift_240=shift_göstergeleri;

shift_1440=shift_göstergeleri;

shift_10080=shift_indicators;

Teşekkür ederim...

 

Güncellenmiş sürümler

Her şeyi görsel olarak olması gerektiği gibi yeniden düzenledim ve bazı parametre adlarını değiştirdim. iCustom için her şey hala doğru görünüyor, ancak PerkyAsctrend değeri doğru hesaplanmıyor ve Heiken mantığı görünüşte tamamen yanlış. Heiken MTF göstergesi için iCustom için çifte değer sağlayan akşam değil gibi görünüyor. Onları henüz tekrar kontrol etmedim ama göstergeler için iCustom çift değerlerinin ikisi de geçmişimdeki çubuk sayısına eşitti (2147483647)...! iCustom ile tamamen yanlış bir şey yapıyor olmalıyım ama hayatım boyunca bulamıyorum.

Buna bakmak için zamanınız veya enerjiniz varsa, çok minnettar olurum.

Dosyalar:
 

Kime: Homicida & Ra457 yeniden: iCustom

Merhaba.

iCustom kullandığınızda elde ettiğiniz bu büyük sayı değeri, benim yaşadığım bir zorluk gibi görünüyor.

Umarım bu yardımcı olur.

iCustom'a girdiğiniz parametrelerin tam olarak aynı olduğundan ve gösterge kodunun kendisinde harici değişkenlerde verilenlerle aynı sırada olduğundan emin olun.

Şerefe.

 

2147483647'nin geçmişinizle hiçbir ilgisi yok.

İşaretli bir 32 bit tamsayıya sahip olabilen ve MT4 tarafından göstergelerin varsayılan "Boş Değeri" olarak kullanılan en büyük değerdir.

Değer gösterilmeyecek olduğunda göstergeler "Boş Değer" döndürüyor.

 

iCustom()

Merhaba, bir Göstergeden üç değişken okumam gerekiyor.

Kenarı göstergenin üstüne yerleştirdim:

Değişkenler

çift eaBid=0;

çift eaAsk=0;

string eaType="";

//==========================

Değişkenler

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 8

#özellik göstergesi_color1 Siyah

#özellik göstergesi_color2 Kireç

#özellik göstergesi_color3 Kireç

#özellik göstergesi_color4 Sarı

#özellik göstergesi_renk5 Kırmızı

#özellik göstergesi_color6 Kırmızı

#özellik göstergesi_color7 Siyah

#özellik göstergesi_color8 Siyah

çift eaEP=0;

çift eaSL=0;

çift eaType=0;

çift iVar[];

Şey

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Kırmızı

#özellik göstergesi_color2 OrmanYeşil

//---- giriş parametreleri

string IndicatorName="TicaretWatch";

double EntryBid=0;

double EntryAsk=0;

string EntryType="";

çift eaBid=0;

çift eaAsk=0;

string eaType="";

int init()

{

dönüş (0);

}

Başlangıç

{

EntryBid = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 1, 0);

EntryAsk = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 2, 0);

EntryType = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 3, 0);

}

EA'mdaki üç değişkeni nasıl okurum?

Nerede yanlış yapıyorum göremiyorum?

Teşekkürler.

 

Neden gösterge tampon değerlerine yansıması gereken değişkenlerin sonuçlarını okumuyorsunuz? İndikatörü grafik üzerine yerleştirdikten sonra indikatör kurulumundaki renklere bakarsanız her renk bir tamponu temsil eder. Üst renk = arabellek0, üst renkten ikinci renk = arabellek1 vb.

EA'nızda şöyle bir şey kullanın:

Buff0=iCustom(NULL,0,"Gösterge Adı",0,0); // Göstergenin üst rengi

Buff0=iCustom(NULL,0,"Gösterge Adı",0,1); ///1-Geri

Buff1=iCustom(NULL,0,"Gösterge Adı",1,0); //Göstergenin üst renginin yanında

Buff1=iCustom(NULL,0,"Gösterge Adı",1,1); ///1-Geri

Göstergenin kendisindeki değişkenleri değiştirin ve arabellekleri ve grafikteki göstergeyi güncelleyecek göstergeyi yeniden derleyin!

Hala kafanız karıştıysa, bakmanız için size gerçek bir EA ve gösterge göndereceğim.

Dave

<<<

 

iCustom()

Dave'e teşekkürler.

Çalışıyor.

 

hepinize iyi günler

 

benim EA'm

EA - ASCTrend.mq4 dosyamı, ICustom işleviyle asctrend sinyalini kullanan MQ4 oluşturucu ile oluşturdum. YUKARI sinyali verdiğinde AL ve AŞAĞI sinyali verdiğinde SATIŞ işlemi açabilir.

EA'ma biraz filtre eklemek istiyorum - bazı çiftlerde geriye dönük test ile, BBands ind ile iyi bir fo filtre görünümü, bu filtreyi EA'ma nasıl ekleyeceğimi bilmiyorum - bunun gibi bir şey düşünüyorum, ama şansım yok.

double Buy1_1 = iCustom(Symbol(),0,"PerkyAsctrend1",0,1);

double Buy2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 4, 0, Geçerli + 1);

çift Buy2_2 = 1;

double Sell1_1 = iCustom(Symbol(),0,"PerkyAsctrend1",1,1);

double Sell2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 5, 0, Geçerli + 1);

çift Sat2_2 = 1;

if (Buy1_1 && Buy2_1 > Buy2_2) Sipariş = SIGNAL_BUY;

if (Sat1_1 && Sat2_1 > Satış2_2) Sipariş = SIGNAL_SELL;

Dosyalar:
Neden: