资源加载中... loading...

KRK aDa 随机慢速均值回归策略与人工智能增强

Author: ChaoZhang, Date: 2024-04-26 15:41:18
Tags: KRKADAEMAAIRSI

 KRK aDa 随机慢速均值回归策略与人工智能增强

概述

该策略使用随机慢速指标(Stochastic Slow)作为主要的交易信号,并结合200期简单移动平均线(SMA)作为趋势过滤器。此外,该策略还引入了一个虚拟的人工智能(AI)指标,以提供额外的入场信号。策略的主要思路是在超卖区域买入,超买区域卖出,同时确保价格在200 SMA上方买入,在200 SMA下方卖出,以顺应当前趋势。AI指标的加入为策略提供了更多的入场机会。

策略原理

  1. 计算随机慢速指标的K值和D值,其中K值的周期为26,D值为K值的3周期SMA。

  2. 设定超买区(OverBought)为81,超卖区(OverSold)为20,最小K值(minKValue)为11。

  3. 当K线上穿D线且K值小于超卖区且大于最小K值时,产生买入信号。

  4. 当K线下穿D线且K值大于超买区且大于最小K值时,产生卖出信号。

  5. 使用200期SMA作为趋势过滤器,当价格在200 SMA上方时允许买入,在200 SMA下方时允许卖出。

  6. 引入虚拟AI指标(使用RSI>50表示看涨,RSI<50表示看跌),当AI指标看涨时买入,看跌时卖出。

  7. 综合随机指标、趋势过滤器和AI指标的信号,产生最终的交易信号。

  8. 买入时设置10%的止损,卖出时设置10%的止损。

策略优势

  1. 随机慢速指标有效地识别了市场的超买和超卖区域,为交易提供了良好的入场点。

  2. 引入200 SMA作为趋势过滤器,确保交易与当前趋势保持一致,提高了成功率。

  3. 加入AI指标为策略提供了更多的入场机会,有可能提高策略的收益。

  4. 设置止损订单,有效控制了风险。

策略风险

  1. 随机指标在震荡市场中可能会产生较多的虚假信号。

  2. AI指标目前只是一个虚拟指标,实际效果有待验证。

  3. 止损设置可能会导致部分收益被过早止损出场。

策略优化方向

  1. 对随机指标的参数进行优化,找到最佳的周期和超买超卖阈值设置。

  2. 引入更加复杂和有效的AI模型,提高AI信号的准确性。

  3. 优化止损和止盈设置,以更好地控制风险和锁定收益。

  4. 考虑引入其他有效的技术指标或基本面数据,以提高策略的robustness。

总结

该策略通过结合随机慢速指标、趋势过滤器和AI信号,形成了一个多因子交易策略。随机指标提供了有效的超买超卖信号,趋势过滤器确保交易方向与大趋势一致,AI信号则为策略提供了更多的入场机会。尽管该策略还有一些潜在的风险和优化空间,但其整体思路清晰,逻辑合理,值得进一步探索和改进。


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Stochastic Slow Strategy with More Entries and AI", overlay=true)

length = input.int(26, minval=1)
OverBought = input(81)
OverSold = input(20)
smoothK = input.int(3, minval=1)
smoothD = input.int(3, minval=1)
minKValue = input(11, title="Minimum K Value")

// Stochastic calculations
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
co = ta.crossover(k, d)
cu = ta.crossunder(k, d)

// Trend filter (200-period simple moving average)
ema200 = ta.sma(close, 200)

// Artificial Intelligence indicator (dummy example)
// Aquí puedes colocar la lógica de tu red neuronal artificial
// Por ahora, simplemente usaremos una señal aleatoria
ai_signal = ta.rsi(close, 14) > 50 ? 1 : -1

// Entry conditions
longCondition = ta.crossover(close, ema200) and k < OverSold and k > minKValue and ai_signal == 1
shortCondition = ta.crossunder(close, ema200) and k > OverBought and k > minKValue and ai_signal == -1

if (not na(k) and not na(d))
    if (co and k < OverSold and k > minKValue)
        strategy.entry("StochLE", strategy.long, comment="StochLE")
    if (cu and k > OverBought and k > minKValue)
        strategy.entry("StochSE", strategy.short, comment="StochSE")
    if (longCondition)
        strategy.entry("LongEntry", strategy.long, comment="LongEntry")
        strategy.exit("StopLoss", "LongEntry", loss = close * 0.9) // Stop loss del 10%
    if (shortCondition)
        strategy.entry("ShortEntry", strategy.short, comment="ShortEntry")
        strategy.exit("StopLoss", "ShortEntry", loss = close * 1.1) // Stop loss del 10%

// Plotting
plot(ema200, color=color.blue, title="200 SMA")


相关内容

更多内容