EMA1 - EMA2 の長さ ローレンツ線 = EMA3 + CI
この戦略は,多次元市場視点を提供するために,現在の時間枠とより高い時間枠の両方でローレンツィアンラインを計算する.取引シグナルは,ローレンツィアンラインとの価格クロスオーバーに基づいており,見直しメカニズムによって確認される.価格がローレンツィアンラインを超越し,見直し期間中の最低価格がローレンツィアンラインを下回るときに購入シグナルが起動される.販売シグナルは逆の方法で動作する.
この戦略は,ユーザーによって定義された目標パーセントに基づいて出口点を決定するターゲット価格メカニズムも導入している.さらに,リスク管理のために動的ストップロスを実装している.
多時間枠分析:現在の時間枠とより長い時間枠からのローレンツ線を組み合わせることで,戦略はより包括的な市場動向を把握し,誤った信号を減らす.
ダイナミック・トレンド識別:ローレンツ分類法は市場の変化に迅速に適応し,敏感なトレンド識別能力を提供します.
シグナル確認メカニズム: 取引シグナルを確認するためにバックバック期間を使用することで,誤った取引の確率が効果的に減少します.
目標価格最適化: 目標パーセントを設定することで,戦略は有利な市場条件で利益を最大化することができます.
リスク管理: ダイナミックストップ・ロスのメカニズムを導入することで,各取引のリスクを効果的に制御できます.
ビジュアライゼーションと統計: 戦略は直感的なチャート表示と取引統計を提供し,戦略の分析と最適化を促進します.
柔軟性: 複数の調整可能なパラメータにより,トレーダーは異なる市場状況と個人的な好みに合わせて戦略を最適化できます.
パラメータ敏感性: 戦略のパフォーマンスは入力パラメータの選択に大きく依存します.パラメータの設定が不適切であれば,過剰取引または重要な機会を逃す可能性があります.
市場状況に依存:不安定な市場では,戦略は頻繁に誤った信号を生成し,連続した損失をもたらす可能性があります.
スリップリスク: 急速に変動する市場では,実際の実行価格がシグナル価格と大きく異なる可能性があります.
過度に最適化するリスク: 過去データに合わせてパラメータを過度に調整すると,過度に適合し,将来のライブ取引パフォーマンスに影響を与える可能性があります.
テクニカル・エラー:複雑なテクニカル・インジケーター計算に頼ることで,システムの故障やデータエラーが不正な取引決定につながる可能性があります.
これらのリスクを軽減するために,以下のようなことを推奨します.
ダイナミックパラメータ調整: 適応性のあるパラメータ調整メカニズムを実装し,市場の変動に基づいて EMA 長さと
追加フィルター:信号品質を改善するために,追加の技術的または基本的な指標をフィルターとして導入します.
機械学習統合: パラメータ選択と信号生成プロセスを最適化するために機械学習アルゴリズムを使用する.
多資産関連分析: より包括的な市場視点を提供するために,複数の関連資産からのデータを考慮する.
ニュースイベント統合:重要な経済データリリース中に戦略行動を調整するためにニュースイベント分析機能を追加します.
波動性調整: 市場の波動性に基づいて目標パーセントとストップ損失レベルを動的に調整します.
リスク管理の強化: 波動性に基づくポジションサイズなど,より洗練されたポジション管理とリスク管理戦略を実施する.
これらの最適化方向は,戦略の適応性と安定性を向上させ,さまざまな市場条件下で良好なパフォーマンスを維持することを目的としています.
ローレンツィアン分類多期目標戦略は,高度な技術分析方法とインテリジェントリスク管理メカニズムを組み合わせた包括的な取引システムである.多期分析,動的トレンド識別,目標価格最適化を通じて,この戦略はさまざまな市場条件で一貫した取引パフォーマンスを達成する可能性がある.しかし,パラメータ敏感性や市場依存性などの課題に直面している.継続的な最適化とリスク管理を通じて,トレーダーは潜在的なリスクを効果的に制御しながら戦略の利点を完全に活用することができる.将来の開発は,常に変化する市場環境に合わせて戦略の適応性と知性を向上することに焦点を当てなければならない.
/*backtest start: 2023-07-31 00:00:00 end: 2024-07-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Lorenzian Classification Strategy with Target and Multi-Timeframe", overlay=true) // Input parameters length = input.int(5, "Lorenzian Length", minval=1) threshold = input.float(1.0, "Threshold", step=0.1) lookback = input.int(3, "Lookback Candles", minval=1, maxval=20) targetPercentage = input.float(1.5, "Target Percentage (%)", step=0.1) // Target percentage for exit higherTimeframe = input.timeframe("D", "Higher Timeframe") // Higher timeframe for multi-timeframe analysis // Lorenzian Classification calculation for current timeframe ema1 = ta.ema(hlc3, length) ema2 = ta.ema(ema1, length) ema3 = ta.ema(ema2, length) d = ema1 - ema2 ci = d / (0.015 * ta.ema(math.abs(d), length)) * 100 lorenzian = ema3 + ci // Lorenzian Classification calculation for higher timeframe hlc3_htf = request.security(syminfo.tickerid, higherTimeframe, (high + low + close)/3 ) ema1_htf = ta.ema(hlc3_htf, length) ema2_htf = ta.ema(ema1_htf, length) ema3_htf = ta.ema(ema2_htf, length) d_htf = ema1_htf - ema2_htf ci_htf = d_htf / (0.015 * ta.ema(math.abs(d_htf), length)) * 100 lorenzian_htf = ema3_htf + ci_htf // Signal generation crossUp = ta.crossover(close, lorenzian) crossDown = ta.crossunder(close, lorenzian) // Determine color based on price position relative to the line lineColor = close > ema3 ? color.green : color.red lineColorH = close > ema3_htf ? color.blue : color.red // Plot the line with dynamic color plot(ema3, color=lineColor, title="EMA3", linewidth=2) plot(ema3_htf, color=lineColorH, title="EMA3 HTF", linewidth=2) // Function to check for opposite movement oppositeMove(isLong) => if isLong lowest = ta.lowest(low, lookback) lowest < lorenzian[lookback] else highest = ta.highest(high, lookback) highest > lorenzian[lookback] // Generate buy and sell signals buySignal = crossUp and oppositeMove(true) sellSignal = crossDown and oppositeMove(false) // Calculate and manage target price var float targetPrice = na var float plotTargetPrice = na var float entryPrice = na // Variables to track trade outcomes var int targetMet = 0 var int targetNotMet = 0 var int totalTrades = 0 if (buySignal) strategy.entry("Buy", strategy.long) entryPrice := close targetPrice := entryPrice * (1 + targetPercentage/100) plotTargetPrice := targetPrice totalTrades := totalTrades + 1 if (sellSignal) strategy.entry("Sell", strategy.short) entryPrice := close targetPrice := entryPrice * (1 - targetPercentage/100) plotTargetPrice := targetPrice totalTrades := totalTrades + 1 // Check if target price is met to exit if (not na(targetPrice)) if (strategy.position_size > 0 and high >= targetPrice) // Long position exit condition strategy.close("Buy") targetPrice := na entryPrice := na targetMet := targetMet + 1 else if (strategy.position_size > 0 and low < entryPrice * (1 - targetPercentage/100)) // Stop loss for long strategy.close("Buy") targetPrice := na entryPrice := na targetNotMet := targetNotMet + 1 if (strategy.position_size < 0 and low <= targetPrice) // Short position exit condition strategy.close("Sell") targetPrice := na entryPrice := na targetMet := targetMet + 1 else if (strategy.position_size < 0 and high > entryPrice * (1 + targetPercentage/100)) // Stop loss for short strategy.close("Sell") targetPrice := na entryPrice := na targetNotMet := targetNotMet + 1 // Reset plotTargetPrice when position is closed if (strategy.position_size == 0) plotTargetPrice := na // Plot signals and target price plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.purple, style=shape.triangledown, size=size.small) plot(plotTargetPrice, color=color.yellow, title="Target Price", style=plot.style_circles, linewidth=2) // Add alerts alertcondition(buySignal, title="Buy Signal", message="Lorenzian Buy Signal") alertcondition(sellSignal, title="Sell Signal", message="Lorenzian Sell Signal") // Calculate success percentage successPercentage = totalTrades > 0 ? (targetMet / totalTrades) * 100 : 0 // Create a table to display trade outcomes var table tradeStats = table.new(position.top_right, 2, 3, border_width=1) table.cell(tradeStats, 0, 0, "Targets Met", bgcolor=color.new(color.green, 30)) table.cell(tradeStats, 1, 0, "Targets Missed", bgcolor=color.new(color.red, 30)) table.cell(tradeStats, 0, 1, str.tostring(targetMet), bgcolor=color.new(color.green, 30)) table.cell(tradeStats, 1, 1, str.tostring(targetNotMet), bgcolor=color.new(color.red, 30)) table.cell(tradeStats, 0, 2, "Success Rate", bgcolor=color.new(color.blue, 30)) table.cell(tradeStats, 1, 2, str.tostring(successPercentage, "#.##") + "%", bgcolor=color.new(color.blue, 30))