この戦略は,ストコスタスティックオシレーターと移動平均 (MA) を組み合わせて,過剰購入および過剰販売の市場状況を決定し,移動平均のトレンド方向性を利用して取引方向性を決定する.ストコスタスティックオシレーターが過剰販売エリアで上向きに横切って移動平均が上昇傾向にあるとき,戦略はロングポジションを開く.ストコスタスティックオシレーターが過剰購入エリアで下向きに横切って移動平均が下向きに傾向にあるとき,戦略はショートポジションを開く.さらに,戦略はリスク管理のためにストップロスを設定する.
この戦略は,ストカスティックオシレーターと移動平均を組み合わせて,過剰購入および過剰売却の市場状況を把握し,移動平均のトレンド方向性を利用して取引信号をフィルターし,リスクを制御するためにストップロスを設定する.戦略の論理は明確で理解し,実行するのが簡単です.しかし,戦略にはインジケーターレイグや頻繁な取引などのいくつかの制限もあります.他の技術指標を導入し,ストップロスの方法を最適化し,パラメータを動的に調整し,ポジションサイジングを実装することで,戦略のパフォーマンスと強度をさらに向上させることができます.
/*backtest start: 2024-04-22 00:00:00 end: 2024-04-29 00:00:00 period: 1m basePeriod: 1m 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/ // © Pablo_2uc //@version=5 strategy("Estrategia Stoch + MA c/ SL", 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 = 500 // Tamaño de posición (10% del capital) positionSize = 1 // Stop Loss (2% del precio de entrada) stopLossPercent = input.int(2, title="Stop Loss (%)") / 100 // 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) // Condiciones de entrada en largo y corto longCondition = ta.crossunder(k, oversold) and ma > ma[1] shortCondition = ta.crossover(k, overbought) 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")