Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
fusión de TDI en el tiempo
Hola chicos, hola Mladen,
como algunos de ustedes utilizan el TDI como un proveedor de señales me encontré con el sistema de alerta TDI, como se ve a continuación (Acabo de dar una señal o incluso EMail de alerta cuando una cruz en el TDI está sucediendo). Probablemente esto no es nada nuevo. Como es más seguro para el comercio de la TDI con al menos dos marcos de tiempo (60min como base, 5min para scalping) , estoy preguntando si lo siguiente es posible:Lo que quiero es fusionar las señales de al menos dos marcos de tiempo diferentes para darme una señal general más fiable: El marco de tiempo más grande se utiliza como base, hacia arriba o hacia abajo da la dirección para el más pequeño (s). Si la misma señal aparece en el marco de tiempo más pequeño, eso es un comercio; el comercio se sale en la señal de salida sólo en función del marco de tiempo más pequeño.
Así que aquí está el indicador que estoy hablando de la creación de señales, ¿qué piensan ustedes o era algo similar ya publicado?
Hola chicos, hola Mladen,
como algunos de ustedes utilizan el TDI como un proveedor de señal me encontré con el sistema de alerta TDI, como se ve a continuación (Acabo de dar una señal o incluso EMail de alerta cuando una cruz en el TDI está sucediendo). Probablemente esto no es nada nuevo. Como es más seguro para el comercio de la TDI con al menos dos marcos de tiempo (60min como base, 5min para scalping) , estoy preguntando si lo siguiente es posible:Lo que quiero es fusionar las señales de al menos dos marcos de tiempo diferentes para darme una señal general más fiable: El marco de tiempo más grande se utiliza como base, hacia arriba o hacia abajo da la dirección para el más pequeño (s). Si la misma señal aparece en el marco de tiempo más pequeño, eso es un comercio; el comercio se sale en la señal de salida sólo en función del marco de tiempo más pequeño.
Así que aquí está el indicador que estoy hablando de la creación de señales, lo que ustedes piensan o era algo similar ya publicado?Publicaré el indicador en un segundo...
FxTrendsTrader Aquí tienes
Estimado Mladen
¿Sería posible añadir "Colorear la pendiente" en este indicador?
Gracias de antemano
secretcode
Publicaré el indicador en un segundo...
Ataque al corazón....?...
Ataque cardíaco....?...
No, no es un ataque al corazón: Aquí está el código, sólo tiene que copiar y crear el indicador, no puede encontrar el archivo
/*------------------------------------------------------------------------------------
Nombre: xTDI-Arrow.mq4
Copyright ?2010, Xaphod, Forex Whiz
Descripción: - Dibuja flechas para los cruces de TDI
- Proporciona alertas para los cruces de las tres líneas anteriores.
Registro de cambios:
2010-10-19. Xaphod, v1.00
- Versión inicial
-------------------------------------------------------------------------------------*/
// Propiedades de los indicadores
#property copyright "Copyright ? 2010, Xaphod"
#property link "http://forexwhiz.appspot.com"
#property ventana_gráfica_del_indicador
#property indicator_buffers 4
#propiedad indicador_color1 verde lima
#propiedad indicador_color2 Rojo
#propiedad indicator_color3 Verde
#propiedad indicator_color4 Ladrillo de fuego
#property indicator_width1 1
#Propiedad indicator_width2 1
#propiedad indicator_width3 1
#propiedad indicator_width4 1
#propiedad indicador_máximo 1
#propiedad indicador_mínimo 0
// Definiciones constantes
#define INDICATOR_NAME "xTDI-Arrow"
#define INDICATOR_VERSION "v1.00"
#define ALTURA_BARRA 1.00
#define TDI_INDI "Traders_Dynamic_Index"
#define FLECHA_ALTA 225
#define FLECHA_IN_DN 226
#define ARROW_THICK_UP 233
#define ARROW_THICK_DN 234
#define FLECHA_ALTA_ARRIBA 241
#define FLECHA_ALTA_DN 242
#define ARROW_ROUND_UP 221
#define ARROW_ROUND_DN 222
// Parámetros del indicador
extern string Indi.Copyright= "?2010, forexwhiz.appspot.com";
extern string Indi.Version= INDICATOR_VERSION;
extern string Show.Settings="????????????????????????????????????";
extern int Show.TimeFrame=0; // Plazo a utilizar. Timeframe actual=0.
extern bool Show.MarketBaseLine=true; // Mostrar el cruce por encima/debajo de la línea base del mercado en un color diferente
extern int Show.ArrowType=0; // 0=Fina, 1=Gruesa, 2=Hueca, 3=Ronda
extern int Show.ArrowSize=1; // Tamaño de la flecha (1-5)
extern int Show.ArrowOffset=10; // Desplazamiento desde el final de la vela para mostrar la flecha
extern string TDI.Settings="????????????????????????????????????";
extern int TDI.RSIPeriod = 13; // Periodo. Valores recomendados: 8-25
extern int TDI.RSIPrice = 0; // 0=Cerrado, 1=Abierto, 2=Alto, 3=Bajo, 4=Mediano, 5=Típico, 6=Ponderado
extern int TDI.VolatilityBand = 34; // Valores recomendados: 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; // Alerta si el precio RSI cruza la línea de señal. El verde cruza el rojo.
extern bool Alert.MarketBaseLine=true; // Alerta si el precio RSI cruza la línea de señal y la línea base del mercado. El verde cruza el rojo y el amarillo
extern bool Alert.NewBarOnly=true; // True=Alerta cuando se abre una nueva barra. False=Alerta cada vez que se cruzan las líneas
extern int Alert.Timeout=60; // Desactiva las alertas durante N segundos después de una alerta. Sólo cuando Alert.NewBarOnly=false
extern bool Alert.Popup=true; // Ventana emergente y sonido en la alerta
extern bool Alert.Email=false; // Enviar correo electrónico en caso de alerta
// Variables globales del módulo
double dBuffer0[];
double dBuffer1[];
double dBuffer2[];
double dBuffer3[];
bool bStartup;
void SetArrowType(int& iArrowUp, int& iArrowDn) {
switch (Show.ArrowType) {
caso 1: // Delgado
iArrowDn=ARROW_THIN_DN;
iArrowUp=ARROW_THIN_UP;
romper;
caso 2: // Hueco
iArrowDn=ARROW_HOLLOW_DN;
iArrowUp=ARROW_HOLLOW_UP;
break;
caso 3: // Redondo
iArrowDn=ARROW_ROUND_DN;
iArrowUp=ARROW_ROUND_UP;
break;
por defecto: // Grueso
iArrowDn=ARROW_THICK_DN;
iArrowUp=ARROW_THICK_UP;
break;
}
}
//-----------------------------------------------------------------------------
// función: init()
// Descripción: Función de inicialización del indicador personalizado.
//-----------------------------------------------------------------------------
int init() {
int iArrowUp;
int iArrowDn;
string sType;
cadena 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="";
si no
sTF=TF2Str(Show.TimeFrame);
IndicatorShortName(INDICATOR_NAME+" "+sTF);
bStartup=true;
return(0);
}
//-----------------------------------------------------------------------------
// función: deinit()
// Descripción: Función de desinicialización del indicador personalizada.
//-----------------------------------------------------------------------------
int deinit() {
return (0);
}
///-----------------------------------------------------------------------------
// función: start()
// Descripción: Función de iteración del indicador personalizada.
//-----------------------------------------------------------------------------
int inicio() {
int iNewBars
int iBarrasContadas;
int i;
double dVBHighLine; // Banda superior de volatilidad - Línea azul superior
double dVBLowLine; // Banda inferior de volatilidad - Línea azul inferior
double dMarketBaseLine0; // Línea base del mercado - Línea amarilla
double dRSIPriceLine0; // RSI PriceLine - Línea verde
double dTradeSignalLine0; // Línea de señal de operación - Línea roja
static double dMarketBaseLine1; // Línea base del mercado - Línea amarilla
static double dRSIPriceLine1; // RSI PriceLine - Línea verde
static double dTradeSignalLine1; // Línea de señal de operación - Línea roja
double dOffset;
// Obtener los ticks no procesados
iCountedBars=IndicatorCounted();
if(iCountedBars < 0) devuelve (-1);
if(iCountedBars>0) iCountedBars--;
iNewBars=Bars-iCountedBars;
for(i=iNewBars; i>=0; i--) {
// Obtener los datos anteriores de TDI
//si (¡Time!=tCurTime) {
//tCurTime=Tiempo;
dMarketBaseLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i+1); // Línea amarilla
dRSIPriceLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i+1); // Línea 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); // Línea roja
//}
// Obtener los datos actuales de TDI
dMarketBaseLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Línea amarilla
dRSIPriceLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Línea verde
dTradeSignalLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Línea roja
// Borrar el buffer de visualización actual
dBuffer0 = EMPTY_VALUE;
dBuffer1 = EMPTY_VALUE;
dBuffer2 = EMPTY_VALUE;
dBuffer3 = EMPTY_VALUE;
dOffset=Punto*(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;
else if (dRSIPriceLine0dTradeSignalLine1)
dBuffer3 = High+dOffset;
// Comprobar si hay alertas
if (i==0) AlertCheck();
}
// Restablecer la bandera de inicio
if (bStartup) bStartup=false;
// Adiós
return(0);
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------------------
// función: TF2Str()
// Descripción: Convertir el tiempo en una cadena
//-----------------------------------------------------------------------------
string TF2Str(int iPeriod) {
switch(iPeriod) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
por defecto: return("M "+iPeriod);
}
}
//-----------------------------------------------------------------------------
// función: AlertCheck()
// Descripción: Comprueba las condiciones de alerta y realiza las alertas
//-----------------------------------------------------------------------------
void AlertCheck() {
string sAlertMsg;
static datetime tCurTime=0;
static int iAlertTimer[2];
static int iAlertStatus[2];
double dMarketBaseLine[2]; // Línea base del mercado - Línea amarilla
double dRSIPriceLine[2]; // RSI PriceLine - Línea verde
double dTradeSignalLine[2]; // Línea de señal de operación - Línea roja
int i,j
bool bNewBar=false;
// Abortar si el indicador acaba de arrancar
if (bStartup) {
tCurTime=Tiempo[0];
return(0);
}
// Comprobar si hay alertas
if (Alert.RSIPriceLine | Alert.MarketBaseLine) {
// Alerta si sólo hay barra nueva
if (Alert.NewBarOnly) {
// Restablecer la hora
if(tCurTime!=Time[0]) {
tCurTime=Time[0];
bNewBar=true;
// Obtener datos TDI en la nueva barra, es decir, en las barras 1 y 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); // Línea amarilla
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,j); // Línea verde
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,j); // Línea roja
} //endfor
}//endif
}
else {
// Obtener datos TDI en la barra actual, es decir, en las barras 0 y 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); // Línea amarilla
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Línea verde
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Línea roja
} //endfor
} //end if(Alert.NewBarOnly)
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[0]<GetTickCount()) {
//Alerta RSIPriceLine > TradeSignalLine
if (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1] && Alert.RSIPriceLine) {
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="Alerta TDI - "+Símbolo()+" "+TF2Str(Periodo())+": RSIPriceLine Above TradeSignalLine";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "¡Alerta MT4!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
//Alerta RSIPriceLine < TradeSignalLine
if (dRSIPriceLine[0]dTradeSignalLine[1] && Alert.RSIPriceLine) {
//PrintD("RSIPriceLine < TradeSignalLine");
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="Alerta TDI - "+Símbolo()+" "+TF2Str(Periodo())+": RSIPriceLine Below TradeSignalLine";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "¡Alerta MT4!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[1]<GetTickCount()) {
//Alerta si 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="Alerta TDI - "+Símbolo()+" "+TF2Str(Periodo())+": RSIPriceLine por encima de TradeSignalLine y MarketBaseLine";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "¡Alerta MT4!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
//Alerta si 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="Alerta TDI - "+Símbolo()+" "+TF2Str(Periodo())+": RSIPriceLine por debajo de TradeSignalLine y MarketBaseLine";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "¡Alerta MT4!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
} //end if
}//end if(Alert.RSIPriceLine || Alert.MarketBaseLine)
return(0);
}
¡ALERTA: Dividí el código en dos partes debido a la política de 10k; así que sólo copie ambas partes en una y cree el indicador!
Ok chicos aquí tenéis, ¡perdón por todas las fórmulas!
Equivocado Acabo de copiar el código correcto en otro, sobreescribí uno viejo, lo compilé y el archivo sigue usando el código viejo? No lo entiendo; de todas formas el código es correcto
¡Equivocado Sólo copié el código correcto en otro, sobrescribí uno viejo, lo compilé y el archivo sigue usando el código viejo?! No lo entiendo; de todas formas el código es correcto
El código que publiqué antes....
Tengo una versión de Vista en mi viejo portátil, por eso los archivos mq4 siguen desapareciendo; ¡ahora debería funcionar!