停損停利單
富邦Neo API支援條件下單後的停損停利單,
停損停利運作機制 : 當觸發的條件單,觸發後,並委託成交,就會啟動停損停利的監控機制,而當停利條件達成時,停損就會失效;反之亦然 (同一般市面上常見OCO)

程式範例
- Python
 - Node.js
 - C#
 
# 設計條件內容
condition = Condition(
    market_type = TradingType.Reference,        
    symbol = "2881",
    trigger = TriggerContent.MatchedPrice,
    trigger_value = "66",
    comparison = Operator.LessThan
)
order = ConditionOrder(
    buy_sell = BSAction.Buy,
    symbol = "2881",
    price =  "66",
    quantity =  1000,
    market_type = ConditionMarketType.Common,
    price_type = ConditionPriceType.Limit,
    time_in_force = TimeInForce.ROD,
    order_type = ConditionOrderType.Stock
)
# 停損停利若為Market , price 則填空值""
tp = TPSLOrder(
    time_in_force=TimeInForce.ROD,
    price_type=ConditionPriceType.Limit,
    order_type=ConditionOrderType.Stock,
    target_price="85",
    price="85",
    # trigger=TriggerContent.MatchedPrice  # v2.2.0 新增
)
sl = TPSLOrder(
    time_in_force=TimeInForce.ROD,
    price_type=ConditionPriceType.Limit,
    order_type=ConditionOrderType.Stock,
    target_price="60",
    price="60",
    # trigger=TriggerContent.MatchedPrice  # v2.2.0 新增
)
tpsl = TPSLWrapper(
    stop_sign= StopSign.Full,
    tp=tp,               # optional field 
    sl=sl,               # optional field
    end_date="20240517",
    intraday =False       # optional field
)
sdk.stock.single_condition(account, "20240426", "20240430", StopSign.Full, condition, order, tpsl)
// 設計條件內容
const condition = {
    marketType: TradingType.Reference,
    symbol: "2881",
    trigger: TriggerContent.MatchedPrice,
    triggerValue: "80",
    comparison: Operator.LessThan
}
const order = {
  buySell: BSAction.Buy,
  symbol: "2881",
  price: "66",
  quantity: 2000,
  marketType: ConditionMarketType.Common,
  priceType: ConditionPriceType.Limit,
  timeInForce: TimeInForce.ROD,
  orderType: ConditionOrderType.Stock
};
// 停損停利若為Market , price 則填空值""
const tp = {
    timeInForce: TimeInForce.ROD,
    priceType: ConditionPriceType.Limit,
    orderType: ConditionOrderType.Stock,
    targetPrice: "85",
    price: "85",
    // trigger: TriggerContent.MatchPrice  // v2.2.0 新增
}
const sl  = {
    timeInForce: TimeInForce.ROD,
    priceType: ConditionPriceType.Limit,
    orderType: ConditionOrderType.Stock,
    targetPrice: "60",
    price: "60",
    // trigger: TriggerContent.MatchPrice  // v2.2.0 新增
}
const tpsl = {
    stopSign: StopSign.Full,
    tp: tp,              // optional field 
    sl: sl,              // optional field
    endDate: "20240517",
    intraday: false      // optional field
}
sdk.stock.singleCondition(account, "20240426", "20240430", StopSign.Full, condition, order, tpsl)
// 設計條件內容
var condition = new Condition(
    TradingType.Reference,
    "2881",
    TriggerContent.MatchedPrice,
    "66",
    Operator.LessThan
);
var order = new ConditionOrder(
    BsAction.Buy,
    "2881",
    "66",
    2000,
    ConditionMarketType.Common,
    ConditionPriceType.Limit,
    TimeInForce.Rod,
    ConditionOrderType.Stock
);
// 停損停利若為Market , price 則填空值""
var tp = new TpslOrder(
    TimeInForce.Rod,
    ConditionPriceType.Limit,
    ConditionOrderType.Stock,
    "85",
    "85",
    null  // 2.2.0 以後版本使用,詳請見 [參數對照表] -> [TpslOrder Object]
);
var sl = new TpslOrder(
    TimeInForce.Rod,
    ConditionPriceType.Limit,
    ConditionOrderType.Stock,
    "60",
    "60",
    null  // 2.2.0 以後版本使用,詳請見 [參數對照表] -> [TpslOrder Object]
);
var tpsl = new TpslWrapper(
    StopSign.Full,
    tp,
    sl,
    "20240517",
    false
);
sdk.Stock.SingleCondition(account, "20240426", "20240430", StopSign.Full, condition, order, tpsl)