/
Swing Trade

Swing Trade

O objetivo desta documentação é mapear as propriedades, validações e eventos da boleta Swing Trade.

Parâmetros da ordem

image-20250120-204556.png
Exemplo de envio de uma ordem Swing Trade na Interface

Relação Virtual Order e campos da boleta:

Boleta

Virtual Order

Tipo

Obrigatório

Descrição

Boleta

Virtual Order

Tipo

Obrigatório

Descrição

Ativo

Symbols

string

Sim

Um único ativo adiciona como primeiro na lista no VO

Quantidade

OrderQty

long

Sim

 

Conta Cliente

ClientAccount
BVSPAccount/BMFAccount

string

Sim

Pode ser nulo. mas tem que ter uma permissão para que seja nulo.

Hora inicial

StartTime

DateTime

Sim

 

Hora final

Endtime

DateTime

Sim

 

Data final

EndDayTime

DateTime

Sim

Default é a data atual com a hora final padrão.

Disparo entrada X ($)

PriceLimit

double

Não

O valor é adicionado no índice 0 da lista.

Disparo ganho X ($)

PriceStartGain

float

Sim

 

Disparo da redução X ($)

PriceStartReduction

float

Não

 

Ag. rompimento

OnPriceBreak

boolean

Não

Default é false

Envio entrada ($)

PriceLimit2

double

Não

O valor é adicionado no índice 1 da lista.

Envio ganho ($)

PriceSendOrderGain

float

Sim

 

Envio da redução ($)

PriceSendOrderReduction

float

Sim

 

Disparo stop X ($)

PriceStopLoss

float

Não

 

Envio stop ($)

PriceSendOrderLoss

float

Não

 

Redução (%)

MaxLeftPercent

float

Sim

Default é 50.00

Aguardar entrada completa

FollowProclaim

boolean

Não

Default é true

Exemplo de um JSON de envio de ordem

{ "Side": "C", "Symbol": "PETR3", "OrderQty": 5000, "PriceLimit": 44, "PriceLimit2": 44.5, "PriceStartGain": 44.5, "PriceStartReduction": null, "PriceSendOrderGain": 44.2, "PriceSendOrderReduction": null, "PriceStopLoss": 42.85, "PriceSendOrderLoss": 42.85, "MaxLeftPercent": 50, "FollowProclaim": true, "StartTime": "2025-02-03T10:00:00", "EndTime": "2025-02-03T18:55:00", "TargetStrategy": "2028", "BVSPAccount": "502", "BMFAccount": "502", "AccountNumber": "502", "StrategyId": "" }

 

Exemplo do json de execução de ordem

{ "EntryLevel": 44, "EntryPrice": 44, "GainLevel": 44.5, "StopLevel": 42.85, "PriceSendOrderLoss": 42.85, "ReductionLevel": 0, "ReductionPrice": 0, "ReductionPercentage": 50, "GainPrice": 44.2, "ExitAfterFullEntry": true, "AvoidAggression": false, "EntrySide": "C", "AccountNumber": "502", "BVSPAccounts": [ "502" ], "BMFAccounts": [ "502" ], "BrokerId": "PNT", "Coefficients": { "Type": "MarketMaker", "LimitPrice": 44, "PriceMarket": 41.293839, "PriceExecuted": 0 }, "CreateDate": "2025-02-04T15:29:23Z", "EndDate": "0001-01-01T00:00:00", "EndTime": "2025-02-03T18:55:00", "ErrorDescription": "Starting Loss Trade price: 41.37. Trade Number: 78660. Trigger price: 42.85. Loss price: 42.85", "IsNewOrder": false, "Label": "", "StrategyLegs": [ { "AvgFillPrice": 0, "CurrOpenQtyOnMkt": 0, "ErrorDescription": "Starting Loss Trade price: 41.37. Trade Number: 78660. Trigger price: 42.85. Loss price: 42.85", "ExchangeCode": "", "FilledQty": 0, "LastTimeExecReport": "2025-02-04T18:22:45.6691668+00:00", "OrderQty": 5000, "PriceLimit": 0, "PriceStopLoss": 0, "Side": "V", "Symbol": "PETR3", "ExecutionProgress": 0, "FinancialLim": 0, "Status": "OK", "MarketDif": 41.2900009155273 }, { "AvgFillPrice": 41.3714, "CurrOpenQtyOnMkt": 0, "ErrorDescription": "Starting Swing Trade price: 41.37. Trade Number: 78660. Trigger price: 44. Sent price: 44", "ExchangeCode": "", "FilledQty": 5000, "LastTimeExecReport": "2025-02-04T18:22:43.6692622+00:00", "OrderQty": 5000, "PriceLimit": 0, "PriceStopLoss": 0, "Side": "C", "Symbol": "PETR3", "ExecutionProgress": 1, "FinancialLim": 0, "Status": "Completed", "MarketDif": 41.2900009155273 } ], "OnBehalfOfTraderId": "502", "OStatus": 2, "OStatus2": 2, "PriceLimits": [ 44, 44, 44.5 ], "PushId": "", "PushStatus": "", "PushValidity": "0001-01-01T00:00:00", "RobotId": "PNT", "StartTime": "2025-02-04T12:25:06", "StrategyId": "39865968-a440-4d93-b761-34279b924378", "StrategyName": "SwingTrade", "StrategyStatus": "OK", "LastCoefficientUpdate": "2025-02-04T18:22:45.6691678+00:00", "SelCoeff": 0, "ExecCoeff": 0, "MarketCoeff": 0, "UsedCoeff": 0, "StrategyUniqueKey": null, "StratType": 2028, "TargetStrategy": "MarketMakerIVS", "TraderID": "502", "UserId": "", "VirtualOrderId": 6020400007, "SendStrategyToClient": true, "ClOrdID": "668b28c0-0962-913c-4ff1-6f312cc0dc97" }

