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
El análisis de espectro singular (SSA) recalcula a menos que se trate de una versión de punto final. Como ese indicador utiliza el SSA "normal", también recalcula
Me temo que del código no puedo ver cuál es su intención en absoluto
Si lo que pretendes es tener medias con niveles, utiliza la que he colgado como plantilla
Hola,
si voy a usar tu ma avanzado con niveles, (tiene más precios, etc.. ma de colores, etc..)
pero traté de crear uno por mi cuenta para entender cómo crear un indicador personalizado,
mi idea es crear el mismo componente (básicamente una MA con 2 niveles..)
Utilizo un MA central, y otros 2 MA trazados usando líneas de puntos para dar el mismo efecto que los niveles...
para cada nivel relleno el buffer usando el evento de cálculo... como me dijiste, pero algo está mal ;-(
las 2 MAs que simulan el nivel se desplazan verticalmente... pero no funciona
Hola,
si voy a usar tu ma avanzado con niveles, (tiene más precios, etc.. ma de colores, etc..)
pero traté de crear uno por mi cuenta para entender cómo crear un indicador personalizado,
mi idea es crear el mismo componente (básicamente un MA con 2 niveles..)
Utilizo un MA central, y otros 2 MA trazados usando líneas de puntos para dar el mismo efecto que los niveles...
para cada nivel relleno el buffer usando el evento de cálculo... como me dijiste, pero algo está mal ;-(
las 2 MAs que simulan el nivel se desplazan verticalmente... pero no funciona
Sí, eso es lo que quería decir
La cosa es de lo más sencilla:
No hay que cambiar nada en el cálculo de las medias ni nada más : sólo una simple suma o resta del buffer central (ma)
double pipLevel1 = -10;
double pipLevel2 = 10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA); //MA Buffer
SetIndexBuffer(1,ExtLv1Buffer,INDICATOR_DATA); //MA lv1 Buffer
SetIndexBuffer(2,ExtLv2Buffer,INDICATOR_DATA); //MA lv2 Buffer
//--- set accuracy
IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//--- sets first bar from what index will be drawn
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID); //MA Style
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT); //MA lvl1 Style
PlotIndexSetInteger(2,PLOT_LINE_STYLE,STYLE_DOT); //MA lvl2 Style
//IndicatorSetInteger(INDICATOR_LEVELS,1,InpLevel1); //MA lvl1 Value
//IndicatorSetInteger(INDICATOR_COLOR2,1,Cyan);
//IndicatorSetInteger(INDICATOR_STYLE2,1,STYLE_DOT);
//IndicatorSetInteger(INDICATOR_IDTH,1,1);
//IndicatorSetInteger(INDICATOR_LEVELS,2,InpLevel2); //MA lvl2 Value
//IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,Cyan);
//IndicatorSetInteger(INDICATOR_LEVELSTYLE,2,STYLE_DOT);
//IndicatorSetInteger(INDICATOR_LEVELWIDTH,2,1);
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpMAPeriod); //MA
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpMAPeriod); //MA lvl1
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpMAPeriod); //MA lvl2
//---- line shifts when drawing
PlotIndexSetInteger(0,PLOT_SHIFT,InpMAShift); //MA
PlotIndexSetInteger(1,PLOT_SHIFT,InpMAShift); //MA lvl1
PlotIndexSetInteger(2,PLOT_SHIFT,InpMAShift); //MA lvl2
//--- name for DataWindow
string short_name="unknown ma";
switch(InpMAMethod)
{
case MODE_EMA : short_name="EMA"; break;
case MODE_LWMA : short_name="LWMA"; break;
case MODE_SMA : short_name="SMA"; break;
case MODE_SMMA : short_name="SMMA"; break;
}
IndicatorSetString(INDICATOR_SHORTNAME,short_name+"("+string(InpMAPeriod)+")");
//---- sets drawing line empty value--
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); //MA
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0); //MA lvl1
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0.0); //MA lvl2
//---- initialization done
}
//+------------------------------------------------------------------+
//| Moving Average |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
double pipMultiplier=_Point*MathPow(10,MathMod(_Digits,2));
pipLevel1 = InpLevel1 * pipMultiplier;
pipLevel2 = InpLevel2 * pipMultiplier;
//Print("point:"+_Point+" Digits:"+_Digits+ "pipMul:"+pipMultiplier);
//pipLevel1 = InpLevel1 / 10;
//pipLevel2 = InpLevel2 / 10;
//--- check for bars count
if(rates_total<InpMAPeriod-1+begin)
return(0);// not enough bars for calculation
//--- first calculation or number of bars was changed
if(prev_calculated==0)
{
ArrayInitialize(ExtLineBuffer,0); //MA
ArrayInitialize(ExtLv1Buffer,1); //MA level1
ArrayInitialize(ExtLv2Buffer,2); //MA level2
}
//--- sets first bar from what index will be draw
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpMAPeriod-1+begin); //MA
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpMAPeriod-1+begin); //MA lvl1
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpMAPeriod-1+begin); //MA lvl2
//--- calculation
switch(InpMAMethod)
{
case MODE_EMA:
CalculateEMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
//Print ("rates_total:"+rates_total+" prev:"+prev_calculated+" begin:"+begin+" price:"+price[rates_total-1]);
break;
case MODE_LWMA:
CalculateLWMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
break;
case MODE_SMMA:
CalculateSmoothedMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
break;
case MODE_SMA:
CalculateSimpleMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
break;
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Sí, eso es lo que quería decir
La cosa es de lo más sencilla:
No hay necesidad de cambiar nada en el cálculo de los promedios o cualquier otra cosa : sólo una simple adición o sustracción del buffer central (ma)
¿podrías mostrar un código de ejemplo para sumar/restar (verticalmente) el ma? lo he intentado pero mi código falla..
¿podría mostrar un código de ejemplo para sumar/restar (verticalmente) la ma? Lo he intentado pero mi código falla..
Ese indicador utiliza la TMA centrada - se recalcula. Las alertas no tendrían sentido
ok lo de la flecha cuando el cambio de color
ok que de flecha cuando el cambio de color
Las señales (flechas) no tendrían sentido debido a su naturaleza de recálculo/repintado
Estimado @mladen,
¿Puede un experto que no tiene soporte Ecn ser utilizado con un broker de tipo Ecn sin problema?
En algunos expertos hay opciones para brokers de tipo Ecn.
Esto me llevó a pensar que podría ser mejor optimizar o añadir algunos códigos para los brokers de tipo Ecn.
Estimado @mladen,
¿Puede un experto que no tiene soporte Ecn ser utilizado con un broker de tipo Ecn sin problema?
En algunos expertos hay opciones para brokers de tipo Ecn.
Esto me llevó a pensar que podría ser mejor optimizar o añadir algunos códigos para brokers de tipo Ecn.
Sí, si no se utiliza el stop loss y el take profit al abrir las órdenes
Si está hecho para ecn/stp por otro lado, funcionará en cualquier broker sin ningún problema. La única diferencia es en el momento de abrir las órdenes - no se necesita ningún otro cambio (u optimización) en absoluto
Gracias por detallar su respuesta.
Por lo que sé el ea adjunto no tiene soporte de broker tipo Ecn.
Quiero usar este ea en un broker de tipo Ecn usando SL y TP.
Estaré muy feliz si usted proporciona el apoyo de tipo Ecn broker.
Ese ea necesitaría una reescritura para que todo el mundo lo entienda
Pero como no hablo el idioma que se utiliza en él, no puedo ayudar. Lo siento