2
tập trung vào
319
Người theo dõi

Quy trình làm việc trong thực tế: Dễ dàng quản lý lệnh tỷ lệ phần trăm vốn chủ sở hữu và lệnh chốt lời, dừng lỗ tự động

Được tạo ra trong: 2025-11-12 10:58:07, cập nhật trên: 2025-11-15 12:45:08
comments   0
hits   219

Quy trình làm việc trong thực tế: Dễ dàng quản lý lệnh tỷ lệ phần trăm vốn chủ sở hữu và lệnh chốt lời, dừng lỗ tự động

1. Giới thiệu

Xin chào mọi người, gần đây tôi nhận được rất nhiều phản hồi từ bạn bè về cách sử dụng quy trình làm việc và câu hỏi thường gặp nhất là…Tỷ lệ phần trăm quyền lợiStop LossVề vấn đề thiết lập, nhiều người thắc mắc: “Tôi biết mình cần kiểm soát rủi ro, nhưng chính xác thì làm thế nào để tính toán khối lượng lệnh dựa trên số dư tài khoản? Ngoài ra, làm thế nào để tự động đặt lệnh cắt lỗ và chốt lời sau khi mở vị thế để hệ thống có thể quản lý rủi ro cho chúng tôi?”

Hôm nay, chúng tôi sẽ giải quyết những nhu cầu thực tế này và giải thích chi tiết cách triển khai hai chức năng cốt lõi này bằng cách sử dụng mã thực tế từ Nền tảng định lượng của nhà phát minh.


II. Giải thích chi tiết về việc đặt lệnh dựa trên tỷ lệ vốn chủ sở hữu

Quy trình làm việc trong thực tế: Dễ dàng quản lý lệnh tỷ lệ phần trăm vốn chủ sở hữu và lệnh chốt lời, dừng lỗ tự động

2.1 Lệnh đặt phần trăm cổ phần là gì?

Tỷ lệ phần trăm quyền lợiĐiều này có nghĩa là số lượng lệnh không cố định mà được tính toán dựa trên tỷ lệ phần trăm cố định của tổng số tiền trong tài khoản.

Ví dụ

  • Tài khoản có 10.000 USDT
  • Đặt tỷ lệ rủi ro là 5% (riskRatio = 0,05).
  • Hệ thống sẽ sử dụng hạn ngạch 500 USDT để mở vị thế.

Ưu điểm cốt lõi

  1. Những rủi ro có thể kiểm soát đượcRủi ro là một tỷ lệ cố định cho mỗi giao dịch, bất kể số dư tài khoản.
  2. Tỷ lệ sử dụng vốn caoKhi số dư tài khoản thay đổi, số lượng đơn hàng sẽ tự động được điều chỉnh—số lượng đơn hàng tăng khi số dư tăng và giảm tương ứng khi số dư giảm.
  3. Khả năng thích nghi caoTài khoản phù hợp với các quy mô vốn khác nhau

2.2 Logic tính toán hoàn chỉnh và triển khai mã

Bước 1: Lấy thông tin tài khoản

// 1. 获取账户信息
const accountInfo = exchange.GetAccount();
if (!accountInfo) {
    return [{ 
        json: { 
            success: false, 
            error: "获取账户信息失败" 
        } 
    }];
}

const availBalance = accountInfo.Balance; // 可用余额
Log("账户可用余额:", availBalance);

Những điểm chínhBalanceTrường này biểu thị số dư khả dụng, là cơ sở để tính toán.


Bước hai: Thu thập thông tin thị trường

// 2. 获取市场信息
const symbol = $vars.coin + '_USDT.swap' || 'ETH_USDT.swap';
const allMarkets = exchange.GetMarkets();
const marketsInfo = allMarkets[symbol];

if (!marketsInfo) {
    return [{ 
        json: { 
            success: false, 
            error: `未找到交易对信息: ${symbol}` 
        } 
    }];
}

Mô tả tham số cốt lõi

  • CtValGiá trị thực của hợp đồng (ví dụ: giá trị thực của hợp đồng ETH vĩnh viễn là 0,01 ETH)
  • MinQtySố lượng đặt hàng tối thiểu
  • MaxQtySố lượng đặt hàng tối đa
  • AmountPrecisionĐộ chính xác về số lượng
  • PricePrecisionĐộ chính xác của giá

Sự chú ý đặc biệtHãy kiểm tra xem loại tiền tệ bạn muốn giao dịch có tồn tại trên sàn giao dịch hay không.


Bước 3: Lấy giá hiện tại

// 3. 获取当前价格
const ticker = exchange.GetTicker(symbol);
if (!ticker) {
    return [{ 
        json: { 
            success: false, 
            error: "获取价格信息失败" 
        } 
    }];
}

