Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
A análise do espectro singular (SSA) recalcula a menos que seja uma versão de ponto final. Como esse indicador usa SSA "regular", ele também recalcula
Receio que pelo código eu não possa ver qual é a sua intenção
Se você está tentando ter médias com níveis, use a que eu afixei como um modelo
Hi,
sim vou usar sua ma avançada com níveis, (tem mais preços, etc... ma colorida, etc...)
mas tentei criar um por mim mesmo para entender como criar um indicador personalizado,
minha idéia é criar o mesmo componente (basicamente um MA com 2 níveis...)
Eu uso um MA central , e outros 2 MA plotados usando linhas de pontos para dar o mesmo efeito que os níveis...
para cada nível que eu preencho o buffer usando no cálculo do evento... como você me disse, mas algo está errado ;-(
os 2 MA que simulam o nível serão deslocados verticalmente... mas não está funcionando
Hi,
sim vou usar sua ma avançada com níveis, (tem mais preços, etc... ma colorida, etc...)
mas tentei criar um por mim mesmo para entender como criar um indicador personalizado,
minha idéia é criar o mesmo componente (basicamente um MA com 2 níveis...)
Eu uso um MA central , e outros 2 MA plotados usando linhas de pontos para dar o mesmo efeito que os níveis...
para cada nível que eu preencho o buffer usando no cálculo do evento... como você me disse, mas algo está errado ;-(
os 2 MA que simulam o nível serão deslocados verticalmente... mas não está funcionando
Sim, isso é o que eu quis dizer
A coisa é tão simples quanto possível:
Não há necessidade de alterar nada no cálculo das médias ou qualquer outra coisa: apenas uma simples adição ou subtração do 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);
}
//+------------------------------------------------------------------+
Sim, isso é o que eu quis dizer
A coisa é tão simples quanto possível:
Não há necessidade de alterar nada no cálculo das médias ou qualquer outra coisa: apenas uma simples adição ou subtração do buffer central (ma)
você poderia mostrar um código de amostra para adicionar/subtrair (verticalmente) a ma? Eu tentei, mas meu código falhou...
você poderia mostrar um código de amostra para adicionar/subtrair (verticalmente) a ma? Eu tentei, mas meu código falhou...
Esse indicador utiliza TMA centralizado - ele recalcula. Os alertas seriam inúteis.
ok o que dizer da seta quando a cor muda
ok o que dizer da seta quando a cor muda
Os sinais (setas) seriam inúteis devido à sua natureza de recálculo/pintura.
Prezado @mladen,
Um especialista que não tem suporte Ecn pode ser usado com um corretor do tipo Ecn sem problemas?
Em alguns especialistas existem opções para corretores do tipo Ecn.
Isto me levou a pensar que poderia ser melhor otimizar ou adicionar alguns códigos para os corretores do tipo Ecn.
Prezado @mladen,
Um especialista que não tenha suporte Ecn pode ser usado com um corretor do tipo Ecn sem problemas?
Em alguns especialistas existem opções para corretores do tipo Ecn.
Isto me levou a pensar que poderia ser melhor otimizar ou adicionar alguns códigos para os corretores do tipo Ecn.
Sim, se você não usar o stop loss e não tiver lucro ao abrir pedidos.
Se for feito para o ecn/stp do outro lado, ele trabalhará em qualquer corretor sem nenhum problema. A única diferença é no momento da abertura das ordens - nenhuma outra mudança (ou otimização) é necessária
Obrigado por sua resposta detalhada.
Tanto quanto sei, a ea anexada não tem suporte de corretagem do tipo Ecn.
Quero usar esta ea em corretores do tipo Ecn usando SL e TP.
Ficarei muito feliz se você fornecer suporte de corretores do tipo Ecn.
Essa ea precisaria de uma reescrita para que todos o entendessem.
Mas como eu não falo a língua usada nela, não posso ajudar. Desculpe