Algos
Scalper
Loop automatizado de scalping intradiário. O algoritmo entra repetidamente a uma distância fixa do último negócio, encerra cada operação com um pequeno ganho ou perda, pausa e volta a entrar — até atingir um limite de ganho/perda da sessão ou a quantidade total.
Quando usar
- Você busca muitos ganhos pequenos em vez de um único movimento grande.
- Quer lógica de entrada e saída pré-definida rodando automaticamente em períodos curtos.
- Precisa de um teto rígido para quanto a sessão pode perder ou negociar.
Início rápido
from investflex import AsyncInvestflexClient
from investflex.models.algos import Scalper
from investflex.models.common import Side
sc = Scalper(
name="win-scalper",
init_time="09:05:00",
end_time="17:30:00",
# por operação
distance_last=10,
gain_trade=30,
loss_trade=20,
restart_time=15,
# limites da sessão
stop_gain=600,
stop_loss=300,
total_quantity=40,
# perna (clip de cada operação)
symbol="WINQ26",
side=Side.BUY,
quantity=2,
account="SUA_CONTA",
)
async with AsyncInvestflexClient.from_env() as client:
handle = await client.algos.create(sc)
print(handle.clord_id, handle.status.name)
import { InvestflexClient, Scalper, Side } from "@investflex/sdk";
const sc = new Scalper({
name: "win-scalper",
initTime: "09:05:00",
endTime: "17:30:00",
// por operação
distanceLast: 10,
gainTrade: 30,
lossTrade: 20,
restartTime: 15,
// limites da sessão
stopGain: 600,
stopLoss: 300,
totalQuantity: 40,
// perna (clip de cada operação)
symbol: "WINQ26",
side: Side.BUY,
quantity: 2,
account: "SUA_CONTA",
});
const client = InvestflexClient.fromEnv();
const handle = await client.algos.create(sc);
console.log(handle.clOrdId, handle.status);
await client.close();
Parâmetros
customizados são editáveis com o algoritmo em execução.
Estratégia — por operação
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
distance_last |
número | sim | sim | Distância de entrada em relação ao último preço negociado. |
gain_trade |
número | sim | sim | Take-profit de cada operação. |
loss_trade |
número | sim | sim | Stop-loss de cada operação. |
restart_time |
int | sim | sim | Pausa após uma operação antes da próxima entrada (≥ 0). |
Estratégia — limites da sessão
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
stop_gain |
número | não | sim | Ganho acumulado que encerra o algoritmo. |
stop_loss |
número | sim | sim | Perda acumulada que encerra o algoritmo. |
total_quantity |
int | sim | sim | Quantidade máxima negociada na sessão (> 0). |
Perna
Perna única, passada de forma plana.
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
symbol |
str | sim | não | Código do instrumento. |
side |
Side.BUY / Side.SELL |
sim | não | Direção de cada entrada. |
quantity |
int | sim | sim | Clip de cada operação (> 0). |
account |
str | sim | não | Conta na corretora. |
security_exchange |
str | não | não | Default XBSP. |
Editando um Scalper em execução
await client.algos.edit(
handle.clord_id,
GainTrade=35,
LossTrade=15,
StopLoss=250,
)
await client.algos.edit(
handle.clOrdId,
{ GainTrade: 35, LossTrade: 15, StopLoss: 250 },
{ strategyCode: "scalper" },
);
Comandos de ciclo de vida
await client.algos.commands.cancel(handle.clord_id)
await client.algos.commands.suspend(handle.clord_id)
await client.algos.commands.resume(handle.clord_id)
await client.algos.commands.close_position(handle.clord_id)
await client.commands.cancel(handle.clOrdId);
await client.commands.suspend(handle.clOrdId);
await client.commands.resume(handle.clOrdId);
await client.commands.closePosition(handle.clOrdId);
Notas de comportamento
- O schema não publica tooltips dos campos; os significados acima seguem
os nomes dos parâmetros e o modelo de scalping do engine. Confira as
release notes do engine para as unidades exatas de
distance_last,gain_tradeeloss_trade(ticks vs. preço) no seu mercado. stop_gainé opcional: omita para deixar o algoritmo rodar atéstop_loss,total_quantityouend_time.