Çoklu Zaman Çerçevesi Göstergeleri - sayfa 405

 

zaman çerçevesi TDI birleştirme

Hey millet, merhaba Mladen,

Bazılarınız TDI'yi Sinyal Sağlayıcı olarak kullandığınız için, aşağıda görüldüğü gibi TDI Uyarı Sistemi ile karşılaştım (TDI'da bir çarpıtma meydana geldiğinde sadece bir sinyal ve hatta EMail Uyarısı veriyorum). Muhtemelen bu yeni bir şey değil. TDI'yi en az iki zaman çerçevesiyle (temel olarak 60 dakika, ölçekleme için 5 dakika) takas etmek daha güvenli olduğundan, aşağıdakilerin mümkün olup olmadığını soruyorum: daha güvenilir sinyal: Daha büyük zaman dilimi temel olarak kullanılır, yukarı veya aşağı, daha küçük olana/lara yön verir. Aynı sinyal daha küçük zaman diliminde de görünüyorsa, bu bir ticarettir; işlemden çıkış sinyaliyle çıkılır, yalnızca daha küçük zaman dilimine bağlı olarak.

İşte sinyal oluşturmaktan bahsettiğim gösterge; Siz ne düşünüyorsunuz ya da buna benzer bir şey daha önce yayınlandı mı?

 
Jonny473:
Hey millet, merhaba Mladen,

Bazılarınız TDI'yi Sinyal Sağlayıcı olarak kullandığınız için, aşağıda görüldüğü gibi TDI Uyarı Sistemi ile karşılaştım (TDI'da bir çarpıtma meydana geldiğinde sadece bir sinyal ve hatta EMail Uyarısı veriyorum). Muhtemelen bu yeni bir şey değil. TDI'yi en az iki zaman çerçevesiyle (temel olarak 60 dakika, ölçekleme için 5 dakika) takas etmek daha güvenli olduğundan, aşağıdakilerin mümkün olup olmadığını soruyorum: daha güvenilir sinyal: Daha büyük zaman dilimi temel olarak kullanılır, yukarı veya aşağı, daha küçük olana/lara yön verir. Aynı sinyal daha küçük zaman diliminde de görünüyorsa, bu bir ticarettir; işlemden çıkış sinyaliyle çıkılır, yalnızca daha küçük zaman dilimine bağlı olarak.

İşte sinyal oluşturmaktan bahsettiğim gösterge; Siz ne düşünüyorsunuz ya da buna benzer bir şey daha önce yayınlandı mı?

Göstergeyi bir saniye içinde yayınlayacak...

 
mladen:
FxTrendsTrader Buyrun

Sevgili Mladen

Bu göstergeye 'Eğimde Boyama' eklemeniz mümkün mü?

Şimdiden teşekkürler

gizli kod

 
Jonny473:
Göstergeyi bir saniye içinde yayınlayacak...

Kalp krizi....?...

 
fxnewbie:
Kalp krizi....?...

Hayır kalp krizi yok: İşte kod, sadece kopyalayın ve göstergeyi oluşturun, dosyayı bulamıyor

/*------------------------------------------------ ------------------------------------

İsim: xTDI-Arrow.mq4

Telif Hakkı ?2010, Xaphod, Forex Whiz

Açıklama: - TDI haçları için oklar çizer

- Yukarıdaki üç satırın geçişleri için uyarılar sağlar.

Günlüğü değiştir:

2010-10-19. Xaphod, v1.00

- İlk sürüm

-------------------------------------------------- -----------------------------------*/

// Gösterge özellikleri

#property telif hakkı "Telif hakkı ? 2010, Xaphod"

#özellik bağlantısı "http://forexwhiz.appspot.com"

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 4

#özellik göstergesi_color1 KireçYeşil

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

#özellik göstergesi_color3 Yeşil

#özellik göstergesi_color4 FireBrick

#özellik göstergesi_width1 1

#özellik göstergesi_width2 1

#özellik göstergesi_width3 1

#özellik göstergesi_width4 1

#özellik göstergesi_maksimum 1

#özellik göstergesi_minimum 0

// Sabit tanımlar

#define INDICATOR_NAME "xTDI-Arrow"

#define INDICATOR_VERSION "v1.00"

#define BAR_HEIGHT 1.00

#define TDI_INDI "Traders_Dynamic_Index"

#define ARROW_THIN_UP 225

#define ARROW_THIN_DN 226

#define ARROW_THICK_UP 233

#define ARROW_THICK_DN 234

#define ARROW_HOLLOW_UP 241

#define ARROW_HOLLOW_DN 242

#define ARROW_ROUND_UP 221

#define ARROW_ROUND_DN 222

// Gösterge parametreleri

dış dize Indi.Copyright= "?2010, forexwhiz.appspot.com";

harici dize Indi.Version= INDICATOR_VERSION;

