Como codificar? - página 282

 
gilben:
Estou procurando uma solução para aplicar algoritmos de indicadores na matriz de preços.

na MQL4 alguns indicadores têm esta função, tais como: iCCIOnArray, iBandsOnArray...

Mas indicadores como o ADX não têm essa função.

Alguém tem idéia de como eu posso aplicar o cálculo do indicador sobre a matriz pré-definida (não do servidor de cotações)?

[lang=pl]Se você souber como determinado indicador é chamado, você pode fazer tudo:)

Por favor, explique com mais precisão o que exatamente você precisa

Abraço,

Grzesiek[/lang]

 

...

ADX usa o que é chamadoatrue range(Max(High,PreviousClose)-Min(Low,PreviousClose) e essa é a base do cálculo ADX

Devido aos valores altos, baixos e fechados necessários, ele não pode ser aplicado a uma matriz, Em geral, se você vê que há um preço necessário, então o indicador deve ser aplicável a uma matriz. Se não houver nenhum parâmetro de preço, então quase certo que não pode ser aplicado a um array (assumindo que o indicador, em primeiro lugar, esteja operando sobre preços)

 
g.pociejewski:
[lang=pl]Se você souber como determinado indicador é chamado, você pode fazer tudo:)

Por favor, explique com mais precisão o que exatamente você precisa

Abraço,

Grzesiek[/lang]

Obrigado Grzesiek.

Eu estava procurando por uma boa solução. eventualmente, a melhor resolução, é incorporar o código indi no código de especialista.

De qualquer forma, a menos que alguém me mostre outro caminho, eu o aplicarei desta forma.

 

Você tem arquivo fonte? O arquivo *.ex4 é compilado, portanto Você não tem acesso ao código-fonte.

Atenciosamente

 

solicitação

mladen:
estrela821

Experimente este aqui

________________________

Algumas explicações : Eu não usei as que você postou, mas as fiz (indicador anexado em seu post tem meu nome, mas essa versão não é feita por mim, mas essa não é a única razão pela qual eu não usei esse indicador). ...

com respeito a

Mladen

helo Mladen

é possível adaptar a stc EA para um HMA cor nrp-indi e High-low trend indi?

escrevi um pseudo-código (* não pode codificar de jeito nenhum... *):

************************************************************

externos:

Lote#

período para o HMA

???.

.....................

repetir:

obter a cor zig-zag-dot (barra fechada);

obtenha a cor da tendência HMA (barra de fechamento);

----------------------------------------------------------------

// venda aberta

se último zig-zag-dot = azul && HMA trend = vermelho -> abrir bilhete de venda (apenas uma vez por cor de tendência HMA)

se não pudesse abrir a venda-> tentar novamente 3 vezes

se não houver alerta de sucesso e e-mail: não foi possível abrir a venda por símbolo,TF, tempo;

senão

// compra aberta

se último zig-zag-dot =red && HMA trend = blue -> open BUY ticket (apenas uma vez por cor HMA trend)

se não pudesse abrir a compra-> tente novamente 3 vezes

se não houver alerta de sucesso & e-mail: não foi possível abrir a compra por símbolo,TF, tempo;

-------------------------------------------------------------------

se a tendência HMA ( vermelho ) mudar para azul -> fechar venda, aguarde 10 seg. ;

se a tendência HMA ( azul ) mudar para vermelho -> fechar compra, aguarde 10 seg..;

-------------------------------------------------------------------

fechar todas as negociações na sexta-feira às 12:00h (GMT).

****************************************************************

sei que haverá algumas perdas, mas isso não me incomoda...

eu não quero nenhum SL ...

cumprimentos

Cado

hma_color_nrp.ex4high_-_low_trend.mq4

Arquivos anexados:
 

ATR + MA & Largura de banda + MA

[Olá, preciso de um indicador personalizado que, em uma janela separada, escreva atr e a média móvel calcule sobre ele e a mesma coisa para a largura de banda. Eu fiz o código em mql4 e usei o IMAONARRAY para calcular o MA, mas o indicador não funciona...alguém pode me ajudar????

Este é um dos códigos teo...

Obrigado ...

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Average True Range |

//+------------------------------------------------------------------+

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

for(i=0; i<limit; i++)

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

for(i=0; i<limit; i++)

{

MyArray = AtrBuffer;

}

for(i=0; i<limit; i++)

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

//+------------------------------------------------------------------+

[/lang]

 

...

Experimente agora

k3rn3l:
[Olá, preciso de um indicador personalizado que, em uma janela separada, escreva atr e a média móvel calcule sobre ele e a mesma coisa para a largura de banda. Eu fiz o código em mql4 e usei o IMAONARRAY para calcular o MA, mas o indicador não funciona...alguém pode me ajudar????

Este é um dos códigos teo...

Obrigado

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Average True Range |

//+------------------------------------------------------------------+

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

for(i=0; i<limit; i++)

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

for(i=0; i<limit; i++)

{

MyArray = AtrBuffer;

}

for(i=0; i<limit; i++)

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

//+------------------------------------------------------------------+
[/lang]
Arquivos anexados:
atr__ma.mq4  2 kb
 

[Olá, alguém pode me ajudar a construir esta fórmula em código metatrader?

(isto está na fórmula metastock:)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Mov( Típico(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]

 

...

Interessante

A única coisa que você precisa ajustar para diferentes períodos de tempo é a porcentagem. 1% parece ser uma boa escolha para um gráfico de 4 horas, mas aqui está um exemplo de um gráfico de 15 minutos com 0,5% em vez do padrão de 1%.

PS: Eu não tenho idéia de qual é o nome original, assim chamado como está

cumprimentos

mladen

cedid:
[Olá, alguém pode me ajudar a construir esta fórmula em código metatrader?

(isto está na fórmula metastock:)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Mov( Típico(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]
Arquivos anexados:
levels.gif  22 kb
 
mladen:
Interessante

A única coisa que você precisa ajustar para diferentes períodos de tempo é a porcentagem. 1% parece ser uma boa escolha para um gráfico de 4 horas, mas aqui está um exemplo de um gráfico de 15 minutos com 0,5% em vez do padrão de 1%.

PS: Eu não tenho idéia de qual é o nome original, assim chamado como está

cumprimentos

mladen

[lang=tr]thank you mladen i will try it , i think it will work [/lang]

Razão: