この戦略は,ストコスタティックオシレーターと移動平均を組み合わせ,ストコスタティックインジケーターの過剰購入および過剰販売状況と移動平均のトレンドを観察することによって取引信号を生成する.ストコスタティックインジケーターが過剰購入ゾーンにあり,移動平均がダウンしているとき,ショート信号,過剰販売ゾーンにあり,移動平均が上昇しているとき,ロング信号を生成する.さらに,ストコスタティックインジケーターフィルターを導入し,ストコスタティックKラインが一定の数回のKラインで50を下回った後にD線を横切ったときに対応する取引信号も生成できる.戦略はリスク管理のためにストップロスを設定する.
ストカスティックオシレーターを計算して,K線とD線を得ます.パラメータはストカスティック期間,Kスムーズ化,Dスムーズ化,過剰購入ゾーン,過剰販売ゾーンを含む調整可能です.
設定可能な期間で,決済価格をデフォルトで使って移動平均を計算する.
ストカスティックインジケータフィルターを計算します.K線が一定の数K線で50を下回ると,フィルター信号が生成されます.
長い信号を生成する条件:ストカスティック指標は過売りゾーンで上向きに突破するか,ストカスティック指標はフィルター信号と移動平均を上向きに突破します.
ショートシグナルを生成する条件: ストキャスト指標は過買いゾーンで下向きに横切る OR ストキャスト指標のフィルター信号 AND 移動平均値は下向きです.
ロングポジション閉じる条件:ストカスティックK線が移動平均線の上を横切って,平均線が下向きに回る.
ショートポジション閉じる条件:ストカスティックK線が移動平均線を下に横断し,平均線が上向きに回転します.
ポジションマネジメントは 既定金利の10%を固定し 既定金利の2%をストップ・ロスを設定します
過剰購入/過剰販売とトレンドの特徴を組み合わせることで 傾向を追いかけて殺すことができます
ストキャスト指標フィルターは,振動する市場での頻繁な取引を避けます.
ストップ・ロスの設定は 引き下げを制御するのに役立ちます
コード構造は明確で パラメータは調整可能で,さらに最適化するのに適しています
ストカスティックオシレーターには一定の遅延があり 購入・販売の良いポイントを 見逃す可能性があります
トレンドターニングポイントでの注文の把握の精度が低く,ストップロスの頻度は高くなることがあります.
固定比率基金の管理は,連続損失の場合,大きな引き上げがあります.
信号の精度を向上させるために,価格行動,その他の補助指標など,より多くのフィルタリング条件を導入する.
強い信号と弱い信号に分け 強い信号が出るとポジションを増やします
トレンドターニングポイントの判断を最適化し,より多くの市場の動きを把握します.
ポジションの管理を最適化し,変動的利益損失比に基づいてポジションを調整することを検討する.
最適なパラメータを見つけるために 異なるパラメータの組み合わせを試してみてください
ストーカスティックオシレーターに基づいたこの戦略は,動平均を組み合わせてトレンドを判断し,ストーカスティック指標そのもののフィルタリング機能を活用し,比較的信頼できる取引信号を生成する.戦略の全体的な考え方は明確で,トレンド市場での使用に適しています.しかし,ストーカスティックオシレーターの遅れにより,市場のターニングポイントでのパフォーマンスが低下し,全体的な適応性と強度がさらなる検討を必要とします.将来,戦略はフィルタリング条件,ポジション管理,パラメータ最適化などの側面から改善することができます.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"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/ // © Pablo_2uc //@version=5 strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true) // Parámetros del Estocástico length = input.int(14, title="Longitud Estocástico") smoothK = input.int(3, title="Suavizado K") smoothD = input.int(3, title="Suavizado D") oversold = input.int(20, title="Sobreventa") overbought = input.int(80, title="Sobrecompra") // Parámetros de la Media Móvil maLength = input.int(9, title="Longitud MA") maSource = input(close, title="Fuente MA") // Capital inicial capital = 5000 // Tamaño de posición (10% del capital) positionSize = capital * 0.10 // Stop Loss (2% del precio de entrada) stopLossPercent = input.int(2, title="Stop Loss (%)") / 100 // Número de ruedas para el filtro estocástico filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico") // Cálculo del Estocástico k = ta.sma(ta.stoch(close, high, low, length), smoothK) d = ta.sma(k, smoothD) // Cálculo de la Media Móvil ma = ta.sma(maSource, maLength) // Filtro estocástico stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods) // Condiciones de entrada en largo y corto longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1] shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1] // Condiciones de salida exitLongCondition = ta.crossover(k, ma) and ma < ma[1] exitShortCondition = ta.crossunder(k, ma) and ma > ma[1] // Estrategia if (longCondition) strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent)) if (shortCondition) strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent)) // Cierre de posiciones if (exitLongCondition) strategy.close("Long") if (exitShortCondition) strategy.close("Short")