const currentPrice = ticker.Last; // 最新成交价
Log("当前价格:", currentPrice);

Bước 4: Tính số lượng hợp đồng

// 4. 计算合约张数
const riskRatio = $vars.riskRatio || 0.05; // 默认 5% 风险比例

// 步骤 1:计算风险金额
const riskAmount = availBalance * riskRatio;

// 步骤 2:计算币种数量
let coinQuantity = riskAmount / currentPrice;

// 步骤 3:转换为合约张数(因为期货交易用的是合约张数)
let contractQuantity = coinQuantity / marketsInfo.CtVal;

// 步骤 4:精度处理(确保下单数量符合交易所要求)
contractQuantity = _N(contractQuantity, marketsInfo.AmountPrecision);

Log("计算步骤:");
Log("- 风险金额:", riskAmount);
Log("- 币种数量:", coinQuantity);
Log("- 合约面值:", marketsInfo.CtVal);
Log("- 原始合约张数:", coinQuantity / marketsInfo.CtVal);
Log("- 精度处理后:", contractQuantity);

Tóm tắt các công thức tính toán

合约张数 = (账户余额 × 风险比例 ÷ 当前价格) ÷ 合约面值

Bước 5: Kiểm tra các hạn chế

// 5. 检查限制
if (contractQuantity < marketsInfo.MinQty) {
    return [{ 
        json: { 
            success: false, 
            error: `计算数量${contractQuantity}小于最小要求${marketsInfo.MinQty}`,
            calculatedQuantity: contractQuantity,
            minQty: marketsInfo.MinQty
        } 
    }];
}

if (contractQuantity > marketsInfo.MaxQty) {
    Log("数量超过最大限制,使用最大值:", marketsInfo.MaxQty);
    contractQuantity = marketsInfo.MaxQty;
}

Log("最终下单数量:", contractQuantity);

Những sai lầm thường gặp của người mới bắt đầu

  • ❌ Không kiểm tra số lượng đặt hàng tối thiểu dẫn đến đơn hàng không thành công.
  • ❌ Xử lý không chính xác sẽ dẫn đến việc đơn hàng bị sàn giao dịch từ chối.
  • ❌ Giá trị hợp đồng không được xem xét, lỗi tính toán.

Nếu các thiết lập trên không chính xác, thông báo đơn hàng không thành công sẽ xuất hiện. Đây là điều mà người mới bắt đầu cần đặc biệt lưu ý.


III. Giải thích chi tiết về Cài đặt Chốt lời và Cắt lỗ

Quy trình làm việc trong thực tế: Dễ dàng quản lý lệnh tỷ lệ phần trăm vốn chủ sở hữu và lệnh chốt lời, dừng lỗ tự động

3.1 Logic cốt lõi của chốt lời và dừng lỗ

Nhiều người còn mơ hồ về hướng chốt lời và dừng lỗ. Chúng ta hãy cùng làm rõ vấn đề này:

Loại hình nắm giữ Hoạt động thu lợi nhuận Hoạt động dừng lỗ
Nhiều đơn hàng Bán để đóng vị thế khi giá tăng Bán để đóng vị thế khi giá giảm.
Vị thế bán khống Mua để đóng vị thế khi giá giảm Mua để đóng vị thế khi giá tăng

Những điểm chínhCả chốt lời và dừng lỗ đềuHoạt động đóng cửaHướng phải ngược với hướng của vị trí.


3.2 Giải thích chi tiết về các tham số đơn có điều kiện

Trên nền tảng nhà phát minh, hãy sử dụngCreateConditionOrderChức năng thiết lập mức dừng lỗ và chốt lời:

Hiện tại, nền tảng FMZ hỗ trợ lệnh có điều kiện CreateConditionOrder trong giao dịch trực tiếp, nhưng tính năng kiểm tra ngược vẫn chưa hỗ trợ.

  • CreateConditionOrder(symbol, side, amount, condition)
  • GetConditionOrder(id)
  • GetConditionOrders(symbol)
  • CancelConditionOrder(id)
  • GetHistoryConditionOrders(symbol, since, limit)
exchange.CreateConditionOrder(
    symbol,           // 交易对
    closeDirection,   // 平仓方向:closebuy 或 closesell
    positionSize,     // 平仓数量
    {
        "ConditionType": ORDER_CONDITION_TYPE_SL,  // 止损类型
        "SlTriggerPrice": stopLossPrice,           // 触发价格
        "SlOrderPrice": executionPrice             // 执行价格
    },
    "止损单"          // 订单备注
);

