Como codificar? - página 7

 

Como eu entendo, a melhor/mais fácil maneira de fazer isso será olhar para o bar anterior, como você disse. Você pode estar atrasado e não pode. Eis o que quero dizer:

A função Start() processa cada tick. MT4, por meio de design, só processa o tempo depois de um tick. Isso significa que uma nova barra não aparece em seu gráfico até o primeiro tick dessa nova barra. Assim, ao se aproximar do final de uma barra, se seu alerta disparar após cada tick (da maneira irritante), você receberá um alerta no último tick da barra. Se você olhar para a barra anterior para seu alerta (a maneira não irritante), você receberá um alerta no primeiro tique da nova barra.

Assim, durante horas com muita atividade de mercado, o primeiro tique da nova barra pode ocorrer imediatamente após a barra anterior (com base no tempo). Durante as horas de mercado lento, pode levar de 20 a 30 segundos até que um novo tique chegue, e o MT 4 não mostrará a nova barra até que você receba o primeiro tique.

Espero que isso esteja claro.

Keris

 

Precisa de ajuda para codificar "A Técnica de Parada de Volatilidade de Entrada".

A Parada de Volatilidade calcula a volatilidade usando a faixa média da barra de preços. Ela é calculada multiplicando-se a faixa média pela constante. O valor é adicionado ao fechamento mais baixo quando curto, e subtraído da maior alta quando longo:

Faixa = (Faixa x (N - 1) + Alta - Baixa / N)

Curto = Mais baixo Fechar + Alcance x C

Longo = Maior Fechamento - Alcance x C

É melhor usar a Parada de Volatilidade em mercados com forte tendência. É uma excelente técnica de entrada e, na maioria dos casos, será superior às quebras de linha de tendência válidas, ou quebras de canal. A parada reversa também atua para quantificar o risco no que diz respeito à volatilidade. As constantes devem ser mantidas entre 2,5 e 4,0.

Não tenho experiência pessoal com este indicador, mas li sobre isso no livro "Razões de Fibonacci com Reconhecimento de Padrões".

Eu ficaria muito feliz se alguém pudesse codificar este indicador.

Arquivos anexados:
v.s..bmp  962 kb
 

Igorad, muito obrigado, a Parada do Canal Volty era exatamente o que eu estava procurando

 

Por favor, ajude com este código...

Estou tentando aprender sobre o mecanismo do indicador LSMA_in_color, que encontrei em outro lugar neste fórum. O código a seguir define a cor dos segmentos de linha do indicador com base nos valores em wt[]:

//========== COLOR CODING ===========================================

ExtMapBuffer3[shift] = wt[shift]; //yellow

ExtMapBuffer2[shift] = wt[shift]; //blue

ExtMapBuffer1[shift] = wt[shift]; //red

if (wt[shift+1] > wt[shift])

{

ExtMapBuffer2[shift] = EMPTY_VALUE; //turn blue off

Print ("red ",wt[shift+1]," ",wt[shift]);

}

else if (wt[shift+1] < wt[shift])

{

ExtMapBuffer1[shift] = EMPTY_VALUE; //turn red off

Print ("blue ",wt[shift+1]," ",wt[shift]);

}

else

{

ExtMapBuffer1[shift]=EMPTY_VALUE; //turn red off;

ExtMapBuffer2[shift]=EMPTY_VALUE; //turn blue off;

Print ("yellow ",wt[shift+1]," ",wt[shift]);

}

Eu adicionei as funções Print() para poder ver quais são os valores reais nas três condições de cor - vermelho, amarelo e azul. Parece que a condição amarela só ocorre quando wt[shift] == wt[shift+1], mas por alguma razão quando eu corro isto o log mostra que ele nunca entra na condição amarela. Cada entrada de registro escrita ou é vermelha ou azul. No gráfico, há condições claramente amarelas ocorrendo - toda vez que muda de vermelho para azul ou azul para vermelho vai para amarelo no meio... Por que não está imprimindo as condições amarelas para o toro?

Também, ao olhar para o tronco, vejo instâncias em que o wt[shift] é idêntico ao wt[shift+1], mas imprime como uma condição vermelha. Como isto pode ocorrer quando a condição vermelha requer que wt[shift+1] > wt[shift] ?

Qualquer ajuda seria bem-vinda.

 

Yessiree, qualquer ajuda.....

 

eu sou um verdadeiro noob em código, mas parece que o amarelo está sempre ligado e ou o vermelho ou o azul é colocado em cima dele ou jsut o substitui, a menos que, mesmo nesse caso, nada seja desenhado em cima do amarelo. até o ponto em que ele ainda é vermelho quando eles são mesmo dunno

 

código para verificar se a última negociação [fechada] foi uma vitória ou uma derrota.

Existe algum método em mql4 para verificar se a última negociação resultou em lucro ou prejuízo, depois de encerrada?

Estou tentando OrderSelect() e OrderProfit() com o HistoryTotal() usando um array... mas a OrderProfit parece estar se referindo à 'ordem aberta', então não está me dando os resultados que eu quero.

Em média, meu sistema tem 5 vitórias consecutivas, para 1 derrota. O que eu quero fazer é, após uma troca perdedora, aumentar o número de lotes utilizados, pois as chances são as próximas trocas após ser uma vitória.

Portanto, preciso verificar em que resultou a última negociação fechada, antes de modificar o número de lotes.

Qualquer ajuda seria apreciada...

 
fxdk:
Existe algum método em mql4 para verificar se o último comércio resultou em lucro ou prejuízo, depois de fechado?

Estou tentando OrderSelect() e OrderProfit() com o HistoryTotal() usando um array... mas a OrderProfit parece estar se referindo à 'ordem aberta', então não está me dando os resultados que eu quero.

Em média, meu sistema tem 5 vitórias consecutivas, para 1 derrota. O que eu quero fazer é, após uma troca perdedora, aumentar o número de lotes utilizados, pois as chances são as próximas trocas após ser uma vitória.

Portanto, preciso verificar em que resultou a última negociação fechada, antes de modificar o número de lotes.

Qualquer ajuda seria bem-vinda...

fxdk,

para verificar o lucro do último pedido fechado, use este código:

int total = HistóricoTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); // Este é o lucro ou perda da última ordem encerrada

 
codersguru:
fxdk,

para verificar o lucro do último pedido fechado, use este código:

int total = HistóricoTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alerta(OrderProfit()); // Este é o último lucro ou perda de ordem fechada

Acho que isto pode não ser sempre verdade. Tive uma discussão com Slawa sobre, e parece que a HISTÓRIA, assim como a TRADE, nem sempre são ordenadas por data, e depende da ordenação dos dois pontos que você está usando na guia do terminal. Portanto, é mais seguro escanear toda (!) história e comparar datas de fechamento; então lembre-se da última para que da próxima vez você não precise escanear toda a matriz.