高灵活性Python趋势交易框架实战解析

 52     |      2025-11-23 18:39:12

经常在发明者平台闲逛,总会找到宝贝,今天找到了一篇21年的趋势策略,感叹于原作者的精妙和完善的代码架构,并且具有高度的灵活性。原始策略是JS版本的,为方便Python朋友,进行了改写。

说实话,刚接触量化交易的时候,不少新手朋友会走很多弯路。经常遇到下单失败、风控没做好亏钱、策略重启后数据丢失等各种问题。后来慢慢意识到,有一个好的框架真的很重要,可以帮我们避开很多坑。这个趋势策略框架就是这样一个好东西。它不只是一个简单的交易策略,更像是一个工具箱,把下单、止损、数据管理这些基础但重要的功能都给你做好了。你只需要专心考虑"什么时候买"、"什么时候卖"这些核心问题就行。而且这个框架的设计很开放,你可以很容易地把EMA换成MACD、RSI或者其他你喜欢的指标。想做趋势跟踪?没问题。想试试均值回归?也行。甚至想组合多个指标一起用?完全可以。这种灵活性让我觉得很实用,一套代码可以改来改去试验不同的想法。

今天把这个框架分享出来,希望能帮到在量化路上摸索的朋友们。下面来详细介绍一下这个框架的各个部分,相信看完你也会觉得很有用。

框架结构与功能

相对于多品种交易框架中使用的多个独立函数,本框架尝试使用类(Class)的格式来组织和管理策略的各个部分。这种面向对象的设计方式不仅提高了代码的可维护性和可扩展性,还使得策略的各个组件更加模块化,便于后续的调整与优化。该框架主要由以下几个板块组成,每个板块中的函数都具有特定的功能,确保策略的灵活性和实用性。

初始化与设置

__init__函数

功能:__init__ 函数是策略类的初始化方法,负责设置策略的基本配置、初始化变量以及获取市场信息。该函数确保策略在运行之前已配置好所需的参数,确保后续的交易操作能够顺利执行。步骤:

基础配置:设置交易货币、合约类型、止盈止损规则等。市场信息:获取合约的价格精度、数量精度等,确保订单合法。初始化变量:包括趋势判断、止盈止损参数、统计变量等,帮助策略根据市场情况进行决策。交易所设置:根据市场信息配置交易所API接口,如设置保证金、精度等。

initDatas 函数

功能:初始化策略运行时的数据,包括账户资产、收益统计等。步骤:

保存策略运行时间。读取本地用户数据。初始化账户资产、收益统计等数据。检查止盈和回调止盈是否同时启用。

数据管理与保存

saveStrategyRunTime 函数

功能:保存策略的起始运行时间,用于后续的统计和监控。步骤:

检查本地是否已保存运行时间。若未保存,则记录当前时间并保存到本地。若已保存,则读取本地保存的时间。

setStrategyRunTime 函数

功能:设置策略的起始运行时间,并保存到本地存储中。步骤:

使用平台的_G函数将传入的时间戳保存到本地。更新策略数据中的起始运行时间。

getDaysFromTimeStamp 函数

功能:计算两个时间戳之间的天数差,用于统计策略运行时长。步骤:

检查结束时间是否早于开始时间,若是则返回0。计算两个时间戳之间的秒数差,并转换为天数。返回天数差。

saveUserDatasLocal 函数

功能:将策略运行中的关键数据保存到本地,以便在策略重启时恢复。步骤:

将账户资产、收益统计等数据打包。使用平台的_G函数将数据保存到本地。

readUserDataLocal 函数

功能:读取本地保存的用户数据,用于策略重启时的数据恢复。步骤:

检查本地是否有保存的数据。若没有,则初始化数据并保存到本地。若有,则读取并加载到策略中。

clearUserDataLocal 函数

功能:清除本地保存的用户数据,通常用于策略重置或调试。步骤:

使用平台的_G函数清除本地数据。记录清除操作。策略交互与命令处理

