Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Zeitrahmen TDI Zusammenführung
Hey Leute, hey Mladen,
da einige von Euch den TDI als Signalgeber nutzen, bin ich auf das TDI Alert System gestoßen, wie unten zu sehen (ich gebe einfach ein Signal oder sogar EMail Alert, wenn ein Cross im TDI passiert). Wahrscheinlich ist dies nichts Neues. Da es sicherer ist, den TDI mit mindestens zwei Timeframes zu handeln (60min als Basis, 5min für Scalping), frage ich, ob folgendes möglich ist: Ich möchte Signale von mindestens zwei verschiedenen Timeframes zusammenführen, um ein insgesamt zuverlässigeres Signal zu erhalten: Der größere Zeitrahmen wird als Basis verwendet, nach oben oder unten gibt die Richtung für den/die kleineren Zeitrahmen vor. Wenn das gleiche Signal auf dem kleineren Zeitrahmen erscheint, ist das ein Handel; der Handel wird nur auf dem Ausstiegssignal abhängig vom kleineren Zeitrahmen beendet.
Also hier ist der Indikator, den ich spreche über die Erstellung von Signalen; was denken Sie Jungs oder wurde etwas ähnliches bereits gepostet?
Hallo Leute, hallo Mladen,
da einige von Euch den TDI als Signalgeber nutzen, bin ich auf das TDI Alert System gestoßen, wie unten zu sehen ist (ich gebe einfach ein Signal oder sogar eine EMail-Benachrichtigung, wenn sich ein Kreuz im TDI ereignet). Wahrscheinlich ist dies nichts Neues. Da es sicherer ist, den TDI mit mindestens zwei Timeframes zu handeln (60min als Basis, 5min für Scalping), frage ich, ob folgendes möglich ist: Ich möchte Signale von mindestens zwei verschiedenen Timeframes zusammenführen, um ein insgesamt zuverlässigeres Signal zu erhalten: Der größere Zeitrahmen wird als Basis verwendet, nach oben oder unten gibt die Richtung für den/die kleineren Zeitrahmen vor. Wenn das gleiche Signal auf dem kleineren Zeitrahmen erscheint, ist das ein Handel; der Handel wird nur auf dem Ausstiegssignal abhängig vom kleineren Zeitrahmen beendet.
Hier ist also der Indikator, den ich für die Erstellung von Signalen meine; was meint ihr, oder wurde etwas Ähnliches bereits gepostet?Werde den Indikator in einer Sekunde posten...
FxTrendsTrader Bitte sehr
Lieber Mladen
Wäre es möglich, dass Sie diesem Indikator die Option "Coloring on Slope" hinzufügen?
Vielen Dank im Voraus
Geheimcode
Werde den Indikator in einer Sekunde posten...
Herzinfarkt....?...
Herzinfarkt....?...
Nein, kein Herzinfarkt: Hier ist der Code, einfach kopieren und den Indikator erstellen, kann die Datei nicht finden
/*------------------------------------------------------------------------------------
Name: xTDI-Pfeil.mq4
Urheberrecht ?2010, Xaphod, Forex Whiz
Beschreibung: - Zeichnet Pfeile für die TDI-Kreuzungen
- Liefert Warnungen bei Überkreuzungen der drei oben genannten Linien.
Änderungsprotokoll:
2010-10-19. Xaphod, v1.00
- Erste Veröffentlichung
-------------------------------------------------------------------------------------*/
// Indikator-Eigenschaften
#property copyright "Copyright ? 2010, Xaphod"
#property link "http://forexwhiz.appspot.com"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 LimonenGrün
#property indicator_color2 Rot
#eigenschaft indicator_color3 Grün
#Eigenschaft indicator_color4 FireBrick
#Eigenschaft indicator_width1 1
#Eigenschaft indicator_width2 1
#Eigenschaft indicator_width3 1
#eigenschaft indicator_width4 1
#Eigenschaft indicator_maximum 1
#Eigenschaft indicator_minimum 0
// Konstante Definitionen
#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 PFEIL_THIN_DN 226
#define ARROW_THICK_UP 233
#define PFEIL_THICK_DN 234
#define PFEIL_HOLLOW_UP 241
#define PFEIL_HOLLOW_DN 242
#define PFEIL_ROUND_UP 221
#define PFEIL_ROUND_DN 222
// Indikator-Parameter
extern string Indi.Copyright= "?2010, forexwhiz.appspot.com";
extern string Indi.Version= INDICATOR_VERSION;
extern string Show.Settings="????????????????????????????????????";
extern int Show.TimeFrame=0; // Zu verwendender Zeitrahmen. Aktueller Zeitrahmen=0.
extern bool Show.MarketBaseLine=true; // Kreuz über/unter der Marktbasislinie in einer anderen Farbe anzeigen
extern int Show.ArrowType=0; // 0=Dünn, 1=Dick, 2=Hohl, 3=Rund
extern int Show.ArrowSize=1; // Größe des Pfeils (1-5)
extern int Show.ArrowOffset=10; // Offset vom Ende der Kerze zur Anzeige des Pfeils
extern string TDI.Settings="????????????????????????????????????";
extern int TDI.RSIPeriod = 13; // Zeitraum. Empfohlene Werte: 8-25
extern int TDI.RSIPrice = 0; // 0=CLOSE, 1=OPEN, 2=HIGH, 3=LOW, 4=MEDIAN, 5=TYPICAL, 6=WEIGHTED
extern int TDI.VolatilityBand = 34; // Empfohlene Werte: 20-40
extern int TDI.RSIPriceLine = 2; // Zeitraum
extern int TDI.RSIPriceType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA
extern int TDI.TradeSignalLine = 7; // Zeitraum
extern int TDI.TradeSignalType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA
extern string Alert.Settings="????????????????????????????????????";
extern bool Alert.RSIPriceLine=true; // Alarm, wenn der RSI-Preis die Signallinie kreuzt. Grün kreuzt rot.
extern bool Alert.MarketBaseLine=true; // Alarm, wenn der RSI-Kurs die Signallinie und die Marktbasislinie kreuzt. Grün kreuzt rot und gelb
extern bool Alert.NewBarOnly=true; // True=Alarm, wenn ein neuer Bar eröffnet wird. False=Alarm, wenn sich Linien kreuzen
extern int Alert.Timeout=60; // Deaktiviert Alarme für N Sekunden nach einem Alarm. Nur wenn Alert.NewBarOnly=false
extern bool Alert.Popup=true; // Popup-Fenster und Ton bei Alarm
extern bool Alert.Email=false; // E-Mail bei Alarm senden
// Globale Modulvariablen
double dBuffer0[];
double dBuffer1[];
double dBuffer2[];
double dBuffer3[];
bool bStartup;
void SetArrowType(int& iArrowUp, int& iArrowDn) {
switch (Show.ArrowType) {
Fall 1: // Dünn
iArrowDn=ARROW_THIN_DN;
iArrowUp=ARROW_THIN_UP;
break;
Fall 2: // Hohler Pfeil
iArrowDn=ARROW_HOLLOW_DN;
iArrowUp=ARROW_HOLLOW_UP;
break;
Fall 3: // Rund
iArrowDn=ARROW_ROUND_DN;
iArrowUp=ARROW_ROUND_UP;
break;
default: // Dick
iArrowDn=ARROW_THICK_DN;
iArrowUp=ARROW_THICK_UP;
break;
}
}
//-----------------------------------------------------------------------------
// Funktion: init()
// Beschreibung: Benutzerdefinierte Funktion zur Initialisierung des Indikators.
//-----------------------------------------------------------------------------
int init() {
int iArrowUp;
int iArrowDn;
string sType;
string sTF;
SetArrowType(iArrowUp, iArrowDn );
SetIndexStyle(0,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(0,dBuffer0);
SetIndexLabel(0, "TDI:Mkt-Up");
SetIndexPfeil(0, iPfeilAuf);
SetIndexStyle(1,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexPuffer(1,dBuffer1);
SetIndexLabel(1, "TDI:Mkt-Dn");
SetIndexPfeil(1, iPfeilDn);
SetIndexStyle(2,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexPuffer(2,dBuffer2);
SetIndexLabel(2, "TDI:Sig-Up");
SetIndexPfeil(2, iPfeilAuf);
SetIndexStyle(3,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(3,dBuffer3);
SetIndexLabel(3, "TDI:Sig-Dn");
SetIndexPfeil(3, iPfeilDn);
if (Show.TimeFrame==0)
sTF="";
sonst
sTF=TF2Str(Show.TimeFrame);
IndicatorShortName(INDICATOR_NAME+""+sTF);
bStartup=true;
return(0);
}
//-----------------------------------------------------------------------------
// Funktion: deinit()
// Beschreibung: Benutzerdefinierte Funktion zur Deinitialisierung des Indikators.
//-----------------------------------------------------------------------------
int deinit() {
return (0);
}
///-----------------------------------------------------------------------------
// Funktion: start()
// Beschreibung: Benutzerdefinierte Indikator-Iterationsfunktion.
//-----------------------------------------------------------------------------
int start() {
int iNewBars;
int iCountedBars;
int i;
double dVBHighLine; // Oberes Volatilitätsband - obere blaue Linie
double dVBLowLine; // Unteres Volatilitätsband - untere blaue Linie
double dMarketBaseLine0; // Markt-Basislinie - Gelbe Linie
double dRSIPriceLine0; // RSI-Preislinie - Grüne Linie
double dTradeSignalLine0; // Handelssignallinie - Rote Linie
static double dMarketBaseLine1; // Markt-Basislinie - Gelbe Linie
static double dRSIPriceLine1; // RSI-Kurslinie - Grüne Linie
static double dTradeSignalLine1; // Handelssignallinie - Rote Linie
double dOffset;
// Unverarbeitete Ticks ermitteln
iCountedBars=IndicatorCounted();
if(iCountedBars < 0) return (-1);
if(iCountedBars>0) iCountedBars--;
iNewBars=Bars-iCountedBars;
for(i=iNewBars; i>=0; i--) {
// Vorherige TDI-Daten abrufen
//if (Zeit!=tCurTime) {
//tCurTime=Zeit;
dMarketBaseLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i+1); // Gelbe Linie
dRSIPriceLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i+1); // Grüne Linie
dTradeSignalLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i+1); // Rote Linie
//}
// Aktuelle TDI-Daten holen
dMarketBaseLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Gelbe Linie
dRSIPriceLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Grüne Linie
dTradeSignalLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Rote Linie
// Aktuellen Anzeigepuffer löschen
dBuffer0 = EMPTY_VALUE;
dBuffer1 = EMPTY_VALUE;
dBuffer2 = EMPTY_VALUE;
dBuffer3 = EMPTY_VALUE;
dOffset=Point*(10*Show.ArrowOffset/MarketInfo(Symbol(),MODE_TICKVALUE));
if (dRSIPriceLine0>dMarketBaseLine0 && dRSIPriceLine1dTradeSignalLine0 && Show.MarketBaseLine)
dBuffer0 = Low-dOffset;
else if (dRSIPriceLine0>dTradeSignalLine0 && dRSIPriceLine1<dTradeSignalLine1)
dBuffer2 = Low-dOffset;
if (dRSIPriceLine0dMarketBaseLine1 && dRSIPriceLine0<dTradeSignalLine0 && Show.MarketBaseLine)
dBuffer1 = High+dOffset;
sonst if (dRSIPriceLine0dTradeSignalLine1)
dBuffer3 = High+dOffset;
// Prüfung auf Alerts
if (i==0) AlertCheck();
}
// Startup-Flag zurücksetzen
if (bStartup) bStartup=false;
// Bye bye
return(0);
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------------------
// Funktion: TF2Str()
// Beschreibung: Zeitrahmen in eine Zeichenkette umwandeln
//-----------------------------------------------------------------------------
string TF2Str(int iPeriode) {
switch(iPeriode) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
Fall PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
Fall PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
Fall PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
Standard: return("M "+iPeriode);
}
}
//-----------------------------------------------------------------------------
// Funktion: AlertCheck()
// Beschreibung: Überprüft auf Alarmbedingungen und führt Alarme aus
//-----------------------------------------------------------------------------
void AlertCheck() {
string sAlertMsg;
static datetime tCurTime=0;
static int iAlertTimer[2];
statische int iAlertStatus[2];
double dMarketBaseLine[2]; // Markt-Basislinie - Gelbe Linie
double dRSIPriceLine[2]; // RSI-Preislinie - Grüne Linie
double dTradeSignalLine[2]; // Handelssignallinie - Rote Linie
int i,j;
bool bNewBar=false;
// Abbruch, wenn der Indikator gerade gestartet wurde
if (bStartup) {
tCurTime=Time[0];
return(0);
}
// Auf Alarme prüfen
if (Alert.RSIPriceLine || Alert.MarketBaseLine) {
// Warnung, wenn nur neuer Balken
if (Alert.NewBarOnly) {
// Zeit zurücksetzen
if(tCurTime!=Time[0]) {
tCurTime=Time[0];
bNewBar=true;
// TDI-Daten bei neuem Balken abrufen, d.h. Balken 1 und 2
for (i=0; i<2; i++) {
j=i+1;
dMarketBaseLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,j); // Gelbe Linie
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,j); // Grüne Linie
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,j); // Rote Linie
} //endfor
}//endif
}
else {
// Abrufen der TDI-Daten für den aktuellen Takt, d.h. Takt 0 und 1
for (i=0; i<2; i++) {
dMarketBaseLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Gelbe Linie
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Grüne Linie
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Rote Linie
} //endfor
} //end if(Alert.NewBarOnly)
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[0]<GetTickCount())) {
//Alert RSIPriceLine > TradeSignalLine
if (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1] && Alert.RSIPriceLine) {
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+""+TF2Str(Period())+": RSIPriceLine Above TradeSignalLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
//Alarm RSIPriceLine < TradeSignalLine
if (dRSIPriceLine[0]dTradeSignalLine[1] && Alert.RSIPriceLine) {
//DruckeD("RSIPriceLine < TradeSignalLine");
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+""+TF2Str(Period())+": RSIPriceLine Below TradeSignalLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[1]<GetTickCount())) {
//Alarm wenn RSIPriceLine > 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 Alert - "+Symbol()+""+TF2Str(Period())+": RSIPriceLine über TradeSignalLine und MarketBaseLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
//Alarm, wenn RSIPriceLine < TradeSignalLine && dMarketBaseLine
if (dRSIPriceLine[0]dMarketBaseLine[1] && Alert.MarketBaseLine) {
if (dRSIPriceLine[0]dTradeSignalLine[1] ) {
if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+""+TF2Str(Period())+": RSIPriceLine Unterhalb von TradeSignalLine und MarketBaseLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
} //end if
}//end if(Alert.RSIPriceLine || Alert.MarketBaseLine)
return(0);
}
ALERT: Ich habe den Code wegen der 10k-Politik in zwei Teile aufgeteilt; kopieren Sie also einfach beide Teile in einen und erstellen Sie den Indikator!
Ok, Leute, hier sind sie, sorry für die ganzen Formeln!
Falsch Habe gerade den richtigen Code in einen anderen kopiert, einen alten überschrieben, kompiliert und die Datei verwendet immer noch den alten Code?! Verstehe ich nicht; auf jeden Fall ist der Code korrekt
Falsch Ich habe einfach den richtigen Code in einen anderen kopiert, einen alten überschrieben, kompiliert und die Datei verwendet immer noch den alten Code?! Verstehe ich nicht; jedenfalls ist der Code korrekt
Der Code, den ich vorher gepostet habe....
Ich habe hier eine Vista-Version auf meinem alten Laptop, deshalb verschwinden die mq4-Dateien immer wieder; jetzt sollte es funktionieren!