Mô tả tham số

  • Loại hoạt động(closeDirection):

    • Được sử dụng để đóng các vị thế muaclosebuy
    • Được sử dụng để đóng các vị thế bán khốngclosesell
  • ConditionType

    • ORDER_CONDITION_TYPE_SLDừng lỗ
    • ORDER_CONDITION_TYPE_TPChốt lời
  • TriggerPriceKích hoạt lệnh khi đạt đến mức giá này.

  • OrderPrice (Giá thực hiện)Giao dịch sẽ được hoàn tất ở mức giá này sau khi kích hoạt.

Để ý:Hiện tại, lệnh có điều kiện chỉ được hỗ trợ trong giao dịch trực tiếp và người giám sát cần phải được cập nhật.


3.3 Tính toán giá dừng lỗ và chốt lời

Trong mã, chúng tôi tính toán động dựa trên hướng mở:

const stopLossPercent = 0.02;   // 2% 止损
const takeProfitPercent = 0.04; // 4% 止盈

if (openSide == 'openShort') {
    // 空仓:止损价格上涨,止盈价格下跌
    stopLossPrice = _N(entryPrice * (1 + stopLossPercent), pricePrecision);
    takeProfitPrice = _N(entryPrice * (1 - takeProfitPercent), pricePrecision);
} else {
    // 多仓:止损价格下跌,止盈价格上涨
    stopLossPrice = _N(entryPrice * (1 - stopLossPercent), pricePrecision);
    takeProfitPrice = _N(entryPrice * (1 + takeProfitPercent), pricePrecision);
}

Log("入场价格:", entryPrice);
Log("止损价格:", stopLossPrice);
Log("止盈价格:", takeProfitPrice);

3.4 Quản lý và giám sát các câu lệnh có điều kiện

Sau khi thiết lập các câu lệnh có điều kiện, chúng ta cũng cần quản lý và theo dõi chúng:

// 查询条件单状态
const slOrder = exchange.GetConditionOrder(stopLossOrderId);
const tpOrder = exchange.GetConditionOrder(takeProfitOrderId);

Log("止损单状态:", slOrder.Status);
Log("止盈单状态:", tpOrder.Status);
Log("状态说明: 0=活跃, 1=已触发, -1=不存在");

Logic xử lý trạng thái

if (slStatus == 1 && tpStatus == 0) {
    // 止损被触发,取消止盈单
    Log("🛑 止损单已触发,取消止盈单");
    exchange.CancelConditionOrder(takeProfitOrderId);
    _G('status', 'finished');
    
} else if (tpStatus == 1 && slStatus == 0) {
    // 止盈被触发,取消止损单
    Log("🎯 止盈单已触发,取消止损单");
    exchange.CancelConditionOrder(stopLossOrderId);
    _G('status', 'finished');
    
} else if (slStatus == 0 && tpStatus == 0) {
    // 两个单都还活跃,继续监控
    Log("⏳ 止盈止损单都活跃,继续监控");
}

Chức năng quan trọng

  • Nền tảng phát minh cung cấpGetConditionOrderChức năng này cho phép bạn xem trạng thái hiện tại của tất cả các lệnh có điều kiện.
  • Nếu lệnh chốt lời hoặc lệnh dừng lỗ được kích hoạt ở một bên, lệnh có điều kiện theo hướng ngược lại phải được hủy ngay lập tức.
  • Nó có thể được sử dụngCancelConditionOrderChức năng này chỉ yêu cầu nhập số đơn hàng.

Lưu ý

  • Nên kiểm tra trạng thái của lệnh có điều kiện thường xuyên để đảm bảo chúng hoạt động chính xác.
  • Đôi khi thị trường biến động quá nhanh và các lệnh có điều kiện có thể không được thực hiện kịp thời, khi đó cần phải xử lý thủ công.

IV. Tích hợp toàn bộ quy trình làm việc

4.1 Quản lý trạng thái giao dịch

Trong quy trình trình diễn, chúng tôi sử dụng máy trạng thái để quản lý toàn bộ chu kỳ giao dịch:

const savestatus = _G('status');

// 初始化状态
if (!savestatus) {
    _G('status', 'unfinished');
}

Ba tiểu bang

  1. unfinishedChưa có vị trí nào được mở; quá trình mở vị trí cần phải được hoàn tất.
  2. monitorCác vị thế đã được mở và lệnh dừng lỗ và chốt lời đã được thiết lập; hiện đang trong giai đoạn theo dõi.
  3. finishedGiao dịch đã hoàn tất, đang chuẩn bị thiết lập lại trạng thái.

4.2 Hoàn tất quy trình giao dịch