runCmd 函数

功能:处理用户通过交互界面发送的命令,如清除本地数据、修改下单数量等。步骤:

获取用户发送的命令。根据命令类型执行相应操作,如清除本地数据、修改下单数量等。记录命令执行结果。交易与订单管理

orderDirectly 函数

功能:根据方向和价格直接下单,支持开仓、平仓操作。步骤:

根据方向选择交易函数(买入或卖出)。设置交易方向。执行下单操作并返回结果。

openLong 函数

功能:开多仓,根据价格和数量下单。步骤:

计算实际下单数量。调用orderDirectly函数执行买入操作。

openShort 函数

功能:开空仓,根据价格和数量下单。步骤:

计算实际下单数量。调用orderDirectly函数执行卖出操作。

coverLong 函数

功能:平多仓,根据价格和数量下单。步骤:

调用orderDirectly函数执行卖出操作。

coverShort 函数

功能:平空仓,根据价格和数量下单。步骤:

调用orderDirectly函数执行买入操作。

getRealOrderSize 函数

功能:根据价格和数量重新计算实际下单数量,支持按保证金比例下单。步骤:

根据是否按保证金比例下单,计算实际下单数量。返回计算后的下单数量。风险管理与收益统计

getSinglePositionMargin 函数

功能:计算单个持仓占用的保证金。步骤:

根据持仓方向和数量计算保证金。返回计算结果。

getSinglePositionProfit 函数

功能:计算单个持仓的收益和收益率。步骤:

根据持仓方向和当前价格计算收益。返回收益和收益率。

calculateForcedPrice 函数

功能:计算持仓的强平价格。步骤:

根据持仓方向和账户余额计算强平价格。返回计算结果。

getMaxOrderSize 函数

功能:计算最大可下单数量。步骤:

根据账户余额和杠杆计算最大可下单数量。返回计算结果。

getAccountAsset 函数

功能:计算账户总资产,包括持仓和可用余额。步骤:

根据持仓和账户余额计算总资产。返回计算结果。

calculateProfit 函数

功能:计算并记录策略的收益情况。步骤:

计算当前总收益与初始资产的差值。记录收益并更新统计变量。保存收益数据到本地。

isEnoughAssetToOrder 函数

功能:检查账户资金是否足够下单。步骤:

获取账户余额信息。根据交易货币类型(USDT本位或币本位)计算所需资金。检查账户余额是否满足下单需求。返回布尔值,表示资金是否足够。趋势判断与交易逻辑

runInKLinePeriod 函数

功能:根据K线周期判断是否执行策略逻辑。步骤:

检查当前K线是否已处理。若未处理,则标记为已处理并返回True,否则返回False。

trendJudgment 函数(核心趋势判断模块)

功能:根据技术指标判断当前趋势。这是整个框架最具灵活性的模块,用户可以根据自己的需求替换不同的技术指标来进行趋势判断。当前实现:使用EMA(指数移动平均线)结合标准差来判断趋势可扩展性:该函数设计为可插拔式模块,用户可以轻松替换为其他技术指标,如:

RSI(相对强弱指数):判断超买超卖状态MACD(移动平均收敛发散):识别趋势转换点布林带(Bollinger Bands):基于价格波动性的趋势判断KDJ指标:结合动量和趋势的综合判断多指标组合:可以组合多个指标进行更精确的趋势判断

步骤:

计算EMA指标并判断价格是否穿过EMA。根据标准差判断是否处于趋势中。返回当前趋势(多、空或震荡)。

stopLoss 函数

功能:根据止损规则执行止损操作。步骤:

检查持仓是否达到止损条件。若达到,则执行平仓操作并记录止损信息。

takeProfit 函数

功能:根据止盈规则执行止盈操作。步骤:

检查持仓是否达到止盈条件。若达到,则执行平仓操作并记录止盈信息。

trackingTakeProfit 函数

功能:根据回调止盈规则执行止盈操作。步骤:

检查持仓是否达到回调止盈触发条件。若达到,则执行平仓操作并记录止盈信息。

order 函数

功能:根据趋势判断结果执行下单操作。步骤:

检查当前持仓情况。根据趋势判断结果执行开仓或平仓操作。策略核心逻辑

trendStrategy 函数

功能:策略的核心逻辑函数,负责执行趋势判断、止损止盈、回调止盈以及下单操作。步骤:

获取市场数据:获取当前行情、持仓信息、账户信息和K线数据。检查持仓:确保没有同时持有多空仓位,否则抛出异常。策略交互:处理用户通过交互界面发送的命令。状态栏信息打印:更新并打印策略运行状态、账户信息和持仓情况。止损:根据止损规则检查并执行止损操作。止盈:根据止盈规则检查并执行止盈操作。回调止盈:根据回调止盈规则检查并执行止盈操作。K线周期检查:确保策略逻辑按照K线周期执行。趋势判断:根据技术指标判断当前趋势(多、空或震荡)。下单:根据趋势判断结果执行开仓或平仓操作。

状态监控与日志输出

printLogStatus 函数

功能:打印策略运行状态、账户信息和持仓情况。步骤:

构建策略总览、账户资金和持仓情况的表格数据。使用LogStatus函数将表格数据输出到状态栏。主函数与策略执行

main 函数

功能:策略的主函数,负责初始化策略并循环执行策略逻辑。步骤:

初始化交易所模拟环境。创建策略实例并初始化数据。循环执行策略逻辑,每隔一定时间间隔检查市场情况并执行交易操作。

框架特性

灵活的趋势判断:通过EMA指标和标准差,策略能够灵活判断市场趋势,适用于不同的市场环境。该函数只是一个示例,用户可以根据需要使用不同的技术指标(如RSI、MACD、布林带等)进行趋势判断。多样的止损止盈机制:支持固定百分比止损止盈和回调止盈,满足不同风险偏好的交易者需求。本地数据管理:策略运行数据和用户数据均保存在本地,确保策略重启后能够恢复到之前的状态。交互式命令:支持通过命令行与策略进行交互,方便用户调整策略参数或执行特定操作。可适用性

该框架不仅适用于数字货币市场,还可以通过添加不同的技术指标(如RSI、MACD等)在trendJudgment函数中进行扩展,以适应不同的交易策略需求。此外,该框架还可以针对现货市场或多品种合约进行针对性的修改,具有较高的灵活性和可扩展性。

现货市场支持:目前该框架主要针对合约市场,未来可以扩展支持现货市场的交易策略。多品种合约:通过添加多品种合约的支持,策略可以同时监控和交易多个数字货币,提高资金利用率。机器学习集成:结合机器学习算法,进一步提升趋势判断的准确性和策略的智能化水平。风险管理优化:进一步优化风险管理机制,如动态调整杠杆倍数、多层次止损止盈等,以提高策略的稳健性。

总结

作为一个功能全面、灵活性高的自动化交易系统,该框架适用于数字货币市场的趋势交易。通过不断优化和扩展,它有望在未来成为数字货币交易者的得力工具,帮助用户更好的开发属于自己的量化策略。"数字货币趋势策略交易框架"结构完善,代码量虽然较多,但从实盘交易的角度来看,它基本涵盖了趋势交易中所需的核心功能模块。因此,无论是从学习交易策略的角度,还是从实际应用的角度,该框架都具有重要的参考价值和实践意义。其功能全面性和灵活性使其能够适应不同的市场环境,为大家提供强大的支持。

发明者平台作为一个量化交易的宝库,包含了数字货币量化交易的大量知识和策略,每一个策略都凝聚着开发者的智慧和经验。欢迎大家来这里淘金,探索更多有价值的交易策略和技术分享。感谢各位富有创新精神和乐于分享的用户,正是因为大家的贡献,才让这个平台成为了量化交易学习和交流的重要场所,共同帮助大家提升量化交易的技能和水平。

字数限制,请到fmz查看完成策略代码