
この戦略は,スーパートレンド指数とRSI指数に基づいた二時間周期の取引システムである.これは,120分と15分の2時間周期の技術分析指数と組み合わせ,スーパートレンド指数で中期トレンドの方向を捉え,RSI指数を利用して利益を得ることを目的としている.この戦略は,資金管理機構を採用し,ポジションをパーセントで割り当て,パーセントに基づいたストップ条件を設定している.
戦略の核心的な論理は以下の重要な要素に基づいています.
これは,構造が整った,論理が明確なトレンド追跡戦略である.異なる時間周期の技術指標を組み合わせることで,トレンドを把握しながらもリスク管理にも注意する.いくつかの最適化可能なスペースがあるが,全体的な設計理念は,量化取引の基本原則に合致する.トレーダーは,現場で使用する前に,各項のパラメータを最適化して,自分のリスク承受能力に応じてポジション配合を調整することをお勧めする.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan
//@version=5
strategy("Supertrend Strategy", overlay=true)
// Function for Supertrend
supertrend(_factor, _atrPeriod) =>
[out, _] = ta.supertrend(_factor, _atrPeriod)
out
// Supertrend Settings
factor = input.float(3.42, title="Supertrend Factor")
atrPeriod = input.int(14, title="ATR Period")
tf2 = input.timeframe("120", title="Supertrend Timeframe")
// RSI Settings
rsi_tf = input.timeframe("15", title="RSI Timeframe")
rsiLength = input.int(5, title="RSI Length")
rsiUpper = input.int(95, title="RSI Upper Limit")
rsiLower = input.int(5, title="RSI Lower Limit")
// RSI Timeframe
rsi_tf_value = request.security(syminfo.tickerid, rsi_tf, ta.rsi(close, rsiLength), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)
// Supertrend Timeframe
supertrend_tf2 = request.security(syminfo.tickerid, tf2, supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)
// Take Profit Settings (Percentage in relation to the average price)
takeProfitPercent = input.float(30, title="Take Profit", step=0.1) / 100
// Entry conditions based on price crossover with Supertrend Timeframe
longCondition = ta.crossover(close, supertrend_tf2) and barstate.isconfirmed
shortCondition = ta.crossunder(close, supertrend_tf2) and barstate.isconfirmed
// Execution of reversal orders with closing of previous position
if (longCondition)
// Close a short position before opening a long position
if (strategy.position_size < 0)
strategy.close("Short", comment="Close Short for Long Entry")
strategy.entry("Long", strategy.long)
if (shortCondition)
// Close long position before opening short position
if (strategy.position_size > 0)
strategy.close("Long", comment="Close Long for Short Entry")
strategy.entry("Short", strategy.short)
// Calculate take profit levels relative to the average entry price
if (strategy.position_size > 0)
takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent)
strategy.exit("Take Profit Long", "Long", limit=takeProfitLong)
if (strategy.position_size > 0 and (rsi_tf_value >= rsiUpper))
strategy.close("Long", comment="RSI Take Profit Long")
if (strategy.position_size < 0)
takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent)
strategy.exit("Take Profit Short", "Short", limit=takeProfitShort)
if (strategy.position_size < 0 and (rsi_tf_value <= rsiLower))
strategy.close("Short", comment="RSI Take Profit Short")
// Plot Supertrend timeframe with commit check to avoid repainting
plot(barstate.isconfirmed ? supertrend_tf2 : na, color=color.blue, title="Supertrend Timeframe (120 min)", linewidth=1)
// Plot RSI for visualization
plot(rsi_tf_value, "RSI", color=color.purple)
hline(rsiUpper, "RSI Upper", color=color.red)
hline(rsiLower, "RSI Lower", color=color.green)