Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
fusione TDI timeframe
Ciao ragazzi, ciao Mladen,
dato che alcuni di voi usano il TDI come fornitore di segnali, mi sono imbattuto nel sistema di allerta TDI, come si vede qui di seguito (io do solo un segnale o anche un allarme EMail quando avviene un incrocio nel TDI). Probabilmente questo non è niente di nuovo. Siccome è più sicuro fare trading sul TDI con almeno due timeframes (60min come base, 5min per lo scalping), chiedo se è possibile quanto segue: Quello che voglio è unire i segnali di almeno due diversi timeframes per darmi un segnale complessivo più affidabile: Il timeframe più grande è usato come base, su o giù dà la direzione per il più piccolo. Se lo stesso segnale appare sul timeframe più piccolo, questo è un trade; il trade viene abbandonato solo sul segnale di uscita che dipende dal timeframe più piccolo.
Quindi questo è l'indicatore di cui sto parlando per la creazione di segnali; cosa ne pensate ragazzi o è stato già postato qualcosa di simile?
Ciao ragazzi, ciao Mladen,
dato che alcuni di voi usano il TDI come fornitore di segnali, mi sono imbattuto nel sistema di allerta TDI, come si vede qui di seguito (mi dà solo un segnale o anche EMail Alert quando sta accadendo una croce nel TDI). Probabilmente questo non è niente di nuovo. Siccome è più sicuro fare trading sul TDI con almeno due timeframes (60min come base, 5min per lo scalping), chiedo se è possibile quanto segue: Quello che voglio è unire i segnali di almeno due diversi timeframes per darmi un segnale complessivo più affidabile: Il timeframe più grande è usato come base, su o giù dà la direzione per il più piccolo. Se lo stesso segnale appare sul timeframe più piccolo, questo è un trade; il trade viene abbandonato solo sul segnale di uscita che dipende dal timeframe più piccolo.
Allora, questo è l'indicatore di cui sto parlando per la creazione di segnali; cosa ne pensate ragazzi o è stato già postato qualcosa di simile?Posterò l'indicatore in un secondo...
FxTrendsTrader Ecco a voi
Caro Mladen
Sarebbe possibile per te aggiungere la "colorazione sulla pendenza" in questo indicatore
Grazie in anticipo
secretcode
Posterò l'indicatore in un secondo...
Attacco di cuore....?...
Infarto....?...
No, nessun attacco di cuore: Heres il codice, basta copiarlo e creare l'indicatore, non riesco a trovare il file
/*------------------------------------------------------------------------------------
Nome: xTDI-Arrow.mq4
Copyright ?2010, Xaphod, Forex Whiz
Descrizione: - Disegna frecce per gli incroci TDI
- Fornisce avvisi per gli incroci delle tre linee di cui sopra.
Log delle modifiche:
2010-10-19. Xaphod, v1.00
- Rilascio iniziale
-------------------------------------------------------------------------------------*/
// Proprietà dell'indicatore
#property copyright "Copyright ? 2010, Xaphod"
#property link "http://forexwhiz.appspot.com"
#proprietà indicator_chart_window
#proprietà indicator_buffers 4
#proprietà indicator_color1 LimeGreen
#Proprietà indicatore_colore2 Rosso
#Proprietà indicatore_colore3 Verde
#proprietà indicator_color4 FireBrick
#proprietà indicator_width1 1
#proprietà indicator_width2 1
#proprietà indicator_width3 1
#proprietà indicator_width4 1
#proprietà indicator_maximum 1
#proprietà indicator_minimum 0
// Definizioni costanti
#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
// Parametri dell'indicatore
extern string Indi.Copyright= "?2010, forexwhiz.appspot.com
extern string Indi.Version= INDICATOR_VERSION;
extern string Show.Settings="????????????????????????????????????";
extern int Show.TimeFrame=0; // Timeframe da usare. Timeframe corrente=0.
extern bool Show.MarketBaseLine=true; // Mostra la croce sopra/sotto la linea di base del mercato in un colore diverso
extern int Show.ArrowType=0; // 0=Thin, 1=Thick, 2=Hollow, 3=Round
extern int Show.ArrowSize=1; // Dimensione della freccia (1-5)
extern int Show.ArrowOffset=10; // Offset dalla fine della candela per mostrare la freccia
extern string TDI.Settings="????????????????????????????????????";
extern int TDI.RSIPeriod = 13; // Periodo. Valori raccomandati: 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; // Valori raccomandati: 20-40
extern int TDI.RSIPriceLine = 2; // Periodo
extern int TDI.RSIPriceType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA
extern int TDI.TradeSignalLine = 7; // Periodo
extern int TDI.TradeSignalType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA
extern string Alert.Settings="????????????????????????????????????";
extern bool Alert.RSIPriceLine=true; // Allerta se il prezzo RSI incrocia la Signal line. Il verde incrocia il rosso.
extern bool Alert.MarketBaseLine=true; // Allerta se il prezzo RSI incrocia la Signal line e la market base line. Il verde incrocia il rosso e il giallo
extern bool Alert.NewBarOnly=true; // True=Allarme quando viene aperta una nuova barra. False=Allarme ogni volta che le linee si incrociano
extern int Alert.Timeout=60; // Disattiva gli allarmi per N secondi dopo un allarme. Solo quando Alert.NewBarOnly=false
extern bool Alert.Popup=true; // Finestra popup e suono su allarme
extern bool Alert.Email=false; // Invia email su allarme
// Variabili globali del modulo
double dBuffer0[];
double dBuffer1[]
double dBuffer2[]
double dBuffer3[];
bool bStartup;
void SetArrowType(int& iArrowUp, int& iArrowDn) {
switch (Show.ArrowType) {
caso 1: // Sottile
iArrowDn=ARROW_THIN_DN;
iArrowUp=ARROW_THIN_UP;
break;
caso 2: // Cavo
iArrowDn=ARROW_HOLLOW_DN;
iArrowUp=ARROW_HOLLOW_UP;
break;
caso 3: // Rotondo
iArrowDn=ARROW_ROUND_DN;
iArrowUp=ARROW_ROUND_UP;
break;
default: // Spessa
iArrowDn=ARROW_THICK_DN;
iArrowUp=ARROW_THICK_UP;
break;
}
}
//-----------------------------------------------------------------------------
// funzione: init()
// Descrizione: Funzione di inizializzazione dell'indicatore personalizzato.
//-----------------------------------------------------------------------------
int init() {
int iArrowUp;
int iArrowDn;
stringa sType;
stringa sTF;
SetArrowType(iArrowUp, iArrowDn );
SetIndexStyle(0,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(0,dBuffer0);
SetIndexLabel(0, "TDI:Mkt-Up");
SetIndexArrow(0, iArrowUp);
SetIndexStyle(1,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(1,dBuffer1);
SetIndexLabel(1, "TDI:Mkt-Dn");
SetIndexArrow(1, iArrowDn);
SetIndexStyle(2,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(2,dBuffer2);
SetIndexLabel(2, "TDI:Sig-Up");
SetIndexArrow(2, iArrowUp);
SetIndexStyle(3,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(3,dBuffer3);
SetIndexLabel(3, "TDI:Sig-Dn");
SetIndexArrow(3, iArrowDn);
if (Show.TimeFrame==0)
sTF="";
altrimenti
sTF=TF2Str(Show.TimeFrame);
IndicatorShortName(INDICATOR_NAME+" "+sTF);
bStartup=true;
return(0);
}
//-----------------------------------------------------------------------------
// funzione: deinit()
// Descrizione: Funzione personalizzata di deinizializzazione dell'indicatore.
//-----------------------------------------------------------------------------
int deinit() {
return (0);
}
///-----------------------------------------------------------------------------
// funzione: start()
// Descrizione: Funzione di iterazione dell'indicatore personalizzata.
//-----------------------------------------------------------------------------
int start() {
int iNewBars;
int iCountedBars;
int i;
double dVBHighLine; // banda di volatilità superiore - linea blu superiore
double dVBLowLine; // Banda di volatilità inferiore - linea blu inferiore
double dMarketBaseLine0; // Linea di base del mercato - linea gialla
double dRSIPriceLine0; // RSI PriceLine - Linea verde
double dTradeSignalLine0; // Linea del segnale commerciale - Linea rossa
static double dMarketBaseLine1; // Linea base del mercato - linea gialla
static double dRSIPriceLine1; // RSI PriceLine - linea verde
static double dTradeSignalLine1; // Linea del segnale commerciale - linea rossa
doppio dOffset;
// Ottiene i tick non processati
iCountedBars=IndicatorCounted();
if(iCountedBars < 0) ritorna (-1);
if(iCountedBars>0) iCountedBars--;
iNewBars=Bars-iCountedBars;
for(i=iNewBars; i>=0; i--) {
// Ottieni i dati TDI precedenti
//if (Time!=tCurTime) {
//tCurTime=Time;
dMarketBaseLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i+1); // Linea gialla
dRSIPriceLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i+1); // Linea verde
dTradeSignalLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i+1); // Linea rossa
//}
// Ottenere i dati TDI correnti
dMarketBaseLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Linea gialla
dRSIPriceLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Linea verde
dTradeSignalLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Linea rossa
// Cancella il buffer di visualizzazione corrente
dBuffer0 = EMPTY_VALUE;
dBuffer1 = EMPTY_VALUE;
dBuffer2 = EMPTY_VALUE;
dBuffer3 = EMPTY_VALUE;
dOffset=Point*(10*Show.ArrowOffset/MarketInfo(Symbol(),MODE_TICKVALUE));
se (dRSIPriceLine0>dMarketBaseLine0 && dRSIPriceLine1dTradeSignalLine0 && Show.MarketBaseLine)
dBuffer0 = Low-dOffset;
else if (dRSIPriceLine0>dTradeSignalLine0 && dRSIPriceLine1<dTradeSignalLine1)
dBuffer2 = Low-dOffset;
se (dRSIPriceLine0dMarketBaseLine1 && dRSIPriceLine0<dTradeSignalLine0 && Show.MarketBaseLine)
dBuffer1 = High+dOffset;
else if (dRSIPriceLine0dTradeSignalLine1)
dBuffer3 = High+dOffset;
// Controlla gli allarmi
if (i==0) AlertCheck();
}
// Azzera il flag di avvio
if (bStartup) bStartup=false;
// Ciao ciao
return(0);
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------------------
// funzione: TF2Str()
// Descrizione: Convertire time-frame in una stringa
//-----------------------------------------------------------------------------
stringa TF2Str(int iPeriod) {
switch(iPeriod) {
caso PERIODO_M1: return("M1");
caso PERIODO_M5: return("M5");
caso PERIODO_M15: return("M15");
caso PERIOD_M30: return("M30");;
caso PERIOD_H1: return("H1");
caso PERIOD_H4: return("H4");;
caso PERIOD_D1: return("D1");
caso PERIOD_W1: return("W1");;
caso PERIOD_MN1: return("MN1");
default: return("M "+iPeriod);
}
}
//-----------------------------------------------------------------------------
// funzione: AlertCheck()
// Descrizione: Controlla le condizioni di allarme ed esegue gli avvisi
//-----------------------------------------------------------------------------
void AlertCheck() {
stringa sAlertMsg;
static datetime tCurTime=0;
static int iAlertTimer[2];
static int iAlertStatus[2];
double dMarketBaseLine[2]; // Linea base del mercato - linea gialla
double dRSIPriceLine[2]; // RSI PriceLine - linea verde
double dTradeSignalLine[2]; // Linea del segnale di trading - linea rossa
int i,j;
bool bNewBar=false;
// Interrompi se l'indicatore si è appena avviato
if (bStartup) {
tCurTime=Time[0];
return(0);
}
// Controlla gli avvisi
if (Alert.RSIPriceLine || Alert.MarketBaseLine) {
// Allerta solo se newbar
if (Alert.NewBarOnly) {
// Azzera il tempo
if(tCurTime!=Time[0]) {
tCurTime=Time[0];
bNewBar=true;
// Ottieni i dati TDI sulla nuova barra, cioè le barre 1 e 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); // Linea gialla
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,j); // Linea verde
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,j); // Linea rossa
} //endfor
}//endif
}
else {
// Ottieni i dati TDI sulla barra corrente, cioè le barre 0 e 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); // Linea gialla
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Linea verde
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Linea rossa
} //endfor
} //end if(Alert.NewBarOnly)
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[0]<GetTickCount()) {
//Allarme RSIPriceLine > TradeSignalLine
se (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1] && Alert.RSIPriceLine) {
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="Allarme TDI - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine Sopra TradeSignalLine";
se (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
//Allarme RSIPriceLine < TradeSignalLine
if (dRSIPriceLine[0]dTradeSignalLine[1] && Alert.RSIPriceLine) {
//PrintD("RSIPriceLine < TradeSignalLine");
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="Allarme TDI - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine sotto TradeSignalLine";
se (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()) {
//Allerta se RSIPriceLine > TradeSignalLine && dMarketBaseLine
se (dRSIPriceLine[0]>dMarketBaseLine[0] && dRSIPriceLine[1]<dMarketBaseLine[1] && Alert.MarketBaseLine) {
se (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1]) {
if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="Allarme TDI - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine Sopra TradeSignalLine e MarketBaseLine";
se (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
//Allerta se RSIPriceLine < TradeSignalLine && dMarketBaseLine
se (dRSIPriceLine[0]dMarketBaseLine[1] && Alert.MarketBaseLine) {
se (dRSIPriceLine[0]dTradeSignalLine[1] ) {
if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="Allarme TDI - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine sotto TradeSignalLine e MarketBaseLine";
se (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);
}
ATTENZIONE: ho diviso il codice in due parti a causa della politica dei 10k; quindi basta copiare entrambe le parti in una e creare l'indicatore!
Ok ragazzi ecco qui, scusate per tutte le formule!
Quello sbagliato Ho appena copiato il codice giusto in un altro, sovrascritto un vecchio codice, compilato e il file sta ancora usando il vecchio codice?! Non capisco; comunque il codice è corretto
Quello sbagliato Ho appena copiato il codice giusto in un altro, sovrascrivendo quello vecchio, compilandolo e il file sta ancora usando il vecchio codice?! Non capisco; comunque il codice è corretto
Il codice che ho postato prima....
Ho una versione di Vista sul mio vecchio portatile, ecco perché i file mq4 continuano a scomparire; ora dovrebbe funzionare!