该策略利用随机指标的K线和D线交叉产生交易信号,属于典型的随机指标交易策略。
计算一定周期内的随机指标K线和D线。
当K线从下方向上突破D线时,产生买入信号。
当K线从上方向下突破D线时,产生卖出信号。
可以设置回测的时间范围来测试策略效果。
使用随机指标交叉进行交易,策略规则简单清晰。
随机指标对超买超卖情况较为敏感。
K线和D线易于形成交易信号。
可通过回测验证策略效果。
随机指标易于计算实现。
代码简洁,易于二次开发。
随机指标交叉可能出现假信号。
没有设置止损止盈。
无法区分趋势和盘整行情。
回测存在数据拟合偏差。
实盘实施效果可能存在差异。
测试不同参数寻找最优参数。
增加趋势判断指标进行过滤。
建立止损止盈机制。
引入其他因子进行信号验证。
对回测数据进行处理以消除偏差。
模拟实盘来优化参数配置。
该策略采用简单的随机指标交叉进行交易,易于实现,但需要进一步优化来提高稳定性。通过参数调整、风险控制等方式增强,可以将其打造成为可靠的量化交易策略。
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © utanico
//@version=4
strategy(title="Stochastic", overlay=true, shorttitle="Stoch")
periodK = input(35, title="K", minval=1)
periodD = input(21, title="D", minval=1)
smoothK = input(21, title="Smooth", minval=1)
startYear = input(type=input.integer, title = "開始年", defval = 2020)
startMonth = input(type=input.integer, title = "開始月", defval = 1)
startDay = input(type=input.integer, title = "開始日", defval = 1)
endYear = input(type=input.integer, title = "終了年", defval = 2030)
endMonth = input(type=input.integer, title = "終了月", defval = 12)
endDay = input(type=input.integer, title = "終了日", defval = 31)
//開始日時
test_start = timestamp(startYear, startMonth, startDay, 00, 00)
//終了日時
test_end = timestamp(endYear, endMonth, endDay, 00, 00)
//テスト期間の指定
is_test = true
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
if (is_test)
if (k > d)
strategy.entry("Stoch_LE", strategy.long, comment="Stoch_LE")
//if (strategy.opentrades > 0 and k < d)
//strategy.close("Stoch_LE",comment="CloseLONG")
if (k < d)
strategy.entry("Stoch_SE", strategy.short, comment="Stoch_SE")
//if (strategy.opentrades < 0 and k > d)
//strategy.close("Stoch_SE",comment="CloseShort")