Pesquisar

Renan Q.

(5.0 - 5 avaliações)

Projetos concluídos: 5 | Recomendações: 5 | Registrado desde: 22/10/2019

Histórico de projetos & Avaliações:

(+) Exibir projetos em andamento
Carregando...

Projetos (Aguardando Propostas):

  • Automação para plataforma Profit Pro da Nelogica (NTSL)

    Outra - Web, Mobile & Software | Orçamento: Aberto | Publicado: | Propostas: 2

    Preciso arrumar esse código que já tenho pronto

    na hora de rodar backtest da erro

    é um código simples, o importante que preciso é a saída

    a saída precisa ter breakeven

    e uma segunda versão desse mesmo código porém com breakeven e parcial

    lembrando que precisa funcionar no backtest do Profit e não apenas como automação

    segue código abaixo para análise prévia:

    ===================================================

    const

    GatilhoBE = 6; // gatilho pra disparar breakeven
    cStop = 10;
    cDistanciaBE = -4; // distância que o stop vai ficar do preço de entrada depois que o breakeven for acionado

    cAlvoParcial = 5; // usar na segunda versão
    cAlvoFinal = 10;

    cLoteParcial = 1; // usar na segunda versão
    cLoteTotal = 2;

    var
    vBuySignal, vsellsignal : boolean;
    vStopPreco : float;
    vPrecoAlvoParcial, vPrecoAlvoFinal, vBreakEvenPreco : Float;
    b,s : integer;
    begin

    // DEFINE AS VARIÁVEIS DE POSIÇÃO
    b := BuyPosition; // verifica quantas posições de COMPRA tem em aberto
    s := SellPosition; // verifica quantas posições de VENDA tem em aberto

    //REGRA DE ENTRADA (regra qualquer só pra dar início à operação)
    vBuySignal := (close>close[1]) and (close[1]>close[2]) and (close[2]>close[3]);
    vSellSignal := (close<close[1]) and (close[1]<close[2]) and (close[2]<close[3]);

    //EXECUÇÃO DA ORDEM COMPRA
    if hasposition = false and vBuySignal then
    begin

    BuyAtMarket(cLoteTotal*Lote);
    PaintBar(clLime);

    vStopPreco := BuyPrice - cStop;
    vPrecoAlvoFinal := BuyPrice + cAlvoFinal;

    SellToCoverStop(vStopPreco,vStopPreco,b*lote);
    end;

    //EXECUÇÃO DA ORDEM VENDA
    if hasposition = false and vSellSignal then
    begin

    SellShortAtMarket(cLoteTotal*Lote);
    PaintBar(clRed);

    vStopPreco := SellPrice + cStop;
    vPrecoAlvoFinal := SellPrice - cAlvoFinal;

    BuyToCoverStop(vStopPreco,vStopPreco,s*lote);

    end;

    //SE ESTIVER COMPRADO - BUSCAR SAÍDA
    if (IsBought) then

    begin
    vBreakEvenPreco := BuyPrice + GatilhoBE;
    If high >= vBreakEvenPreco then
    begin
    If vStopPreco <> (BuyPrice + cDistanciaBE) then PaintBar(clYellow);
    vStopPreco := BuyPrice + cDistanciaBE;
    end;
    SellToCoverLimit(vPrecoAlvoFinal);
    SellToCoverStop(vStopPreco,vStopPreco,b*lote);
    If (low < vStopPreco) then ClosePosition;
    end;

    //SE ESTIVER VENDIDO - BUSCAR SAÍDA
    if (IsSold) then

    begin
    vBreakEvenPreco := SellPrice - GatilhoBE;
    If low <= vBreakEvenPreco then
    begin
    If vStopPreco <> (SellPrice - cDistanciaBE) then PaintBar(clYellow);
    vStopPreco := SellPrice - cDistanciaBE;
    end;
    BuyToCoverLimit(vPrecoAlvoFinal);
    BuyToCoverStop(vStopPreco,vStopPreco,s*lote);
    If (high > vStopPreco) then ClosePosition;
    end;

    end;
    end;
Carregando...

Carregando...

Pesquisar

FREELANCERS
PROJETOS
Ocorreu um erro inesperado. Caso o erro persista, entre em contato conosco através do e-mail suporte@99freelas.com.br.