Função ICustom - página 15

 

existe algum exemplo de utilização da sucção do icustom para obter dois períodos de tempo no mesmo buffer?

já que 2 tf tampão tem o mesmo nome, como posso determinar o período de tempo diferente?

período detempo atual

dupla tendência = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

maior prazo

dupla tendência = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

 
Tente assim :
double trend1minute = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0); double trend5minute = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

E então use as 2 variáveis conforme necessário (por exemplo : se (trend1minute == ... && trend5minute ==... ) fizer alguma coisa)

mtuppers:
existe algum exemplo de utilização da sucção do icustom para obter dois períodos de tempo no mesmo buffer?

já que 2 tf buffer tem o mesmo nome, como posso determinar o período de tempo diferente?

período de tempo atual

dupla tendência = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

maior prazo

dupla tendência = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);
 

Usando o iCustom em uma EA, instância única

Olá a todos,

Estou trabalhando para escrever um EA para usar um indicador personalizado, quando faço um backtest, noto que parece carregar um novo instante do indicador toda vez que há chamadas para a função iCustom. Alguém sabe uma maneira de carregar o indicador personalizado uma vez e a referência de volta a ele em cada sucessão?

void OnBar()

{

RSIPL = iCustom(NULL,0,"NCH_DI",0,4,BarIndex);

TSL = iCustom(NULL,0,"NCH_DI",0,5,BarIndex);

HAOpen = iCustom(NULL,0,"HeikenAshi",0,2,BarIndex);

HAClose = iCustom(NULL,0,"HeikenAshi",0,3,BarIndex);

PACHigh = iMA(NULL,0,5,0,MODE_SMMA,PRICE_HIGH,BarIndex);

PACLow = iMA(NULL,0,5,0,MODE_SMMA,PRICE_LOW,BarIndex);

// DO MY OTHER STUFF HERE

}

O código acima carrega uma nova instância do NCH_DI com cada chamada........

Obrigado

 

Não é possível fazer

É assim que funciona o MT4. A melhor solução é minimizar o número de chamadas iCustom() em seu código. HA normalmente só precisa ser chamado quando uma nova barra é formada. Chamá-la cada vez que se faz uma chamada não é o ideal.

 
CodeMeister:
É assim que funciona o MT4. A melhor solução é minimizar o número de chamadas iCustom() em seu código. HA normalmente só precisa ser chamado quando uma nova barra é formada. Chamá-la cada vez que se faz uma chamada não é o ideal.

Eu tenho todas as minhas chamadas para uma nova formação de bares. O NCH_DI é infelizmente uma peça de código de memória relativamente intensiva. Você teria alguma sugestão de como eu poderia descartar instâncias antigas?

 

Experimente este

OTeste de Estratégia não é o objetivo final desta EA. Executá-lo ao vivo em um gráfico é. Acredito que o carregamento do iCustom() acontece uma vez em um gráfico, desde que você tenha memória suficiente, de modo que eu não gastaria muito tempo trabalhando em algo que se adaptasse às peculiaridades do Strategy Tester. A única outra alternativa ao iCustom() é codificar o indicador diretamente no EA.

 

Pensei em recodificá-la para a EA.... Decidi que isso não seria prático neste caso. Descobri que se eu comentar a janela do indicador de propriedade_separate_separate_window no indicador ele será carregado e descarregado uma vez que a chamada estiver completa, vou terminar a codificação principal e fazer uma demonstração por cerca de uma semana e monitorar meu uso de memória. Obrigado pessoal, eu avisarei a vocês como vai ser.

 

Problemas no Indicador iCustom

Olá,

minha EA está usando um indicador próprio com o iCustom.

Ao abrir uma nova vela, o indicador é chamado pelo iCustom.

Agora percebi que o valor do iCustom[1] não é igual ao iCustom[0] da barra anterior.

O valor é semelhante, mas não exatamente o mesmo que ele estremece e o que eu verifiquei para o RSI f.e.

Alguma idéia de onde o problema poderia se basear?

Obrigado por cada dica sobre isso.

Camilo

 

Depende do preço que é usado pelo indicador Personalizado. Se seu indicador personalizado estiver usando o preço próximo, alto, baixo ou qualquer outro preço que esteja mudando durante o desenvolvimento atual da vela, então o valor do índice [0] será alterado.

Por exemplo, se você chamar o indicador que está usando o preço personalizado e comparar o valor [0] e depois que a barra estiver fechada, você o comparará com o resultado em [1], é quase certo como o ovo é ovo que o valor será diferente. Mas, se você definir o indicador personalizado para usar o preço ABERTO em vez de fechado, então o valor será igual (é simplesmente porque o preço aberto não muda durante o desenvolvimento da vela).

 

Thx resposta rápida, Kalenzo.

Verifiquei os valores para [2] e percebi que para [1] -> [2] tudo parece bem

Aqui tenho um anexo com os valores do meu indicador

....[0]..........[1].........[2]

t431,871142,670052,1915

t344,688152,191560,3014

t253,057260,301467,6553

t159,886067,655374,5797

Portanto, parece que o problema é a identificação da abertura do bar.

Estou usando apenas como cheque antes:

se(Volume[0]>1) retornar;

Não está bem assim?

Razão: