第八篇order订单专题(5)限价止损单、跟踪止损单、跟踪限价止损单讲解

3.2 订单类型

5. Stoplimit 限价止损单

基本逻辑跟市价止损单一样。区别在于市价止损单被触发后,会发一个市价单进行开仓;而市价止损单则会发出一个限价单开仓。学会限价止损单之前一定要搞清楚限价单和止损单。

当达到触发价格price,订单在下一个bar中,以限价plimit或这个更好的价格进行交易。

限价止损单可以说是止损单与限价单的结合体。**不仅要快速止损还要以更好的价格进行执行。**是在止损的逻辑上以更好的价格执行。

StopLimit好汉price和plimit。price既是触发价又是止损价,plimit则是限价价格

限价止损买单,plimit应该略高于price。限价止损卖单,plimit应略低于price。两者差距太大或者相等,不符合逻辑,可能要出错。

先有止损单的逻辑,在止损单的方向下用限价单进行交易:

买单逻辑:

  • 如果下一个bar开盘价大于等于止损价price,订单以限价订单模式进行交易。
  • 如果下一个bar开盘价小于止损价price,最高价向上突破大于止损价price,订单以限价订单模式进行交易。

通过观察发现,交易的前提条件跟市价止损单Order.Stop相同,不同的是以限价方式进行交易的。

self
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
撮合市价是一个比较复杂的过程,需要考虑市场深度、成交量、当前价格等因素。以下是一个简的 R 代码示例,用于模拟市价的撮合过程: ```R # 假设当前的市场深度数据为 order_book,包含了买和卖的价格和数量信息 # 定义一个函数,用于撮合市价买 match_market_buy <- function(price, amount) { # 先找到第一个卖的价格,如果市场上没有卖,返回NA sell_price <- min(order_book$ask_price, na.rm = TRUE) # 如果市场上没有卖,返回NA if (is.na(sell_price)) { return(NA) } # 计算可以成交的数量,即市场上所有卖的数量之和 available_amount <- sum(order_book$ask_amount[order_book$ask_price == sell_price]) # 如果市场上可成交的数量小于买数量,返回NA if (available_amount < amount) { return(NA) } # 计算成交价格 trade_price <- sell_price # 依次撮合所有的卖,直到买数量为0或者市场上的卖数量为0 for (i in 1:nrow(order_book)) { if (order_book$ask_price[i] == trade_price) { if (order_book$ask_amount[i] >= amount) { # 卖数量大于等于买数量,全部成交 order_book$ask_amount[i] <- order_book$ask_amount[i] - amount amount <- 0 break } else { # 卖数量小于买数量,部分成交 order_book$ask_amount[i] <- 0 amount <- amount - order_book$ask_amount[i] } } } # 如果买数量没有完全成交,返回NA if (amount > 0) { return(NA) } # 返回成交价格 return(trade_price) } # 定义一个函数,用于撮合市价卖 match_market_sell <- function(price, amount) { # 先找到第一个买的价格,如果市场上没有买,返回NA buy_price <- max(order_book$bid_price, na.rm = TRUE) # 如果市场上没有买,返回NA if (is.na(buy_price)) { return(NA) } # 计算可以成交的数量,即市场上所有买的数量之和 available_amount <- sum(order_book$bid_amount[order_book$bid_price == buy_price]) # 如果市场上可成交的数量小于卖数量,返回NA if (available_amount < amount) { return(NA) } # 计算成交价格 trade_price <- buy_price # 依次撮合所有的买,直到卖数量为0或者市场上的买数量为0 for (i in 1:nrow(order_book)) { if (order_book$bid_price[i] == trade_price) { if (order_book$bid_amount[i] >= amount) { # 买数量大于等于卖数量,全部成交 order_book$bid_amount[i] <- order_book$bid_amount[i] - amount amount <- 0 break } else { # 买数量小于卖数量,部分成交 order_book$bid_amount[i] <- 0 amount <- amount - order_book$bid_amount[i] } } } # 如果卖数量没有完全成交,返回NA if (amount > 0) { return(NA) } # 返回成交价格 return(trade_price) } ``` 上述代码中,`order_book` 是一个数据框,包含了当前市场的买和卖的价格和数量信息。`match_market_buy` 函数用于撮合市价买,`match_market_sell` 函数用于撮合市价卖。这两个函数的参数分别是买或卖的价格和数量,返回值是成交价格。 在实际应用中,撮合市价的过程可能比上述代码更为复杂,需要考虑更多的因素。此外,为了实现高效的市场撮合,可能需要使用更为高级的数据结构,如二叉树或堆。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南万寿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值