Pine量化交易策略:止盈改进与代码实现
创作时间:
作者:
@小白创作中心
Pine量化交易策略:止盈改进与代码实现
引用
1
来源
1.
https://www.cnblogs.com/Mephostopheles/p/18408719
本文将介绍如何通过改进止盈策略来优化Pine量化交易系统。通过对比改进前后的策略效果,我们将展示如何通过代码实现3.0%的止盈百分比,从而在确保一定盈利的情况下退出市场,避免市场行情逆转带来的风险。
什么是止盈
止盈的核心思想是:当市场价格达到设定的目标后,投资者会卖出资产,防止市场波动将已经取得的利润变为损失。通过止盈,投资者在确保一定盈利的情况下退出市场,而不是继续持有以追求更高的收益,从而避免市场行情逆转带来的风险。
止盈的常见方式包括:
- 固定价格止盈:设定一个具体的价格作为目标,一旦价格触及该水平就卖出资产。例如,某只股票买入价是 100,当价格上涨到 120 时卖出,锁定 20% 的利润。
- 百分比止盈:设定一个百分比目标,当资产价格上涨到预期百分比时卖出。例如,设定止盈目标为 10%,当资产价格涨幅达到 10% 时卖出。
- 技术指标止盈:使用技术分析工具(如移动平均线、相对强弱指数 RSI、布林带等)来判断市场趋势的变化,从而选择合适的时机卖出。例如,当 RSI 显示超买信号时,选择止盈。
- 动态止盈(追踪止盈):设定一个价格回撤的比例或金额,随着价格上涨,止盈价格也同步上移。当价格从高点回落到设定的比例时触发卖出。例如,设定 5% 的回撤止盈,当价格从最高点下跌 5% 时卖出。
改进前
定义了三个 EMA,分别为 9、26 和 55 周期的指数移动平均线,三种不同的 Supertrend,分别基于 7、14 和 21 个周期(length1, length2, length3)和不同的乘数(factor1, factor2, factor3)。策略结果如下:
改进后
首先把7和21个周期的Supertrend删去,然后加入止盈,这里止盈的百分比默认为 3.0%,例如,如果入场价是 100,止盈百分比为 3%,那么止盈价格就是 100 * 1.03 = 103。
改进原因
减少因为多信号导致的反应迟缓,3.0%的止盈可以防止在强趋势出现反转之前利润被侵蚀。结果如下图,可以看到各项指数均得到一定幅度的优化,最大回撤是年化收益率的六倍,2023-6-30到2024-7-30有72笔交易,k线周期为1h,符合金星策略。
源代码
/*backtest
start: 2023-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Simplified Golden Crossover with Supertrend and Take Profit", overlay=true)
// Define EMA lengths
ema9_length = 9
ema26_length = 26
ema55_length = 55
// Input parameters for different timeframes
timeFrame9 = input.timeframe('', 'Time Frame - EMA 9')
timeFrame26 = input.timeframe('', 'Time Frame - EMA 26')
timeFrame55 = input.timeframe('', 'Time Frame - EMA 55')
// Request EMA data from specified time frames
ema9 = request.security(syminfo.tickerid, timeFrame9, ta.ema(close, ema9_length))
ema26 = request.security(syminfo.tickerid, timeFrame26, ta.ema(close, ema26_length))
ema55 = request.security(syminfo.tickerid, timeFrame55, ta.ema(close, ema55_length))
// Supertrend function (single Supertrend)
supertrend(length, factor) =>
[superTrend, direction] = ta.supertrend(factor, length)
superTrend
// Supertrend parameters (only one Supertrend for simplicity)
length_supertrend = 14
factor_supertrend = 2
// Supertrend calculation
superTrend = supertrend(length_supertrend, factor_supertrend)
// Plot EMAs on the chart
plot(ema9, color=color.black, title="EMA 9")
plot(ema26, color=color.green, title="EMA 26")
plot(ema55, color=color.red, title="EMA 55")
// Plot Supertrend line on the chart
plot(superTrend, color=color.blue, title="Supertrend")
// Define buy and sell conditions combining EMA crossover and Supertrend
buy_condition_ema = ta.crossover(ema9, ema26) and ema26 > ema55
sell_condition_ema = ta.crossunder(ema9, ema26) and ema26 < ema55
buy_condition_supertrend = close > superTrend
sell_condition_supertrend = close < superTrend
// Combine the conditions (one Supertrend + EMA crossover)
buy_condition = buy_condition_ema and buy_condition_supertrend
sell_condition = sell_condition_ema or sell_condition_supertrend
// Input for Take Profit percentage
take_profit_percent = input.float(3.0, title="Take Profit %", minval=0.1) / 100
// Calculate Take Profit level based on the entry price
take_profit_level = strategy.position_avg_price * (1 + take_profit_percent)
// Execute buy and sell orders
if (buy_condition)
strategy.entry("Buy", strategy.long)
// Close position with Take Profit and normal exit conditions
strategy.exit("Take Profit", "Buy", limit=take_profit_level)
// Sell condition to close the order
if (sell_condition)
strategy.close("Buy")
// Plot buy and sell signals on the chart
plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.arrowup, title="Buy Signal")
plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.arrowdown, title="Sell Signal")
多次测试
(注:原文中“多次测试”部分未完成,因此省略)
热门推荐
罗伯托·卡洛斯领衔传奇慈善赛,为ALS研究助力
桂木叶秋冬养生全攻略:功效、使用方法与注意事项
显微镜助力医学诊断,揭秘疾病真相
从职场小白到业务精英:一个普通人的逆袭之路
2.2亿老年人家门口享健康服务,社区卫生机构探索智慧养老新模式
延安到云南西双版纳旅行全攻略:路线、景点与实用贴士
诱敌深入围点打援,白崇禧龙潭之战显神机
普度众生:大乘佛教菩萨道的核心理念与实践
熬夜党福音:一根香蕉的能量补给站
苏轼李白杜甫:三位诗坛巨匠的时光感悟
冬季护嗓指南:慢性咽喉炎的日常护理要点
非洛地平片的功效与副作用详解
王楚钦:从乒超到WTT,年轻王者的崛起之路
秋登崂山:从卧龙村到太清宫的山海徒步路线
韦雄《根本你不懂得爱我》:失恋心情解析
天津方言与普通话:一场和谐的二重唱
一路向北,邂逅漠河的极致之美——漠河旅游攻略
密云自驾游打卡三大网红景点:黑龙潭、桃源仙谷、云峰山
过度溺爱致男孩缺敬畏,专家建议母亲学会“适度退出”
从悬挂到冷冻:家庭保存大蒜的六大妙招
汽车坐垫怎么装?卡扣和挂钩两种方式详解
冬季经络按摩:五大穴位助你固阳驱寒,提升免疫力
母子DNA相似度50%,这些性状由母亲决定
联合国报告:全球艾滋病新增感染达130万,中国防治取得突破
“知足常乐”民间流传多个版本,都强调精神富足
最新研究:黄连素可抑制肺癌细胞,为癌症治疗提供新方案
地震致银川承天寺塔塔尖倾斜,景区已闭园
“海上第一石林”花岙岛:火山奇观与历史遗迹共存的海岛明珠
新疆自驾8天必备清单:资深驴友亲身经验分享
盐酸小檗碱片治拉肚子,这些使用禁忌要知道!