harici string Show.Settings="?????????????????????????????????";

harici int Show.TimeFrame=0; // Kullanılacak zaman dilimi. Mevcut Zaman Çerçevesi = 0.

extern bool Show.MarketBaseLine=true; // Pazar taban çizgisinin üstünde/altında çaprazı farklı bir renkte göster

harici int Show.ArrowType=0; // 0=İnce, 1=Kalın, 2=İçi Boş, 3=Yuvarlak

extern int Show.ArrowSize=1; // Ok boyutu (1-5)

harici int Show.ArrowOffset=10; // Oku göstermek için mumun sonundan öteleme

harici dize TDI.Settings="?????????????????????????????????";

harici int TDI.RSIPerod = 13; // Dönem. Önerilen değerler: 8-25

harici int TDI.RSIPrice = 0; // 0=KAPALI, 1=AÇIK, 2=YÜKSEK, 3=DÜŞÜK, 4=ORTALAMA, 5=TİPİK, 6=AĞIRLIKLI

extern int TDI.VolatilityBand = 34; // Önerilen değerler: 20-40

harici int TDI.RSIPriceLine = 2; // Dönem

harici int TDI.RSIPriceType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA

harici int TDI.TradeSignalLine = 7; // Dönem

harici int TDI.TradeSignalType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA

harici dize Alert.Settings="?????????????????????????????????";

extern bool Alert.RSIPriceLine=true; // RSI fiyatı Sinyal çizgisini geçerse uyar. Yeşil kırmızıyı geçer.

extern bool Alert.MarketBaseLine=true; // RSI fiyatı Sinyal çizgisini ve piyasa temel çizgisini geçerse uyar. Yeşil kırmızı ve sarı haçlar

extern bool Alert.NewBarOnly=true; // True=Yeni çubuk açıldığında uyar. False=Satırlar kesiştiğinde uyar

harici int Alert.Timeout=60; // Bir uyarıdan sonra uyarıları N saniye boyunca devre dışı bırakın. Yalnızca Alert.NewBarOnly=false olduğunda

extern bool Alert.Popup=true; // Açılır pencere ve uyarı sesi

extern bool Alert.Email=false; // Uyarıda e-posta gönder

// Global modül değişkenleri

çift dBuffer0[];

çift dBuffer1[];

çift dBuffer2[];

çift dBuffer3[];

bool bStartup;

geçersiz SetArrowType(int& iArrowUp, int& iArrowDn) {

geçiş (Show.ArrowType) {

durum 1: // İnce

iArrowDn=ARROW_THIN_DN;

iArrowUp=ARROW_THIN_UP;

kırmak;

durum 2: // İçi boş

iArrowDn=ARROW_HOLLOW_DN;

iArrowUp=ARROW_HOLLOW_UP;

kırmak;

durum 3: // Yuvarlak

iArrowDn=ARROW_ROUND_DN;

iArrowUp=ARROW_ROUND_UP;

kırmak;

varsayılan: // Kalın

iArrowDn=ARROW_THICK_DN;

iArrowUp=ARROW_THICK_UP;

kırmak;

}

}

//------------------------------------------------ ----------------------------------

// fonksiyon: init()

// Açıklama: Özel gösterge başlatma işlevi.

//------------------------------------------------ ----------------------------------

int init() {

int iArrowUp;

int iArrowDn;

dize sType;

dizi sTF;

SetArrowType(iArrowUp, iArrowDn);

SetIndexStyle(0,DRAW_OKU,BOŞALT,Show.ArrowSize);

SetIndexBuffer(0,dBuffer0);

SetIndexLabel(0,"TDI:Mkt-Up");

SetIndexArrow(0, iArrowUp);

SetIndexStyle(1,DRAW_OK,EMPTY,Show.ArrowSize);

SetIndexBuffer(1,dBuffer1);

SetIndexLabel(1,"TDI:Mkt-Dn");

SetIndexArrow(1, iArrowDn);

SetIndexStyle(2,DRAW_OK,BOŞ,Show.ArrowSize);

SetIndexBuffer(2,dBuffer2);

SetIndexLabel(2,"TDI:Kaydol");

SetIndexArrow(2, iArrowUp);

SetIndexStyle(3,DRAW_OKU,BOŞ,Show.ArrowSize);

SetIndexBuffer(3,dBuffer3);

SetIndexLabel(3,"TDI:Sig-Dn");

SetIndexArrow(3, iArrowDn);

if (Show.TimeFrame==0)

sTF="";

başka

sTF=TF2Str(Göster.Zaman Çerçevesi);

GöstergeShortName(INDICATOR_NAME+" "+sTF);

bBaşlangıç=doğru;

dönüş(0);

}

//------------------------------------------------ ----------------------------------

// fonksiyon: tanım()

