この戦略は,傾向を特定し追跡するためのICHIMOKUクラウド・チャートパターン指標とSTOCHランダム指標に基づいています. 戦略名は"ICHIMOKUクラウド・ストック・トレンド・トラッキング戦略"です.
戦略は主に現在のトレンド方向と過買い/過売状況をICHIMOKUクラウドチャートとSTOCH指標によって判断する.
変換線がベースラインを超越し,ストック指標が過売りエリアから反転すると,それは上昇傾向とみなされ,戦略は上昇方向に進む.変換線がベースラインを下回り,ストック指標が過買いエリアから下がると,それは下落傾向とみなされ,戦略は下落方向に進む.
コードでは,変換線は最後のN1バーの最高値と最低値の平均値で定義され,ベースラインは最後のN2バーの最高値と最低値の平均値で定義されます.変換線がベースラインを横切ると上昇信号が生成されます.
ストック指標は,過剰購入と過剰販売の
この2つの指標を組み合わせることで 戦略は傾向の方向性を決定します
この戦略は,チャートパターンの指標と過買い/過売りの指標を組み合わせて,トレンド方向性を効果的に決定します.
単一のトレンド判断指標を使用すると比較して,この戦略はトレンドと超越状況の両方を包括的に考慮し,エントリータイミングをより正確に決定することができます.
イチモク・クラウド・チャートは中長期の傾向を特定し,ストック・インディケーターは短期的な買い過ぎ/売り過ぎの状況を検出することができる.両者は体系的な判断を形成するために互いを補完する.
この戦略の主なリスクは,
ブラック・スワン事件の場合 インディケーターの故障リスク
トレンドの一部を逃すか,または開設ポジションを逆転させる可能性があります.
多因子の判断は主観性があり,不適切なパラメータ設定は誤りを引き起こす可能性があります.
取引頻度は高いため,取引コストによる利益に影響を与える可能性があります.
対応する最適化対策:
ニュースイベントを組み合わせて,主要な政策イベントの際に盲目取引を避ける.
遅延の可能性を減らすため,サイクルパラメータを適切に短縮する.
科学的な設定を改善するためにバックテストを通じてパラメータを最適化します
取引頻度を減らすために,利益とストップロスの範囲を適切に増加させる.
この戦略の主要な最適化方向は以下の通りである.
ICHIMOKU変換ラインとベースラインのサイクルパラメータを最適化し,異なる市場特性により適したものにします.
ストック指標の K,D 均等化パラメータと過買い/過売値を最適化する.
他の指標を増やして多要素モデルを作り,システムの信頼性を向上させる.
利潤を確保しながら取引頻度を減らすために,利益とストップロスのポイントを最適化します.
緊急事態を判断するモジュールを追加し 大事な事件の際に故障を回避します
この戦略は,イチモク・クラウド・チャートとストック・インジケーターを組み合わせて,トレンド方向とオーバーバイト/オーバーセール状況に関する包括的な判断を行い,効果的にトレンド市場を追跡することができます.チャートパターンと定量指標を検討することで,戦略はより体系的です.将来の最適化にはパラメータの調整,他の指標を追加,緊急判断モジュールを追加などが含まれます.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ICHI + STOCH V1", overlay=true) length = input.int(20, minval=1) smoothK = input(5) smoothD = input(3) OverBought = input(25) OverSold = input(65) Profit = input(1800) Stop = input(1200) 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) conversionPeriods = input.int(9, minval=1, title="Conversion Line Length") basePeriods = input.int(26, minval=1, title="Base Line Length") laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length") displacement = input.int(1, minval=1, title="Lagging Span") conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods)) baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods)) leadLine1 = math.avg(conversionLine, baseLine) leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods)) TREND = ta.ema(math.avg(leadLine1,leadLine2),displacement) //plot(conversionLine, color=#2962FF, title="Conversion Line") //plot(baseLine, color=#B71C1C, title="Base Line") //plot(close, offset = -displacement + 1, color=#43A047, title="Lagging Span") plot(TREND, color=#2962FF, title="TREND") p1 = plot(leadLine1,style=plot.style_line, offset = displacement - 1, color=#A5D6A7, title="Leading Span A") p2 = plot(leadLine2,style=plot.style_line, offset = displacement - 1, color=#EF9A9A, title="Leading Span B") fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90)) close_price = ta.sma(close,1) pc = plot(close_price,style=plot.style_line, color=#2a0ab9, title="Price Close") if (not na(k) and not na(d)) if (co and k < OverSold)and(close_price > TREND) strategy.entry("BUY order", strategy.long, comment="BUY order") strategy.exit("exitBUY", "BUY order", profit = Profit, loss = Stop) if (cu and k > OverBought)and(close_price < TREND) strategy.entry("SELL order", strategy.short, comment="SELL order") strategy.exit("exitSELL", "SELL order", profit = Profit, loss = Stop) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)