Função ICustom - página 4

 
TheRumpledOne:
Se é "lixo", então por que afixá-lo?

Eu tive um pensamento semelhante....

 

Uma pergunta sobre o iCustom.

Você pode explicar e dar alguns exemplos a respeito das variáveis de Linha e de Turno com comandos iCustom?

Obrigado.

 
matrixebiz:
Uma pergunta sobre o iCustom.

Você pode explicar e dar alguns exemplos a respeito das variáveis de Linha e de Turno com comandos iCustom?

Obrigado.

iCustom - Documentação MQL4

modo - Índice de linha. Pode ser de 0 a 7 e deve corresponder ao índice usado por uma das funções SetIndexBuffer. shift - Índice do valor retirado do buffer do indicador (shift em relação à barra atual a quantidade de períodos atrás).

Use MODE para dizer ao seu indicador qual buffer você deseja. Os indicadores de resistência de suporte podem usar o buffer 0 ( MODE=0 ) para resistência e o buffer 1 ( MODE=1 ) para suporte.

SHIFT diz para usar o valor da barra (SHIFT) do indicador chamado pelo iCustom.

Isso ajuda?

 
TheRumpledOne:
iCustom - Documentação MQL4

modo - Índice de linha. Pode ser de 0 a 7 e deve corresponder ao índice usado por uma das funções SetIndexBuffer. shift - Índice do valor retirado do buffer do indicador (shift em relação à barra atual a quantidade de períodos atrás).

Use MODE para dizer ao seu indicador qual buffer você deseja. Os indicadores de resistência de suporte podem usar o buffer 0 ( MODE=0 ) para resistência e o buffer 1 ( MODE=1 ) para suporte.

SHIFT diz para usar o valor da barra (SHIFT) do indicador chamado pelo iCustom.

Será que isso ajuda?

Ok, eu recebo Shift, terei que fazer mais leituras sobre a Mode.

Você codifica? Tenho este indicador que chamo de meu EA mas não tenho certeza de como configurá-lo corretamente. Veja a foto.

tem apenas duas linhas e quando o Azul muda e se alinha com a outra linha, é gerado um sinal longo (mesma idéia com o Vermelho)

Experimentei alguns códigos diferentes como o que usei com o indicador VQ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);

entrada dupla2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);

Simplesmente não é um direito comercial.

Obrigado

Arquivos anexados:
ci.jpg  66 kb
 
matrixebiz:
Ok, eu recebo Shift, terei que fazer mais leitura sobre a Mode.

Você codifica? Tenho este indicador que chamo da minha EA mas não tenho certeza de como configurá-lo corretamente. Veja a foto.

tem apenas duas linhas e quando o Azul muda e se alinha com a outra linha, é gerado um sinal longo (mesma idéia com o Vermelho)

Experimentei alguns códigos diferentes como o que usei com o indicador VQ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);

entrada dupla2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);

Simplesmente não é um direito comercial.

Obrigado

Se você estiver se referindo ao indicador inferior, que parece ser chamado de "#MTF CI", então eu acho que possivelmente esse indicador tem 4 buffers: um para cada uma das duas cores de cada linha. Você pode trazer a Janela de Dados (ctrl-D) para ver quais buffers os indicadores têm, assim como seus índices (o argumento MODE para a chamada iCustom).

 
matrixebiz:
Ok, eu recebo Shift, terei que fazer mais leitura sobre a Mode.

Você codifica?

Obrigado

Eu sou conhecido por codificar um indicador ou 2 ( HUNDREDS ) no meu tempo....LOL!

 
ralph.ronnquist:
Se você estiver se referindo ao indicador inferior, que parece ser chamado de "#MTF CI", então eu acho que possivelmente esse indicador tem 4 buffers: um para cada uma das duas cores de cada linha. Você pode levantar a Janela de Dados (ctrl-D) para ver quais buffers os indicadores têm, assim como seus índices (o argumento MODE para a chamada iCustom).

Sim, você tem direito, como faço para personalizar e criar o iCustom estes e criar o comércio?

Para os outros dois (amortecedores QQEA 4 e amortecedores VQ 2) que estão funcionando, eu uso isto;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//o tipo

qqe0_0>qqe1_0 && qqe0_1Entrada2 && ....

Obrigado Ralph

Arquivos anexados:
data.jpg  24 kb
 
matrixebiz:
Sim, seu direito, como fazer o iCustom estes e criar o comércio?

Para os outros dois (amortecedores QQEA 4 e amortecedores VQ 2) que estão funcionando, eu uso isto;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//o tipo

qqe0_0>qqe1_0 && qqe0_1Entrada2 && ....

Obrigado Ralph

Geralmente, quando você vê uma linha indicadora com múltiplas cores, isso é geralmente implementado por múltiplos buffers; um para cada cor. Você pode então trabalhar os índices de buffer a partir da janela de dados, onde o buffer superior tem índice 0, e aumentando para baixo. O buffer é plotado quando tem um valor (ou se seu estilo de desenho LINE, precisa de dois ou mais valores consecutivos para ser plotado).

