Ajuda na codificação - página 173

 

oi codificadores,

criei um indicador muito simples que mostra um alerta quando a última barra está acima da sma10 ou abaixo dela. nada mais. mas gostaria de verificá-lo em 3 períodos de tempo diferentes. nunca trabalhei com indicadores mtf e por isso tenho alguns problemas com ele. esta versão verifica o gráfico m1, m5 e m15. funciona bem, mas há o problema de que o alerta é exibido em cada tic-tac e não apenas uma vez no período de tempo em que as condições são cumpridas.

eu ficaria feliz se alguém me ajudasse com isso. acho que só poderia ser um problema de sintaxe...

obrigado!

Arquivos anexados:
test.mq4  3 kb
 

Hi,

Tenho que perguntar novamente, porque não consigo encontrar um erro, mas estou recebendo apenas os valores errados :-(

Talvez alguém veja meu fracasso?!

Este é o código do indicador

#property indicator_chart_window

#property indicator_buffers 5

double WidestChannel_high[];

double InsideChannel_high[];

double StandardDeviation[];

double InsideChannel_low[];

double WidestChannel_low[];

extern int STD.Rgres.period=0; /*default 0 means the channel will use the open

time from "x" bars back on which ever time period

the indicator is attached to. one can change to 1,5,

15,30,60...etc to "lock" the start time to a specific

period, and then view the "locked" channels on a different time period...*/

extern int STD.Rgres.length=56; // bars back regression begins

extern double STD.Rgres.width=1.618;// widest channel

extern double STD.width=0.618; // inside channel

int init()

{

SetIndexBuffer(0,WidestChannel_high);

SetIndexLabel(0,"WidestChannel_high");

SetIndexBuffer(1,InsideChannel_high);

SetIndexLabel(1,"InsideChannel_high");

SetIndexBuffer(2,StandardDeviation);

SetIndexLabel(2,"StandardDeviation");

SetIndexBuffer(3,InsideChannel_low);

SetIndexLabel(3,"InsideChannel_low");

SetIndexBuffer(4,WidestChannel_low);

SetIndexLabel(4,"WidestChannel_low");

return(0);

}

int deinit() {

ObjectDelete("regression channel");ObjectDelete("std channel");return(0);

}

int start() {

int counted_bars=IndicatorCounted(),limit, iTF;

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//to refresh properly delete old objects...

ObjectDelete("regression channel");ObjectDelete("std channel");

//widest channel

ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),

Close[STD.Rgres.length],Time[0],Close[0]);

ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);

ObjectSet("regression channel",OBJPROP_COLOR,Orange);

ObjectSet("regression channel",OBJPROP_RAY,true);

//inside channel

ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),

Close[STD.Rgres.length],Time[0],Close[0]);

ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);

ObjectSet("std channel",OBJPROP_COLOR,Olive);

ObjectSet("std channel",OBJPROP_RAY,true);

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

{

double dev = iStdDev(NULL,STD.Rgres.period,STD.Rgres.length,0,MODE_SMA,PRICE_CLOSE,i);

double innerWidth = STD.width*dev;

double outerWidth = STD.Rgres.width*dev;

double price = ObjectGetValueByShift("std channel", i);

WidestChannel_high= price + outerWidth/2;

InsideChannel_high= price + innerWidth/2;

StandardDeviation= price;

InsideChannel_low= price - innerWidth/2;

WidestChannel_low= price - outerWidth/2;

}

return(0);}
 
sunshineh:
Hi,

Tenho que perguntar novamente, porque não consigo encontrar um erro, mas estou recebendo apenas os valores errados :-(

Talvez alguém veja meu fracasso?!

Este é o código do indicador

#property indicator_chart_window

#property indicator_buffers 5

double WidestChannel_high[];

double InsideChannel_high[];

double StandardDeviation[];

double InsideChannel_low[];

double WidestChannel_low[];

extern int STD.Rgres.period=0; /*default 0 means the channel will use the open

time from "x" bars back on which ever time period

the indicator is attached to. one can change to 1,5,

15,30,60...etc to "lock" the start time to a specific

period, and then view the "locked" channels on a different time period...*/

extern int STD.Rgres.length=56; // bars back regression begins

extern double STD.Rgres.width=1.618;// widest channel

extern double STD.width=0.618; // inside channel

int init()

{

SetIndexBuffer(0,WidestChannel_high);

SetIndexLabel(0,"WidestChannel_high");

SetIndexBuffer(1,InsideChannel_high);

SetIndexLabel(1,"InsideChannel_high");

SetIndexBuffer(2,StandardDeviation);

SetIndexLabel(2,"StandardDeviation");

SetIndexBuffer(3,InsideChannel_low);

SetIndexLabel(3,"InsideChannel_low");

SetIndexBuffer(4,WidestChannel_low);

SetIndexLabel(4,"WidestChannel_low");

return(0);

}

int deinit() {

ObjectDelete("regression channel");ObjectDelete("std channel");return(0);

}

int start() {

int counted_bars=IndicatorCounted(),limit, iTF;

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//to refresh properly delete old objects...

ObjectDelete("regression channel");ObjectDelete("std channel");

//widest channel

ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),

Close[STD.Rgres.length],Time[0],Close[0]);

ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);

