Função ICustom - página 8

 
 

dê uma olhada na função iCustom na ajuda MQL, ela faz exatamente o que você precisa

 

É isso aí!

Obrigado!

 

iCustom

Olá,

s vezes a operação de um indicador meu precisa ser leve;y diferente se o indicador foi executado como resultado de uma chamada ao iCustom, ao contrário de como o indicador normalmente funcionaria se estivesse anexado a um gráfico.

Existe alguma função ou método simples dentro do MQL que se possa usar dentro de um indicador para determinar se o indicador foi executado explicitamente porque foi anexado a um gráfico ou se o indicador foi executado como resultado de uma chamada ao iCustom?

Como um fudge, tenho incluído um parâmetro booleano em meus indicadores chamado "Personalizado" com um valor padrão de falso. Se eu fizer uma chamada ao iCustom para executar o indicador, então eu defino este parâmetro como verdadeiro no lugar. Dessa forma, posso dizer dentro do meu indicador se o indicador está rodando como resultado de uma chamada para o iCustom.

Certamente deve haver alguma função como dizer IsCustom() que retorna verdadeiro do indicador foi executado via iCustom ou falso de outra forma.

Alguém tem uma maneira elegante e simples de determinar se um indicador foi executado como resultado de uma chamada através do iCustom?

Cumprimentos,

Laurence.

 

obrigado a todos vocês por toda sua ajuda!

aj

 

pergunta do icustom

Tenho tentado fazer um indicador que só chama outro indicador pelo icustom. Eu fiz esta linha de código;

duplo COG=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

Eu tentei colocar a linha em lugares diferentes do código e brinquei com o nome do duplo, eu tenho lido e lido muitos tutoriais. Acho que mabey devo colocar alguma coisa no início como o número de buffers!? mabey não deve ser um duplo?

como está, estou recebendo erros quando compenso;

init - vírgula ou ponto-e-vírgula esperado

init' - expressão em âmbito global não permitida

alguém pode me ajudar a entender isto com algum indicador personalizado? porque sinto que os tutoriais que li (e acredito que os tenho todos) me deram a linha de código para o icustom, mas não funciona simplesmente por ter a linha sozinha, sei que deve ser mudada para cada indicador, mas há algumas coisas que faltam na explicação.

 

Tive uma grande tentativa de fazer isso. Estou muito orgulhoso de mim mesmo! Recebi algum código do Codersguru, troquei-o por um indicador. rs parece bom não tem erros na compilação (primeira vez em 12) mas ... faz com que o metatrader "não responda" quando você o adiciona a um gráfico.

Eu mudei todos os nomes dos buffers dos indicadores (de val1, val2, val3, val4. para valor1, valor2... etc.) porque achei que eles estavam se entrelaçando porque eu tinha uma visão melhor do código que o Codersguru tinha feito (ele fez um código para chamar supertrend com icustom) ele mudou os nomes dos buffers então eu acho que deve ser isso, mas ainda não respondeu.

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

//| COG call.mq4 |

//| |

//| |

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

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 4

#indicador de propriedade_color1 Lime

#indicador de propriedade_color2 Vermelho

#indicador de propriedade_color3 CLR_NONE

#indicador de propriedade_color4 CLR_NONE

//---- buffers

valor duplo1[];

valor duplo2[];

valor duplo3[];

valor duplo4[];

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Lime);

SetIndexBuffer(0,valor1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Red);

SetIndexBuffer(1,valor2);

SetIndexStyle(2,DRAW_NONE);

SetIndexBuffer(2,valor3); SetIndexBuffer(2,valor3);

SetEstiloIndex(3,DRAW_NONE);

SetIndexBuffer(3,valor4);

//----

retorno(0);

}

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

//| Função de desinicialização de indicador personalizada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

int counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

se (counted_bars<0) retornar(-1);

//---- última barra contada será contada novamente

se (barras_contadas>0) barras_contadas--;

int pos=barras_contadas_combars;

while(pos>=0)

{

valor1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

valor2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

valor3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

}

retorno(0);

}

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

 

este é o fio onde eu consegui o código feito pela Codersguru;

https://www.mql5.com/en/forum/173108

notei que deixei uma parte fora do meu código pos e pos..;

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

pos--;

vamos tentar!

 

LOL LOL LOL LOLLLLLLL hahaha! oh meu deus

ok fiz progressos tenho metade do meu indicador na tela (só a parte vermelha do indicador, rs onde está a parte verde?) esta é a primeira coisa que eu cheguei à metade do trabalho embora eu não possa acreditar hahaha! alguém sabe o que eu fiz de errado?

 

hmm i adicionei números no final 0,1,2,3 para a experiência. não sei por quê? mas fez algo, agora eu tenho uma linha vermelha plana e verde!!!!

yay! mas não está certo, mabey pior isto é estranho! me ajude a agradar alguém... todo mundo está dormindo zzz zzz zzz, menos eu!