Pergunte! - página 98

 

Ajuda novamente

Olá a todos,

Estou trabalhando em um EA há o que parece ser uma eternidade. Obrigado a todas as pessoas desta linha por toda a ajuda que me deram.

Agora estou novamente perplexo e procurando por mais ajuda. Como todos sabemos, a maioria dos sinais cruzados de MA's a Stoch's não funcionam muito bem, porque muitas vezes eles se cruzam no final da mudança.

O que estou tentando fazer é usar o Stochastic RSI quando ele cruza a linha 50, mas somente na barra seguinte uma vez que o preço tenha passado ou o alto ou o baixo por uma certa quantidade de pips (MinPips). Meu principal problema é que quando eu rastreio a cruz, se o preço só alcança os MinPips nas barras subseqüentes após a cruz, mas a cruz permanece na mesma direção.

Estou tentando anexar uma imagem para mostrar o que estou tentando fazer.

O ponto nº 1 está em uma cruz de venda, mas como o preço nunca passa do mínimo daquela barra, nenhuma troca é feita (na verdade, eu gostaria que qualquer troca anterior permanecesse ativa).

O ponto nº 2 está em uma cruz de compra, mas o preço só passa o máximo da barra na 4ª barra após a cruz e deve ser tomado naquele momento. Qualquer ordem de venda anterior deve ser fechada neste momento.

Espero que isto funcione, pois é a primeira vez que eu anexarei uma foto. Peço desculpas antecipadamente se fiz asneira.

Putz

Arquivos anexados:
 

Mais informações

O seguinte é minha programação onde CurrDir é a direção atual e que PrevDir é a direção anterior, então se não for igual, então houve uma cruz.

O problema é que se ela não cruzar na barra atual, então CurrDir e PrevDir tornam-se iguais e nunca passa por aquela barra para ver se ela atinge o ValHigh ou ValLow.

Qualquer ajuda será apreciada.

Putz

if(CurrDir != PrevDir)

{

if(CurrDir == 1)

{

ValHigh = iHigh(Symbol(),Timeframe2,1) + MinPips*Point;

if(Bid >= ValHigh)

{

return(1); //up

}

return (2);

}

if(CurrDir == 2)

{

ValLow = iLow(Symbol(),Timeframe2,1) - MinPips*Point;

if(Ask <= ValLow)

{

return(2);//down

}

return (1);

}

 

Descoberto...eu acho que

Acho que finalmente descobri meu problema. Já são quase 2h30 da manhã e estou exausto, por isso vou verificar amanhã...

Putz

 

Existe uma maneira de alterar o formato de dados do arquivo de exportação MT4?

Estou procurando o ASCII.csv, mas preciso que os dados estejam no seguinte formato;

1) colunas separadas (só precisam: tempo, alto, baixo e fechado)

2) somente para as últimas 1000 barras

3) inverte o pedido (último em cima)

4) salva-o em uma pasta que já tenho em minha área de trabalho (talvez uma função de navegação para selecionar qual?)

Agradecemos antecipadamente a qualquer pessoa que possa me ajudar.

 

Acréscimo e eliminação de indicadores

Um código pode ser escrito em um EA para adicionar ou excluir um indicador da plataforma comercial???

Dave ...

 

Eu tenho um grande problema na gestão de pedidos....

Minha simples entrada EA em X:59......mas eu tenho várias entradas na mesma cruz. Minha pergunta: É possível verificar a entrada de tempo dos pedidos e comparar com os novos pedidos?

Quero uma entrada em x:59 apenas com 1 pedido para cross....

Alguém pode me ajudar?

 
metastock:
Eu tenho um grande problema na gestão de pedidos....

Minha simples entrada EA em X:59......mas eu tenho várias entradas na mesma cruz. Minha pergunta: É possível verificar a entrada de tempo dos pedidos e comparar com o novo pedido?

Quero uma entrada em x:59 somente com 1 pedido para cross....

Alguém pode me ajudar?

Esta é a minha solução, espero que isto possa ajudar alguém......

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

//| Início do sinal (Entrada) |

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

if (Buy1_1 58 && check_buy==0) Order = SIGNAL_BUY;

if (Vender1_1 > Vender1_2 && Minuto()>58 && check_sell==0) Ordem = SIGNAL_SELL;

se (Minuto()==00) {check_buy=0;}

if (Minuto()==00) {check_sell=0;}

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

//| Fim do sinal |

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

//Compra

if (Order === SIGNAL_BUY && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Cheque margem livre

if (AccountFreeMargin() < (1000 * Lotes)) {

Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());

devolução(0);

}

se (StopLossMode) StopLossLevel = Perguntar - StopLoss * Ponto; caso contrário, StopLossLevel = 0,0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfitLevel * Ponto; caso contrário TakeProfitLevel = 0,0;

check_buy=1;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy %W(#" + Magic_Number + ")", Magic_Number, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Imprimir("Pedido de compra aberto : ", Preço Aberto());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Imprimir("Erro na abertura do pedido de compra : ", GetLastError());

}

}

se (EachTickMode) TickCheck = Verdadeiro;

se (!EachTickMode) BarCount = Bars;

return(0);

// }

}

//vender

if (Order === SIGNAL_SELL && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Cheque margem livre

if (AccountFreeMargin() < (1000 * Lotes)) {

Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());

devolução(0);

}

se (StopLossMode) StopLossLevel = Bid + StopLoss * Ponto; caso contrário, StopLossLevel = 0,0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfitLevel * Ponto; caso contrário TakeProfitLevel = 0,0;

check_sell=1;

Ticket = OrderSend(Symbol(), OP_SELLL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell %W(#" + Magic_Number + ")", Magic_Number, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Imprimir("ordem de venda aberta : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Imprimir("Erro na abertura do pedido de VENDA : ", GetLastError());

}

}

se (EachTickMode) TickCheck = Verdadeiro;

se (!EachTickMode) BarCount = Bars;

return(0);

//}

}

se (!EachTickMode) BarCount = Bars;

retorno(0);

}

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

 

Para Metastock

Não sei dizer o que faz com que o check_buy seja Verdadeiro.

Para limitar a um pedido aberto, você pode usar, antes da entrada:

se (OrderTotal()==0)

Grande Seja

 

Questões de Conhecimento de Codificação

QUANDO você quer usar uma variável STATIC - que problemas ela pode resolver?

QUANDO você quer colocar algo na seção INIT() - que problemas ela pode resolver?

Big Be

 

não tem certeza se isto foi perguntado antes, mas existe uma maneira de traçar uma linha no momento atual +1 hora antes e depois a um certo preço em um EA?