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
Um pouco de pintura a nível de Murray
Boa tarde. Os tipos inteligentes precisam realmente de traduzir o indicador de correlação em MT5
#janela_do_cartão_indicador de propriedade
#nóculos_indicadores de propriedade 2
#property indicator_plots 2
#indicador de propriedade_color1 clrDeepSkyBlue
#indicador de propriedade_color2 clrDeepSkyBlue
#janela_do_cartão_indicador de propriedade
duplo UpBuffer[];
duplo DnBuffer[];
int OnInit()
{
SetIndexBuffer(0,UpBuffer);
SetIndexBuffer(1,DnBuffer);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(1,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
return(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int OnCalculate(const int taxas_total,const int prev_calculado,const datatime &time[],const double &open[],const double &high[],const double &low[],const double &close[],const long &tick_volume[],const long &volume[],const int &spread[])
{ int i;
for(i=1000;i>0;i--)
{ UpBuffer[i]=1.428; DnBuffer[i]=1.41;
}
return(0);
}
Porque é que as linhas não estão desenhadas?
Deve ser algo assim, acreditem ou não, está a funcionar.
Descarreguei este indicador. Ao compilá-lo deu um erro na linha 228, não consegui fazer uma fotografia, por isso, por favor, aceite a minha palavra. Quero usar o indicador que uso no MT5, é por isso que estou aqui, não o consegui fazer eu próprio. Talvez possa reescrevê-lo para mim. Obrigado.
Por favor, ajudem.
Tentou reescrever o WATL, quase conseguiu. As linhas não são desenhadas correctamente, é por causa de um cálculo tortuoso de LWMA. E o mais importante, por vezes o gráfico tem tais surpresas:
Uma linha de pontos é por vezes idêntica aos pontos sobre os quais é calculado o WATL.
Ou, por vezes, faço rodar o gráfico e os pontos sobrepõem-se todos na barra adjacente.
Obrigado antecipadamente por qualquer ajuda =)
Talvez quem tenha visto este indicador nas transformações MQL5?
Olá,
Não consegui fazer o que queria.
Tenho um amortecedor de muwing diferente na minha cabeça, tenho um par diferente, do que aquele que tinha na minha cabeça.
[código]
#janela_indicadora de propriedade_separate_window
#nóculos_indicadores de propriedade 6
#property indicator_plots 2
#indicador de propriedade_tipo1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#indicador de propriedade_color1 clrBlue
#indicador de propriedade_color2 clrRRed
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID
input int período_1 = 20;
input int período_2 = 100;
input ENUM_MA_METHOD ma_method = MODE_SMA;
input ENUM_APPLIED_PRICE applied_price = PREÇO_CLOSE;
duplo ExtMapBuffer1[];
duplo ExtMapBuffer2[];
int EMHandle1=0;
int EMHandle2=0;
int EMHandle11=0;
int EMHandle22=0;
MqlParam params[]; // Estrutura para salvar parâmetros indicadores
double ma1[],ma2[],ma3[],ma4[];//temporal buffers
int OnInit()
{
//--- cartografia de amortecedores indicadores
SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA);
SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA);
SetIndexBuffer(2, ma1, INDICATOR_DATA);
SetIndexBuffer(3, ma2, INDICATOR_DATA);
SetIndexBuffer(4, ma3, INDICATOR_DATA);
SetIndexBuffer(5, ma4, INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_SHIFT, 0);
PlotIndexSetInteger(1, PLOT_SHIFT, 0);
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRRed);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
IndicatorSetString(INDICADOR_SHORTNAME, "2_2_MA");
//--- definir precisão
IndicatorSetInteger(INDICADOR_DIGITS,4);
//---
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_1;
// Compensação
params[1].type =TYPE_INT;
params[1].integer_value=0;
// Método de cálculo: cálculo da média simples
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
// tipo de preços para cálculo: preços de fecho
params[3].type =TYPE_INT;
params[3].integer_value=PREÇO_CLOSE;
EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PREÇO_CLOSE;
EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_1;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PREÇO_CLOSE;
EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PREÇO_CLOSE;
EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
return(0);
}
int OnCalculate (const int taxas_total,// tamanho do preço da matriz[];
const int prev_calculated,// número de barras disponíveis ;na chamada anterior;
const int begin,// que índice em matriz de preços[] começarão dados válidos;
const double &price[]) // matriz, sobre a qual o indicador será calculado;
{
int i;
ArraySetAsSeries(ma1, verdadeiro);
ArraySetAsSeries(ma2, verdadeiro);
ArraySetAsSeries(ma3, verdadeiro);
ArraySetAsSeries(ma4, true);
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());}
int limit;
//if(prev_calculated<1)
//limite=período_1;
limit=prev_calculated-1;
para( i=0; i<limite; i++)
ExtMapBuffer1[0]=calculado;
ExtMapBuffer2[0]=calculado;
Comentário(
"\n=====================",
"\n ma1[0] : ",DoubleToString(ma1[0],5),
"\n ma2[0] : ",DoubleToString(ma2[0],5),
"\n ma3[0] : ",DoubleToString(ma3[0],5),
"\n ma4[0] : ",DoubleToString(ma4[0],5),
"\n ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
);
return(rates_total);
}
nulo OnDeinit(const int razão)
{
Comentário(");
}
[/código]
Quando 0 em vez de i (para uma barra) vejo o resultado, quando a barra (corrente = i) mostra que não consigo encontrar dados para o segundo par.
O gráfico do par está aberto, na Janela de Mercado não sei onde confundir as coisas.
Dois pares diferentes num só indicador - então onde está o meu erro?
Tento colocar 0 e ver o resultado como um comentário, mas não tenho uma linha.
Para esclarecer: coloco ma1 e ma2 num par e ma3 e ma4 no outro par.
Obrigado.