本記事は,主に相対強度指数 (RSI) 指標に基づいて設計された株式取引ピラミッド戦略を紹介する.この戦略は,RSI指標を使用して株式の過剰購入および過剰販売エリアを決定し,ピラミッド原則を通じて利益を得ることを実施する.
この戦略は,RSIインジケーターとピラミディング戦略を組み合わせます.過剰購入および過剰販売状態を判断しながら,追加の購入を通じてより多くのリターンを得ることができます.RSI判断の正確性が改善する必要があるが,合理的なパラメータ最適化および他の指標との組み合わせによって,効果的な取引戦略を形成することができます.この戦略はいくつかの普遍性があり,比較的シンプルで直接的な定量的な取引方法です.
/*backtest start: 2023-12-30 00:00:00 end: 2024-01-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © RafaelZioni strategy(title='Simple RSI strategy', overlay=false) SWperiod = 1 look = 0 OverBought = input(80, minval=50) OverSold = input(25, maxval=50) bandmx = hline(100) bandmn = hline(0) band1 = hline(OverBought) band0 = hline(OverSold) //band50 = hline(50, color=black, linewidth=1) fill(band1, band0, color=color.purple, transp=98) src = close len = input(5, minval=1, title="RSI Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) p = 100 //scale hh = highest(high, p) ll = lowest(low, p) scale = hh - ll //dynamic OHLC dyno = (open - ll) / scale * 100 dynl = (low - ll) / scale * 100 dynh = (high - ll) / scale * 100 dync = (close - ll) / scale * 100 //candle color color_1 = close > open ? 1 : 0 //drawcandle hline(78.6) hline(61.8) hline(50) hline(38.2) hline(23.6) plotcandle(dyno, dynh, dynl, dync, title="Candle", color=color_1 == 1 ? color.green : color.red) plot(10, color=color.green) plot(55, color=color.black) plot(80, color=color.black) plot(90, color=color.red) long = rsi <= OverSold ? 5 : na //Strategy golong = rsi <= OverSold ? 5 : na longsignal = golong //based on https://www.tradingview.com/script/7NNJ0sXB-Pyramiding-Entries-On-Early-Trends-by-Coinrule/ //set take profit ProfitTarget_Percent = input(3) Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick //set take profit LossTarget_Percent = input(10) Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick //Order Placing strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal) strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal) strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal) strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal) strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal) strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal) strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal) if strategy.position_size > 0 strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks) strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks) strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks) strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks) strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks) strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks) strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)