
本策略通过计算适应性正则化移动平均线,实现不同市场之间的套利交易。该策略具有跨市场套利、动态参数调整、风险控制等特点。
该策略首先定义了一个scaleMinimax函数,用于将时间序列标准化到指定范围。然后定义了一个自适应正则化移动平均线rema函数,计算出平滑后的信号线sig。该信号线的计算方式是:
在得到信号线后,策略通过判断信号线与价格的金叉死叉来决定多空。具体来说:
此外,该策略加入平滑因子smooth和显示信号线show_line作为可调参数,提高了策略的灵活性。
相比传统移动平均线策略,该策略具有以下优势:
该策略也存在一定的风险:
双边交叉出现错误信号的概率较大。解决方法是适当调整平滑参数,避免信号线震荡。
跨市场套利必须要确保两市场具有价格关联性且走势一致。解决方法是选择高相关性的市场进行套利。
参数优化需要积累足够的历史数据进行回测。解决方法是在现实交易中谨慎调整参数。
该策略还可从以下方面进行优化:
在参数选取上,可以引入机器学习算法自动优化参数组合。
在信号生成上,可以引入更多的指标进行组合,构建更稳定的交易信号。
在风险控制上,可以设置止损线,以控制单笔损失。
在跨市场套利上,可以扩展到更多相关性高的交易品种。
本策略通过自适应计算移动平均线的方式,实现了跨市场之间的套利交易。相比传统移动平均线策略,具有参数自适应、平滑处理、跨市场套利等优势。下一步,通过机器学习、组合信号、风险管理等方式进一步优化该策略。
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Crossover82%", overlay=true)
//
// Functions
//
scaleMinimax(X, p, min, max) =>
hi = highest(X, p), lo = lowest(X, p)
(max - min) * (X - lo)/(hi - lo) + min
rema(ts, p) => // regularized ma
rm = 0.0, lambda = .5, a = 2 / (p + 1)
rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1)
rm
//
// Inputs
//
X = input(close, title="Data source")
smooth = input(2, title="REMA smooth factor")
show_line = input(true, title="Show signal line")
//
// Main
//
p = 5
sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth)
plot(show_line ? sig : na, linewidth=1)
plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50)
longCondition = crossover(sig, X)
if (longCondition)
strategy.entry("LE", strategy.long)
shortCondition = crossunder(sig, X)
if (shortCondition)
strategy.entry("SE", strategy.short)