ObjectSet("regression channel",OBJPROP_COLOR,Orange);

ObjectSet("regression channel",OBJPROP_RAY,true);

//inside channel

ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),

Close[STD.Rgres.length],Time[0],Close[0]);

ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);

ObjectSet("std channel",OBJPROP_COLOR,Olive);

ObjectSet("std channel",OBJPROP_RAY,true);

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

{

double dev = iStdDev(NULL,STD.Rgres.period,STD.Rgres.length,0,MODE_SMA,PRICE_CLOSE,i);

double innerWidth = STD.width*dev;

double outerWidth = STD.Rgres.width*dev;

double price = ObjectGetValueByShift("std channel", i);

WidestChannel_high= price + outerWidth/2;

InsideChannel_high= price + innerWidth/2;

StandardDeviation= price;

InsideChannel_low= price - innerWidth/2;

WidestChannel_low= price - outerWidth/2;

}

return(0);}

sunshineh,

Você não precisa dividir o desvio por 2 para obter o alto e o baixo - remova a parte "/2" e deve estar OK desde que o preço médio esteja OK. A largura do canal é sempre constante: a reversão padrão atual deve ser usada para o com, e não para algum outro valor. E o último, tanto quanto vejo, ObjectGetValueByShift("canal std", i); não funciona no canal de desvio padrão, pois funciona em linhas de tendência. Que valor ele está retornando eu não sei (veja o indicador anexo e você verá porque eu digo que não sei qual é esse preço)

Arquivos anexados:
_test_4.mq4  3 kb
 

HI mladen,

anexar um indicador de amostra usando símbolos internos predefinidos, bastante difícil de compreender por dentro , é possível obter algumas dicas deste indicador para me adaptar aos meus indicadores ou/& os seus indicadores para evitar problemas de repintura ou refrescar a linha de mudança ou fazer algum tipo de sinergia? Obrigado por procurar.

 
kenwa:
HI mladen,eu anexei um indicador de amostra usando símbolos internos predefinidos, bastante difícil de compreender por dentro , é possível obter algumas dicas deste indicador para me adaptar aos meus indicadores ou/& os seus indicadores para evitar problemas de repintura ou refrescar a linha de mudança ou fazer algum tipo de sinergia? Obrigado por procurar.

kenwa

Eu não trabalho com coisas descompiladas. Desculpe

 
mladen:
kenwa eu não trabalho com coisas descompiladas. Desculpe

ok, então eu o removo, mas curiosamente por que ninguém o vê, mas você pode saber que é material de descompilação

 
kenwa:
Ok, então eu o removo, mas curiosamente por que ninguém o vê, mas você pode saber que é material de descompilação

Todos que conhecem um pouco de codificação sabem que se trata de um código descompilado.

E mesmo que você não saiba nada sobre qualquer codificação, quando você tem uma coisa como esta :

/*

Gerado por EX4-TO-MQ4 descompilador FREEWARE V4.0.451.1 [-]

Website: MetaTrader 5 Trading Platform / MetaQuotes Software Corp.

E-mail : support@metaquotes.net

*/

escrito nas primeiras linhas do indicador que você postou, parece bastante óbvio que qualquer pessoa poderia ver que é um código descompilado, então, por favor ...

Tudo de bom

 

mladen, meu código não está descompilado. talvez você gostaria de dar uma pequena olhada nele?

 
Marbo:
mladen, meu código não está descompilado. talvez você gostaria de dar uma pequena olhada nele?

Marbo

Você pode fazer algo como no anexo. Ele o alertará uma vez por barra de tempo alvo ou quando o estado (tipo do alerta) mudar. Se você deseja ignorar o tipo, a verificação do tipo deve ser ignorada no procedimento doAlert. Se você deseja pular a verificação de tempo (neste caso apenas o tipo seria verificado), então pule a verificação de tempo no procedimento doAlert.

Arquivos anexados:
test_4.mq4  3 kb
 

Oi mladen,

Você provavelmente se lembrará que pedi alguma ajuda com um MA cross EA na semana passada. e, é claro, me referi indevidamente à seção Elite. Onde você pode sugerir que eu peça isso, por favor. Eu procurei e não encontrei uma resposta óbvia. Para refrescar sua memória, esta foi a especificação:

1.SMA cruz EMA

2.no fechamento da vela

3.OCO com nova ordem em nova direção

4.Capacidade de ajustar o escorregamento

5.sinal sonoro de cruz

6.Cross não é uma verdadeira cruz sem uma abertura de tubulação ajustável

7.Se possível, o monitoramento na vela, portanto, se uma vela for mais de X vezes o ATR (número ajustável para contar), um pedido é colocado com um alarme na direção dessa vela, e também para fechar um pedido, mas depois não iniciar um novo

8. de preferência se um pedido for feito como em 7 para soar um alarme

9. A confiabilidade da cruz é primordial. Em meus gráficos - FXCM, Vantage, FX Choice - alguns EAs, incluindo a Universal Cross, não aceitam negócios ou são muito tardios.

10. SL ajustável, mas pode deixar de fora se não for necessário

11.Trailing Stop

12.SL vai para o breakeven automaticamente após X pips lucro

13. Número máximo de negócios abertos

14. Número mágico

Cumprimentos

Jeff