菲阿里四价交易策略详解:原理、代码与回测分析
创作时间:
作者:
@小白创作中心
菲阿里四价交易策略详解:原理、代码与回测分析
引用
1
来源
1.
https://aiguqi.com/jiaoyicelue/278.html
菲阿里四价交易策略是一种基于日内交易的策略,主要关注昨日高点、低点、收盘价和今日开盘价四个价格。本文详细介绍了该策略的原理、逻辑,并提供了具体的代码实现。此外,文章还包含了回测结果和稳健性分析,展示了在不同标的和时间段下的表现。
1. 原理
菲阿里四价同R Breaker一样,也是一种日内策略交易,适合短线投资者。菲阿里四价指的是:昨日高点、昨日低点、昨天收盘、今天开盘四个价格。
菲阿里四价上下轨的计算非常简单。昨日高点为上轨,昨日低点为下轨。当价格突破上轨时,买入开仓;当价格突破下轨时,卖出开仓。
2、策略逻辑
第一步:获取昨日最高价、最低价、收盘价、开盘价四个数据。
第二步:计算上轨和下轨。当价格上穿上轨时,买入开仓;当价格下穿下轨时,卖出开仓。
第三步:当日平仓。
回测标的:SHFE.rb2010
回测期:2020-02-07 至 2020-04-15
回测初始资金:200万
注意:若修改回测期,需要修改对应的回测标的。
3、策略代码(略)
# coding=utf-8
from __future__ import print_function, absolute_import
"""
上轨=昨日最高点;
下轨=昨日最低点;
止损=今日开盘价;
如果没有持仓,且现价大于了昨天最高价做多,小于昨天最低价做空。
如果有多头持仓,当价格跌破了开盘价止损。
如果有空头持仓,当价格上涨超过开盘价止损。
选取 进行了回测。
注意:
1:为回测方便,本策略使用了on_bar的一分钟来计算,实盘中可能需要使用on_tick。
2:实盘中,如果在收盘的那一根bar或tick触发交易信号,需要自行处理,实盘可能不会成交。
"""
# 设置标的
context.symbol = 'SHFE.rb2010'
# 订阅一分钟线
subscribe(symbols=context.symbol, frequency='60s', count=1)
# 记录开仓次数,保证一天只开仓一次
context.count = 0
# 记录当前时间
time = context.now.strftime('%H:%M:%S')
# 如果当前时间点是交易时间段,则直接执行algo获取历史数据,以防直接进入on_bar()导致context.history_data未定义
if '09:00:00' < time < '15:00:00' or '21:00:00' < time < '23:00:00':
algo(context)
# 如果是非交易时间段,等到上午9点或晚上21点再执行algo()
schedule(schedule_func=algo, date_rule='1d', time_rule='09:00:00')
schedule(schedule_func=algo, date_rule='1d', time_rule='21:00:00')
# 获取历史的n条信息
context.history_data = history_n(symbol=context.symbol, frequency='1d', end_time=context.now,
fields='symbol,open,high,low', count=2, df=True)
def on_bar(context, bars):
# 取出订阅的一分钟bar
# 提取数据
data = context.history_data
# 现有持仓情况
position_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)
position_short = context.account().position(symbol=context.symbol, side=PositionSide_Short)
# 如果是回测模式
if context.mode == 2:
# 开盘价直接在data最后一个数据里取到,前一交易日的最高和最低价为history_data里面的倒数第二条中取到
open = data.loc[1, 'open']
high = data.loc[0, 'high']
low = data.loc[0, 'low']
# 如果是实时模式
else:
# 开盘价通过current取到
open = current(context.symbol)[0]['open']
# 实时模式不会返回当天的数据,所以history_data里面的最后一条数据是前一交易日的数据
high = data.loc[-1, 'high']
low = data.loc[-1, 'low']
# 交易逻辑部分
if position_long: # 多头持仓小于开盘价止损。
if bar.close < open:
order_volume(symbol=context.symbol, volume=1, side=OrderSide_Sell,
order_type=OrderType_Market, position_effect=PositionEffect_Close)
print('以市价单平多仓')
elif position_short: # 空头持仓大于开盘价止损。
if bar.close > open:
order_volume(symbol=context.symbol, volume=1, side=OrderSide_Buy,
order_type=OrderType_Market, position_effect=PositionEffect_Close)
print('以市价单平空仓')
else: # 没有持仓。
if bar.close > high and not context.count: # 当前的最新价大于了前一天的最高价
# 开多
order_volume(symbol=context.symbol, volume=1, side=OrderSide_Buy,
order_type=OrderType_Market, position_effect=PositionEffect_Open)
print('以市价单开多仓')
context.count = 1
elif bar.close < low and not context.count: # 当前最新价小于了前一天的最低价
# 开空
order_volume(symbol=context.symbol, volume=1, side=OrderSide_Sell,
order_type=OrderType_Market, position_effect=PositionEffect_Open)
print('以市价单开空仓')
context.count = 1
# 每天收盘前一分钟平仓
if context.now.hour == 14 and context.now.minute == 59:
order_close_all()
print('全部平仓')
context.count = 0
if __name__ == '__main__':
'''
strategy_id策略ID,由系统生成
filename文件名,请与本文件名保持一致
mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID,可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
'''
run(strategy_id='strategy_id',
filename='main.py',
mode=MODE_BACKTEST,
token='token_id',
backtest_start_time='2020-01-01 15:00:00',
backtest_end_time='2020-09-01 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=100000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)
4、回测结果与稳健性分析
设定初始资金10万,手续费率为0.01%,滑点比率为0.01%。回测结果如图所示:
回测期累计收益率为-4.05%,年化收益率为-6.03%。沪深300指数收益率为16.61%,整体跑输指数。最大回撤为4.34%,胜率为25.66%。
为了验证策略的稳健性,更改标的,回测结果如下:
标的 | 回测期 | 年化收益率 | 最大回撤 |
---|---|---|---|
SHFE.rb2010 | 2020.02.07-2020.04.15 | -6.03% | 4.34% |
SHFE.ag2010 | 2020.02.07-2020.04.15 | 38.03% | 7.97% |
SHFE.ni2010 | 2020.02.07-2020.04.15 | -22.46% | 22.85% |
SHFE.zn2010 | 2020.02.07-2020.04.15 | -15.93% | 12.01% |
SHFE.rb2010 | 2020.04.07-2020.06.15 | -3.40% | 1.37% |
SHFE.rb2010 | 2020.06.07-2020.08.15 | -13.96% | 2.32% |
SHFE.rb2010 | 2020.08.07-2020.10.15 | -11.38% | 2.18% |
由上表可以看出,随着品种的变化,策略的收益变化差异较大。ag2010的收益率能达到38.03%,但ni2010的收益仅为-22.46%。对于rb2010,随着回测期的变化,年化收益率均为负值,收益较不稳定。
注:此策略只用于学习、交流、演示,不构成任何投资建议。
热门推荐
洁修哥教你三招解决智能马桶冲水难题
保鲜膜法拯救马桶冲水无力
经济繁荣与衰退:银行定期存款利率的双向调节
定期存款四大技巧,侵权赔偿标准详解
丽水三轮车肇事逃逸事件:一小时破案背后的警示
肺结节检测首选CT扫描,AI辅助诊断准确率达90%
2024新规:无人机120米以下飞行无需审批
苹果手机防坑指南:用序列号查询辨别真伪,避开翻新机
廉江旅游攻略:岭南第一库、安铺鸡饭,4天深度游
广东两条交通大动脉建设提速:肇明高速将使肇庆至机场缩至20分钟,珠肇高铁将实现珠海35分钟直达。
水晶球:艺术设计中的神秘与未来
水晶球占卜热潮:揭秘神秘力量背后的科学与文化
交通肇事逃逸案件的最新司法解读
突发!无人机“黑飞”致天津机场瘫痪,3000旅客滞留
荆州无人机事故敲警钟:极端天气下飞行风险不容忽视
2024重磅福利:黟县西递宏村等5大景区全年免门票
冬游黄山必去三地:莲花峰观云海,光明顶看日出,始信峰赏雾凇
三颗文化明珠映徽州:屯溪老街、宏村、西递游
荆州无人机坠落起火致1伤,事件引发飞行安全关注
广州越秀区残联:高端辅具亮相北京路,科技助力无障碍生活
逍遥丸配健脾丸:冬季养生的黄金搭档
逍遥丸+健脾丸:养生界的“黄金搭档”如何科学使用?
正定春节摄影技巧大揭秘
正定古城春节民俗大揭秘:千年古城里的文化盛宴
豆腐汤:冬季养生的温暖之选
冬日暖心必备:青菜豆腐汤
豆腐汤:一碗养生汤的多重价值
探索广安:精华旅游景点全攻略,轻松规划您的完美一日游
广安十大传统名菜:从盐皮蛋到麻辣牛肉
每天了解一个城市—四川·广安,邓小平故里,滨江之城