Se você tiver o código fonte indicador, às vezes é mais fácil de espreitar, e aprender os índices de buffer a partir das chamadas de função SetIndexBuffer.

Como ponto ao lado: um indicador também pode traçar "objetos" no visor, e estes não são acessíveis através da chamada iCustom. Em vez disso, você precisará saber o "nome do objeto", e pode ler suas propriedades.

Assim, você sempre precisa ser claro sobre qual indicador buffer ler, e usar esse índice como o segundo último argumento para o iCustom.

Por exemplo, o uso do indicador VQ não parece muito correto, porque (passando pela fonte que vi), seus amortecedores [1] e [2] são usados para as linhas verde e vermelha respectivamente, e nunca há um caso em que ambos sejam não vazios. Ou seja, "Up2==Down2" é sempre falso, exceto quando ambas estão "vazias", e é quando a linha VQ não é nem verde nem vermelha, mas amarela.

Fora isso, eu acho que você está fazendo as coisas da maneira correta. Pode-se discutir a escolha de nomes variáveis, é claro, mas isso é acadêmico. O caminho a seguir é escolher os valores de interesse usando a chamada iCustom, e depois expressar as relações de valor particulares exigidas nas condições comerciais.

 
ralph.ronnquist:
Geralmente, quando você vê uma linha indicadora com múltiplas cores, então isso é geralmente implementado por múltiplos buffers; um para cada cor. Você pode então trabalhar os índices de buffer a partir da janela de dados, onde o buffer superior tem índice 0, e aumentando para baixo. O buffer é plotado quando tem um valor (ou se seu estilo de desenho LINE, precisa de dois ou mais valores consecutivos para ser plotado).

Se você tiver o código fonte indicador, às vezes é mais fácil de espreitar, e aprender os índices de buffer a partir das chamadas de função SetIndexBuffer.

Como ponto ao lado: um indicador também pode traçar "objetos" no visor, e estes não são acessíveis através da chamada iCustom. Em vez disso, você precisará saber o "nome do objeto", e pode ler suas propriedades.

Assim, você sempre precisa ser claro sobre qual indicador buffer ler, e usar esse índice como o segundo último argumento para o iCustom.

Por exemplo, o uso do indicador VQ não parece muito correto, porque (passando pela fonte que vi), seus amortecedores [1] e [2] são usados para as linhas verde e vermelha respectivamente, e nunca há um caso em que ambos sejam não vazios. Ou seja, "Up2==Down2" é sempre falso, exceto quando ambas estão "vazias", e é quando a linha VQ não é nem verde nem vermelha, mas amarela.

Fora isso, acho que você está fazendo as coisas da maneira correta. Pode-se discutir a escolha de nomes variáveis, é claro, mas isso é acadêmico. O caminho a seguir é escolher os valores de interesse usando a chamada iCustom e depois expressar as relações de valor particulares exigidas nas condições comerciais.

Infelizmente, não tenho a fonte para os três indicadores que mencionei acima. Como você escreveria o código para estes se eu quisesse que eles verificassem a condição de Compra ou Venda SOMENTE no momento preciso em que mudam de cor ao mesmo tempo para cada indicador de curso?

Obrigado

 

A falta de fonte não é um problema. Vamos nos concentrar na janela indicadora 2 em sua imagem, que mostra um indicador com 4 buffers. Se você mover o mouse para a esquerda e para a direita sobre o indicador, você pode descobrir qual buffer é usado para qual cor.

Deixe-me assumir que o primeiro buffer ([0]) é para a indicação azul da linha superior, o segundo buffer ([1]) é para a indicação vermelha da linha superior, e da mesma forma [2] e [3] são azuis e vermelhos da linha inferior. Você poderia então ler o indicador da seguinte maneira:

double top_is_blue = iCustom( ..., 0, 1 );

double top_was_blue = iCustom( ..., 0, 2 );

double top_is_red = iCustom( ..., 1, 1 );

double top_was_red = iCustom( ..., 1, 2 );

double bot_is_blue = iCustom( ..., 2, 1 );

double bot_was_blue = iCustom( ..., 2, 2 );

double bot_is_red = iCustom( ..., 3, 1 );

double bot_was_red = iCustom( ..., 3, 2 );

[/PHP]

Then you can summarise them as follows:

[PHP]bool top_goes_blue = ( top_is_blue == top_was_red );

bool top_goes_red = ( top_is_red == top_was_blue );

bool bot_goes_blue = ( top_is_blue == top_was_red );

bool bot_goes_red = ( top_is_red == top_was_blue );

bool both_go_blue = ( top_goes_blue && bot_goes_blue );

bool both_go_red = ( top_goes_red && bot_goes_red );

Como você faz isso depende do que você está procurando. Especialmente,

se você quiser combinar leituras não atuais das duas linhas, pode se tornar mais envolvido na codificação. Por exemplo, a variável booleana "both_go_blue" refere-se a leituras simultâneas das duas linhas, e não captura que "uma linha fica azul, e a outra fica azul um pouco mais tarde".