Olá, gostaria de inserir a função ReversePosition no código abaixo. a Ideia é simples: caso esteja comprado e apareça o Sinal de Venda, o código inverte a mão. O mesmo para a Compra. Obrigado
const
cStopEmTicks = 25;
cStopOffsetEmTicks = 5;
cAlvoEmTIcks = 50;
input
bGestaoDeRiscoPelaEstrategia(true);
iHorarioInicioAberturaPosicao(0900);
iHorarioFimAberturaPosicao(1640);
iHorarioEncerramentoDaytrade(1700);
iPeriodo(5);
var
vSinalCompra,vSinalVenda,vPosicionado,bReversaoCompra,bReversaoVenda : boolean;
fPrecoStop,fPrecoAlvo,fPrecoStopOffset : float;
bConfigurouRiscoInicial : boolean;
begin
vSinalCompra := false;
vSinalVenda := false;
vPosicionado := hasPosition;
if Not vPosicionado and (Time >= iHorarioInicioAberturaPosicao) and (Time <= iHorarioFimAberturaPosicao) then
begin
vSinalCompra := Fechamento > HiloActivator(iPeriodo);
vSinalVenda := Fechamento < HiloActivator(iPeriodo);
end;
if not IsBought and vSinalCompra and vSinalVenda[1] then
begin
BuyAtMarket;
end;
if not IsSold and vSinalVenda and vSinalCompra[1] then
begin
SellShortAtMarket;
end;
if bGestaoDeRiscoPelaEstrategia then
begin
if isBought then
begin
if Not bConfigurouRiscoInicial then
begin
fPrecoStop := BuyPrice - cStopEmTicks * MinPriceIncrement;
fPrecoAlvo := BuyPrice + cAlvoEmTicks * MinPriceIncrement;
fPrecoStopOffset := fPrecoStop - cStopOffsetEmTicks * MinPriceIncrement;
SellToCoverStop(fPrecoStop,fPrecoStopOffset);
SellToCoverLimit(fPrecoAlvo);
bConfigurouRiscoInicial := true;
end;
end;
if isSold then
begin
if Not bConfigurouRiscoInicial then
begin
fPrecoStop := SellPrice + cStopEmTicks * MinPriceIncrement;
fPrecoAlvo := SellPrice - cAlvoEmTicks * MinPriceIncrement;
fPrecoStopOffset := fPrecoStop + cStopOffsetEmTicks * MinPriceIncrement;
BuyToCoverStop(fPrecoStop,fPrecoStopOffset);
BuyToCoverLimit(fPrecoAlvo);
bConfigurouRiscoInicial := true;
end;
end;
if (Time >= iHorarioEncerramentoDaytrade) and HasPosition then
begin
ClosePosition;
end;
if Not hasPosition and bConfigurouRiscoInicial then
bConfigurouRiscoInicial := false;
end;
vPosicionado := hasPosition;
end;
end;