// Açıklama: Özel gösterge sıfırlama işlevi.

//------------------------------------------------ ----------------------------------

int tanım() {

dönüş (0);

}

///------------------------------------------------------ ------------------------------

// fonksiyon: başlat()

// Açıklama: Özel gösterge yineleme işlevi.

//------------------------------------------------ ----------------------------------

int start() {

int iNewBars;

int iCountedBars;

int i;

çift dVBHighLine; // Üst volatilite bandı - Üst Mavi çizgi

çift dVBlowLine; // Alt volatilite bandı - Alt Mavi çizgi

çift dMarketBaseLine0; // Piyasa Taban Çizgisi - Sarı çizgi

çift dRSIPriceLine0; // RSI Fiyat Çizgisi - Yeşil çizgi

çift dTradeSignalLine0; // Ticaret Sinyal Hattı - Kırmızı hat

statik çift dMarketBaseLine1; // Piyasa Taban Çizgisi - Sarı çizgi

statik çift dRSIPriceLine1; // RSI Fiyat Çizgisi - Yeşil çizgi

statik çift dTradeSignalLine1; // Ticaret Sinyal Hattı - Kırmızı hat

çift dOffset;

// İşlenmemiş keneleri al

iCountedBars=IndicatorCounted();

if(iCountedBars < 0) dönüş (-1);

if(iCountedBars>0) iCountedBars--;

iNewBars=Barlar-iCountedBars;

for(i=iNewBars; i>=0; i--) {

// Önceki TDI verilerini al

//if (Zaman!=tCurTime) {

//tCurTime=Zaman;

 

dMarketBaseLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i+1); // Sarı çizgi

dRSIPriceLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i+1); // Yeşil çizgi

dTradeSignalLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPerod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i+1); // Kırmızı cizgi

//}

// Mevcut TDI Verilerini al

dMarketBaseLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Sarı çizgi

dRSIPriceLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Yeşil çizgi

dTradeSignalLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPerod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Kırmızı cizgi

// Geçerli görüntü arabelleğini temizle

dBuffer0 = BOŞ_DEĞER ;

dBuffer1 = BOŞ_DEĞER;

dBuffer2 = BOŞ_DEĞER;

dBuffer3 = BOŞ_DEĞER;

dOffset=Nokta*(10*Show.ArrowOffset/MarketInfo(Symbol(),MODE_TICKVALUE));

if (dRSIPriceLine0>dMarketBaseLine0 && dRSIPriceLine1dTradeSignalLine0 && Show.MarketBaseLine)

dBuffer0 = Düşük dOffset;

else if (dRSIPriceLine0>dTradeSignalLine0 && dRSIPriceLine1<dTradeSignalLine1)

dBuffer2 = Düşük dOffset;

if (dRSIPriceLine0dMarketBaseLine1 && dRSIPriceLine0<dTradeSignalLine0 && Show.MarketBaseLine)

dBuffer1 = Yüksek+dOffset;

else if (dRSIPriceLine0dTradeSignalLine1)

dBuffer3 = Yüksek+dOffset;

// Uyarıları kontrol et

if (i==0) AlertCheck();

}

// Başlangıç bayrağını sıfırla

if (bBaşlangıç) bBaşlangıç=yanlış;

// Güle güle

dönüş(0);

}

//+------------------------------------------- -------------------+

//------------------------------------------------ ----------------------------------

// işlev: TF2Str()

// Açıklama: Zaman çerçevesini bir dizgeye dönüştür

//------------------------------------------------ ----------------------------------

string TF2Str(int iPeriod) {

switch(iPeriod) {

durum PERIOD_M1: dönüş("M1");

durum PERIOD_M5: dönüş("M5");

durum PERIOD_M15: dönüş("M15");

durum PERIOD_M30: dönüş("M30");

durum PERIOD_H1: dönüş("H1");

durum PERIOD_H4: dönüş("H4");

durum PERIOD_D1: dönüş("D1");

durum PERIOD_W1: dönüş("W1");

durum PERIOD_MN1: dönüş("MN1");

varsayılan: dönüş ("M"+iPeriod);

}

}

//------------------------------------------------ ----------------------------------

// işlev: AlertCheck()

// Açıklama: Uyarı koşullarını kontrol edin ve uyarıları gerçekleştirin

//------------------------------------------------ ----------------------------------

