量化交易:Dual Thrust策略

ops/2024/10/25 17:18:30/

哈喽,大家好,我是木头左!

Dual Thrust策略起源于20世纪80年代,由美国著名交易员和金融作家Larry Williams首次提出。这一策略的核心思想是通过捕捉市场中的短期波动来实现盈利。Larry Williams通过多年的研究和实践,发现市场中存在一种周期性的波动模式,通过这种模式可以预测价格的短期走势。

策略原理

Dual Thrust策略的核心思想是利用市场的波动性来捕捉趋势。Dual Thrust策略主要依赖于两个关键参数:Range和ATR(平均真实波动范围)。Range是指当前收盘价与前一个交易日的最高价和最低价之间的最大距离,而ATR则是过去一段时间内Range的平均值。通过这两个参数,投资者可以确定买入和卖出的触发点,从而实现盈利。该策略通过计算上轨和下轨两个阈值,来判断市场的多空方向。当价格突破上轨时,策略认为市场处于多头趋势,进行做多操作;当价格跌破下轨时,策略认为市场处于空头趋势,进行做空操作。上轨和下轨的计算公式如下:

上轨:开盘价 + K1 * 波动
下轨:开盘价 - K2 * 波动

其中,波动是指在给定的时间窗口内,最高价与最低价之间的最大差值。K1和K2是两个参数,用于调整上下轨的敏感度。

在聚宽平台运行Python代码

选股方式

在Dual Thrust策略中,选股方式相对简单。选择一个特定的合约作为交易标的,例如螺纹钢(SHFE.RB)。在策略初始化时,订阅该合约,并设置相关参数。

def init(context):context.symbol = 'SHFE.RB'context.N = 5context.k1 = 0.2context.k2 = 0.2schedule(schedule_func=algo, date_rule='1d', time_rule='21:00:00')schedule(schedule_func=algo, date_rule='1d', time_rule='09:30:00')
择时

择时是Dual Thrust策略的关键环节。通过计算历史数据中的最高价、最低价、收盘价等信息,来确定上下轨的位置。在每个交易时段开始时,计算当前的上下轨,并根据这些阈值来决定交易方向。

def algo(context):# ...(省略部分代码)data = history_n(symbol=context.main_contract, frequency='1d', end_time=context.now,fields='symbol,open,high,low,close', count=context.N + 1, df=True)current_open = data.open.iloc[-1]data.drop(context.N, inplace=True)HH = data['high'].max()HC = data['close'].max()LC = data['close'].min()LL = data['low'].min()range = max(HH - LC, HC - LL)context.buy_line = current_open + range * context.k1context.sell_line = current_open - range * context.k2
策略交易

在每个交易时段,根据当前价格与上下轨的关系,来执行交易操作。如果价格突破上轨,进行做多操作;如果价格跌破下轨,进行做空操作。同时,还需要处理平仓和开仓的逻辑。

def on_bar(context, bars):bar = bars[0]positions = get_position()position_long = list(filter(lambda x: x['symbol'] == context.main_contract and x['side'] == PositionSide_Long, positions))if bar.close > context.buy_line:# 情况1:已经持有多仓,直接返回if position_long:  return# 情况2:没有持仓时,直接开多仓            else: order_volume(symbol=context.main_contract, volume=1, side=OrderSide_Buy, order_type=OrderType_Limit, position_effect=PositionEffect_Open, price=bar.close)elif bar.close < context.sell_line:order_volume(symbol=context.main_contract, volume=1, side=OrderSide_Sell, order_type=OrderType_Limit, position_effect=PositionEffect_Close, price=bar.close)

策略的优势与风险

简化版的Dual Thrust策略在股票市场中具有以下优势:

  1. 简单易懂:策略逻辑简单,易于理解和实施。
  2. 趋势跟踪:能够捕捉市场的主要趋势,提高收益。
  3. 适应性强:适用于多种股票、期货市场环境。
    市场有风险,交易需谨慎。
    感兴趣的朋友,可以共同交流!

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!


http://www.ppmy.cn/ops/41559.html

相关文章

Alembic 的使用(配合一款免费云数据库MemfireDB)

已经使用 Go 开发好一段时间了&#xff0c;最近因为工作原因又重操旧业搞起了 Python&#xff0c;基于 FastAPI 进行接口开发&#xff0c;然后去找了一下相关的脚手架&#xff0c;发现这其中挺多都用到了 Alembic&#xff0c;之前没使用过&#xff0c;于是学习了一下&#xff0…

20240514基于深度学习的弹性超材料色散关系预测与结构逆设计

论文&#xff1a;Dispersion relation prediction and structure inverse design of elastic metamaterials via deep learning DOI&#xff1a;https://doi.org/10.1016/j.mtphys.2022.100616 1、摘要 精心设计的超材料结构给予前所未有的性能&#xff0c;保证了各种各样的具…

Linux监听某个进程,自动重启

文章目录 前言一、使用 bash 脚本编写监控程序二、使用 systemd总结 前言 在 Linux 下监听某个进程&#xff0c;当进程异常退出后自动重启&#xff0c;可以使用bash脚本编写监控程序&#xff0c;也可以使用系统工具如 systemd 或 supervisor。 一、使用 bash 脚本编写监控程序…

训练集、测试集与验证集:机器学习模型评估的基石

在机器学习中&#xff0c;为了评估模型的性能&#xff0c;我们通常会将数据集划分为训练集&#xff08;Training Set&#xff09;、验证集&#xff08;Validation Set&#xff09;和测试集&#xff08;Test Set&#xff09;。这种划分有助于我们更好地理解模型在不同数据上的表…

C++复习 -- 继承

继承基本概念 继承是面向对象编程&#xff08;OOP&#xff09;中的一个核心概念&#xff0c;特别是在C中。它允许一个类&#xff08;称为派生类或子类&#xff09;继承另一个类&#xff08;称为基类或父类&#xff09;的属性和方法。 继承的主要目的是实现代码重用&#xff0…

thinkphp8扩展think-swoole4.0-事件监听代码

首先服务端配置监听 swoole.php <?phpreturn [http > [enable > true,host > 0.0.0.0,port > 8000,worker_num > swoole_cpu_num(),options > [],],websocket > [enable > true,handler > \think\swo…

Mac电脑安装打开APP显示问题已损坏 问题解决

当MAC电脑安装完软件打开时&#xff0c;显示文件已损坏&#xff0c;无法打开。搜了很多教程终于找到解决方案&#xff0c;记录下方便以后再用。 我的mac电脑是intel芯片的&#xff0c;如果你遇到这个问题&#xff0c;可以参考我的这个方案。 1.首先当打开软件后出现 “xx软件已…

AIGC、LLM 加持下的地图特征笔记内容生产系统架构设计

文章目录 背景构建自动化内容生产平台系统架构设计架构详细设计流程介绍笔记来源笔记抓取干预 笔记 AIGC 赋能笔记 Rule 改写笔记特征库构建 附录Bash Cron 定时任务Golang 与 Pyhon AIGC 实践 小结 背景 在大模型的浪潮下&#xff0c;ChatGPT、Sora、Gemini、文言一心 等新技…