Exemplo de código em Angular para envio de ordem

CriarEstrategia() {     let requestLocalId = Guid.create().toString();     const orderParameters: OrderForm = {       "Side": "C",       "Symbol": "PETR3",       "OrderQty": 5000,       "PriceLimit": 44,       "PriceLimit2": 44.5,       "PriceStartGain": 44.5,       "PriceStartReduction": null,       "PriceSendOrderGain": 44.2,       "PriceSendOrderReduction": null,       "PriceStopLoss": 42.85,       "PriceSendOrderLoss": 42.85,       "MaxLeftPercent": 50,       "FollowProclaim": true,       "StartTime": "2025-02-03T10:00:00",       "EndTime": "2025-02-03T18:55:00",       "TargetStrategy": "2028",       "BVSPAccount": "502",       "BMFAccount": "502",       "AccountNumber": "502",       "StrategyId": ""     }           this.signalRService.connection.send("SendStrategyToRobot", requestLocalId, orderParameters);   }

Eventos de Inicialização

Eventos de inicialização é o momento quando abrimos a boleta. Nessa situação a boleta precisa passar por processos de montagem como alteração de texto, exibição de campos dinâmicos ou aplicação de valores default nos campos.

Glossário:

C → Compra

V → Venda

  • O checkbox “Aguardar entrada completa“ na inicialização fica marcado.

  • O input “Redução (%)“ é preenchido com o default 50,00 (50%).

  • Para Swing Trade de Compra existem campos que seus labels são modificados. Dos campos:

    • Disparo entrada C ($);

    • Disparo ganho V ($);

    • Disparo da redução V ($);

    • Disparo stop V ($).

image-20250123-144623.png
Exemplo de boleta de venda
  • Para Swing Trade de Venda existem campos que seus labels são modificados. Dos campos:

    • Disparo entrada V ($);

    • Disparo ganho C ($);

    • Disparo da redução C ($);

    • Disparo stop C ($).

image-20250123-144715.png
Exemplo de boleta de venda

Validações

  • Campos obrigatórios para serem preenchidos: Symbols, OrderQty, PriceStartGain, PriceSendOrderGain.

  • O campo OnPriceBreak não poderá ser alterado se já tiver alguma ordem executada.

  • O input PriceStartReduction (boleta de Compra) tem que ser inferior ao PriceStartGain. Caso o input PriceLimits[0] esteja preenchido verificar se valor é superior.

  • O input PriceStartReduction (boleta de Venda) tem que ser superior ao PriceStartGain. Caso o input PriceLimits[0] esteja preenchido verificar se valor é inferior.

  • O input PriceSendOrderReduction é obrigatório quando o input PriceStartReduction estiver preenchido.

  • O valor do input PriceSendOrderReduction deve está entre PriceSendOrderGain e PriceLimits[1] , caso PriceLimits[1] estiver preenchido ignorar o limite do mesmo.

  • Campo MaxLeftPercent é obrigatório somente se o campo PriceStartReduction estiver preenchido;

  • Se na boleta for do tipo Compra e os inputs PriceLimits[0] e PriceLimits[1] estiverem preenchidos o valor do PriceLimits[1] deve ser superior ou igual que o PriceLimits[0].

  • Se a boleta for do tipo Venda e os inputs PriceLimits[0] e PriceLimits[1] estiverem preenchidos o valor do PriceLimits[1] deve ser inferior ou igual que o PriceLimits[0].

  • Se boleta for do tipo Compra o input PriceStartReduction deve ser superior ou igual ao PriceSendOrderReduction.

  • Se boleta for do tipo Venda o input PriceStartReduction deve ser inferior ou igual ao PriceSendOrderReduction.

  • Os inputs PriceStopLoss e PriceSendOrderLoss podem ter valor negativos se o ativo permitir.

 

Related content

Plug and Trade Sistemas