Telegram: haradkou_sdet
контекст проекта
наша цель
подготовка к нагрузке
сценарий
итоги и выводы
Фото взято с официального сайта b2broker.com/b2trader
(картинка с negotiate)
Negotiate -> Transports + access token -> WSS://
Узнать о просадке системы в оптимальном режиме (5 открытых позиции для пользователя)
Sticky sessions & масштабирование
"Прилипшие сессии" - запросы от одного и того же клиента всегда попадали на один и тот же сервер
Не тестируем (пока что)
Business. CFD
CFD - Contract For Difference («контракт на разницу») - это финансовый дериватив. При его открытии ты не покупаешь актив, а заключаешь договор на изменение его цены.
Указывается направление — покупка или продажа.
Указывается объём (лот) — сколько единиц актива.
Брокер фиксирует цену открытия — например, цена биткоина $60,000.
Создаётся запись у брокера — в их базе данных или системе, что ты открыл позицию.
📉 При закрытии сделки считается разница между ценой открытия и закрытия, и эта разница — твоя прибыль или убыток.
После создания позиции, ее (позицию) нужно "слушать" на изменение цены. Если слишком большая "просадка" цены, то вызывается margin call.
K6
export const options: Options = {
vus: VUS,
iterations: ITERATIONS
duration: DURATION,
tags: {
PROMETHEUS_ID: K6_PROMETHEUS_ID,
},
}
export default function (){
for (let i = 0; i < CFD_ORDERS_COUNT; i++) {
apiV4CfdOrders.order({
marketId: K6_CFD_MARKET_ID,
orderType: 'Market',
})
}
}function processRowInfinite(row){
const socket = new WebSocket(`${serverUrl}/?token=${row.token}`)
socket.send('GetOpenPositions', row.accountId)
socket.onMessage = (msg) => {
const deserialized = JSON.parse(msg)
if(deserialized.length > K6_HELPER_OPEN_POSITION_COUNT) {
const firstPos = deserialized.items[0]
fetch(`${serverUrl}/positions/${firstPos.id}/close`, {
method: 'POST',
})
}
}
}
while(true){
csvParsed.map(row => {
processRowInfinite(row)
})
}Инфраструкрура
Init env -> k6 tests -> metrics -> destroy env
| Start Time | Duration | RT CFD | RPS CFD | ... |
|---|---|---|---|---|
| 2025-05-12 | 600 | 12 | 500 | ... |
| 2025-05-15 | 600 | 10 | 550 | ... |
| 2025-05-22 | 600 | 15 | 520 | ... |
Confluence для автоматических запусков 2 раза в неделю