Boa noite tudo certo?
Pode me ajudar?
Tenho a estrutura do robô abaixo que só efetua compras, porém quando ele entra a mercado na compra gostaria de já disparasse as ordens de saída para Gain e Loss, a ordem de Loss nem envia e a ordem de saída no Gain só envia após o fechamento do primeiro Candle,
O que esta errado no meu código?
Desde já agradeço.
Segue código abaixo para ser revisado
<inputHorarioEntradas(0920);HorarioLimite(1220);HoraFechamentoPosicao(1225);
stopnbarra(2);stoptempo(1);xlote(2);
varalvo, stop : real;sinalC, sinalV : booleano;ladoSaida : inteiro;
sinalCompra : Booleano;
nbarra : integer;iP : Inteiro;
InicioSe Nao(HasPosition) entaoinicio
ip := CurrentBar;
sinalCompra := (fechamento < abertura) e (fechamento[1] < abertura[1]);
SinalC := (Time >= HorarioEntradas) e (Time < HorarioLimite) e (sinalCompra);
// Abrir Posicao CompraSe sinalC entao inicioalvo := (Maxima - 0.5);stop := (Abs(Minima + Range)) * 2;ladoSaida := osSell;SellToCoverStop(stop, stop, 2);SellToCoverLimit(alvo, 2); BuyAtMarket(2);fim;
// Fechar PosicaoSe (HasPosition) entaoinicioSendOrder(ladoSaida,otStopLimit,xlote,stop,stop);SendOrder(ladoSaida,otLimit,xlote,alvo,0); fim;Se (TIME >= HoraFechamentoPosicao) EntãoClosePosition;
Se (CurrentBar >= iP + stopnbarra) Então ClosePosition;
Fim;
>
input HorarioEntradas(0920); HorarioLimite(1220); HoraFechamentoPosicao(1225); stopnbarra(2); stoptempo(1); xlote(2); var alvo, stop : real; sinalC, sinalV : booleano; ladoSaida : inteiro; sinalCompra : Booleano; nbarra : integer; iP : Inteiro; Inicio Se Nao(HasPosition) entao inicio ip := CurrentBar; sinalCompra := (fechamento < abertura) e (fechamento[1] < abertura[1]); SinalC := (Time >= HorarioEntradas) e (Time < HorarioLimite) e (sinalCompra); // Abrir Posicao Compra Se sinalC entao inicio alvo := (Maxima - 0.5); stop := (Abs(Minima + Range)) * 2; ladoSaida := osSell; SellToCoverStop(stop, stop, 2); SellToCoverLimit(alvo, 2); BuyAtMarket(2); fim; // Fechar Posicao Se (HasPosition) entao inicio SendOrder(ladoSaida,otStopLimit,xlote,stop,stop); SendOrder(ladoSaida,otLimit,xlote,alvo,0); fim; Se (TIME >= HoraFechamentoPosicao) Então ClosePosition; Se (CurrentBar >= iP + stopnbarra) Então ClosePosition; Fim;
Já experimentou colocar essas linhas abaixo:
SellToCoverStop(stop, stop, 2);SellToCoverLimit(alvo, 2);
na parte de //fechar posição no lugas das linhas:
SendOrder(ladoSaida,otStopLimit,xlote,stop,stop);SendOrder(ladoSaida,otLimit,xlote,alvo,0);
Muito obrigado, acabei refazendo todo o código usando como padrão os códigos encontrados aqui.