geçersiz AlertCheck() {

string sAlertMsg;

statik tarihsaat tCurTime=0;

statik int iAlertTimer[2];

statik int iAlertStatus[2];

çift dMarketBaseLine[2]; // Piyasa Taban Çizgisi - Sarı çizgi

çift dRSIPriceLine[2]; // RSI Fiyat Çizgisi - Yeşil çizgi

çift dTradeSignalLine[2]; // Ticaret Sinyal Hattı - Kırmızı hat

int i,j;

bool bNewBar=yanlış;

// Gösterge yeni başladıysa iptal

if (bBaşlangıç) {

tCurTime=Zaman[0];

dönüş(0);

}

// Uyarıları kontrol et

if (Alert.RSIPriceLine || Alert.MarketBaseLine) {

// Yalnızca yeni çubuk varsa uyarı

if (Alert.NewBarOnly) {

// Zamanı Sıfırla

if(tCurTime!=Zaman[0]) {

tCurTime=Zaman[0];

bNewBar=true;

// TDI Verilerini yeni çubukta alın, yani 1. ve 2. çubuk

for (i=0; i<2; i++) {

j=i+1;

dMarketBaseLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,j); // Sarı çizgi

dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,j); // Yeşil çizgi

dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,j); // Kırmızı cizgi

} //son için

}//endif

}

başka {

// Mevcut çubukta, yani çubuk 0 ve 1'de TDI Verisi alın

for (i=0; i<2; i++) {

dMarketBaseLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Sarı çizgi

dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Yeşil çizgi

dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPperiod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,

TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Kırmızı cizgi

} //son için

} // if(Alert.NewBarOnly) sonlandır

if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[0]<GetTickCount())) {

//Uyarı RSIPriceLine > TradeSignalLine

if (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1] && Alert.RSIPriceLine) {

if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;

sAlertMsg="TDI Uyarısı - "+Symbol()+" "+TF2Str(Period())+": TradeSignalLine'ın Üzerinde RSIPriceLine.";

if (Alert.Popup) Alert(sAlertMsg);

if (Alert.Email) SendMail( sAlertMsg, "MT4 Uyarısı!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

} // eğer sonlandır

//Uyarı RSIPriceLine < TradeSignalLine

if (dRSIPriceLine[0]dTradeSignalLine[1] && Alert.RSIPriceLine) {

//PrintD("RSIPriceLine < TradeSignalLine");

if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;

sAlertMsg="TDI Uyarısı - "+Symbol()+" "+TF2Str(Period())+": TradeSignalLine'ın Altında RSIPriceLine.";

if (Alert.Popup) Alert(sAlertMsg);

if (Alert.Email) SendMail( sAlertMsg, "MT4 Uyarısı!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

} // eğer sonlandır

} // eğer sonlandır

if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[1]<GetTickCount())) {

//RSIPriceLine ise uyar > TradeSignalLine && dMarketBaseLine

if (dRSIPriceLine[0]>dMarketBaseLine[0] && dRSIPriceLine[1]<dMarketBaseLine[1] && Alert.MarketBaseLine) {

if (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1]) {

if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;

sAlertMsg="TDI Uyarısı - "+Symbol()+" "+TF2Str(Period())+": TradeSignalLine ve MarketBaseLine üzerinde RSIPriceLine.";

if (Alert.Popup) Alert(sAlertMsg);

if (Alert.Email) SendMail( sAlertMsg, "MT4 Uyarısı!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

} // eğer sonlandır

} // eğer sonlandır

//RSIPriceLine < TradeSignalLine && dMarketBaseLine ise uyar

if (dRSIPriceLine[0]dMarketBaseLine[1] && Alert.MarketBaseLine) {

if (dRSIPriceLine[0]dTradeSignalLine[1] ) {

if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;

sAlertMsg="TDI Uyarısı - "+Symbol()+" "+TF2Str(Period())+": TradeSignalLine ve MarketBaseLine'ın altında RSIPriceLine.";

if (Alert.Popup) Alert(sAlertMsg);

if (Alert.Email) SendMail( sAlertMsg, "MT4 Uyarısı!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

} // eğer sonlandır

} // eğer sonlandır

} // eğer sonlandır

}//end if(Alert.RSIPriceLine || Alert.MarketBaseLine)

dönüş(0);

}

UYARI: 10k politikası nedeniyle kodu ikiye böldüm; bu yüzden her iki parçayı bir arada kopyalayın ve göstergeyi oluşturun!

 

Pekala millet, işte buradasınız, tüm formüller için üzgünüm!

Dosyalar:
tdi-2.mq4  4 kb
 

Yanlış olan Doğru kodu başka bir koda kopyaladı, eskisinin üzerine yazdı, derledi ve dosya hala eski kodu mu kullanıyor?! anlamayın; neyse kod doğru

 
Jonny473:
Yanlış olan Doğru kodu başka bir koda kopyaladı, eskisinin üzerine yazdı, derledi ve dosya hala eski kodu mu kullanıyor?! anlamayın; neyse kod doğru

Daha önce gönderdiğim kod ....

 

Eski Dizüstü bilgisayarımda bir Vista Sürümü var, bu yüzden mq4 dosyaları kaybolmaya devam ediyor; şimdi çalışması gerekir!

Dosyalar:
tdi-2.mq4  4 kb