Bằng cách tích hợp các lệnh phần trăm vốn chủ sở hữu với các lệnh dừng lỗ và chốt lời, chúng ta có quy trình giao dịch hoàn chỉnh:

biểu đồ dòng chảy

计算下单数量 → 执行开仓 → 设置止盈止损 → 监控持仓 → 交易完成

Triển khai mã

// 状态1: 执行开仓
if (positionData.status == 'unfinished') {
    // 1. 开仓下单
    const openOrder = exchange.CreateOrder(symbol, dir, -1, positionSize);
    
    // 2. 等待订单成交
    Sleep(3000);
    const openOrderInfo = exchange.GetOrder(openOrder);
    
    // 3. 订单成交后设置止盈止损
    if (openOrderInfo.Status == ORDER_STATE_CLOSED) {
        const stopLossOrderId = exchange.CreateConditionOrder(...);
        const takeProfitOrderId = exchange.CreateConditionOrder(...);
        
        // 4. 保存订单ID并切换到监控状态
        _G('stopLossOrderId', stopLossOrderId);
        _G('takeProfitOrderId', takeProfitOrderId);
        _G('status', 'monitor');
    }
}

// 状态2: 监控止盈止损
if (positionData.status == 'monitor') {
    // 检查条件单状态,处理触发情况
    // ...
}

// 状态3: 交易完成
if (positionData.status == 'finished') {
    _G('status', 'unfinished'); // 重置状态,准备下次交易
}

Ưu điểm của toàn bộ quá trình

  • Điều này kiểm soát rủi ro của từng giao dịch (thông qua tỷ lệ vốn chủ sở hữu).
  • Hơn nữa, lệnh dừng lỗ và chốt lời tự động được sử dụng để bảo vệ lợi nhuận và hạn chế thua lỗ.
  • Toàn bộ quy trình được thực hiện theo chương trình, giảm sự can thiệp của con người và cải thiện tính nhất quán của giao dịch.

V. Thực hành tốt nhất để kiểm soát rủi ro

5.1 Khuyến nghị cài đặt tham số

Tỷ lệ rủi ro

  • Gợi ý cho người mới bắt đầu: 2-3%
  • Có kinh nghiệm: 5-10%
  • Đừng tham lam và đặt giá quá cao.Thiết lập theo khả năng chịu rủi ro của riêng bạn

Tỷ lệ chốt lời và dừng lỗ

  • Dừng lỗ: 1-3% (điều chỉnh theo biến động tiền tệ)
  • Chốt lời: 2-6% (thường gấp 1,5-2 lần mức dừng lỗ).
  • Cần phải thiết lập sao cho phù hợp với đặc điểm của từng loại tiền tệ khác nhau.

5.2 Kiểm tra và Xác minh

Danh sách kiểm tra đầy đủ

  • ✅ Số lượng tính toán có chính xác không?
  • ✅ Mức giá dừng lỗ và chốt lời có hợp lý không?
  • ✅ Lệnh có điều kiện có được kích hoạt đúng không?
  • ✅ Việc chuyển đổi trạng thái có đúng không?
  • ✅ Việc xử lý các tình huống bất thường có đầy đủ không?

Quy trình thử nghiệm

  1. Đầu tiên, hãy xác minh mọi logic trong môi trường thử nghiệm.
  2. Tiến hành thử nghiệm giao dịch trực tiếp bằng một số vốn nhỏ.
  3. Chỉ đầu tư tiền chính thức sau khi đảm bảo không có vấn đề gì.

nhớ:Chỉ sau khi thử nghiệm kỹ lưỡng mới nên đưa vào giao dịch trực tiếp; đây là nguyên tắc cơ bản của giao dịch định lượng.


VI. Kết luận

Vậy là buổi thảo luận hôm nay về đặt lệnh tỷ lệ phần trăm vốn chủ sở hữu và thiết lập lệnh dừng lỗ/chốt lời đã kết thúc. Quy trình làm việc này kết hợp kiểm soát rủi ro với thực hiện tự động, giúp giao dịch của chúng ta được chuẩn hóa hơn. Tuy nhiên, phong cách giao dịch và khả năng chịu rủi ro của mỗi người là khác nhau, vì vậy hãy nhớ điều chỉnh các thông số cho phù hợp với hoàn cảnh của bạn. Nếu bạn gặp bất kỳ vấn đề nào trong quá trình sử dụng hoặc có bất kỳ câu hỏi nào khác về giao dịch định lượng, vui lòng liên hệ với chúng tôi để được tư vấn và thảo luận. Hãy cùng nhau khám phá và cải thiện.

Mã nguồn tham khảo: https://www.fmz.com/strategy/516459