
この戦略は,ランダムな振動指標 (ストキャスティック・オシレータ) と移動平均 (移動平均) を組み合わせて,市場の過買と過売り状態を判断し,移動平均のトレンド方向に応じて取引方向を決定します.ランダムな振動指標が超売り区間を横切って上向きに,移動平均が上昇傾向にあるとき,戦略は多頭ポジションを開きます.ランダムな振動指標が超買い区間を横切って下向きに,移動平均が低下傾向にあるとき,戦略は空頭ポジションを開きます.
この戦略は,ランダムな振動指数と移動平均線を組み合わせて,市場の超買い超売り状態を捉えながら,移動平均線のトレンド方向を利用して取引信号をフィルターし,リスクを制御するためにストップを設定します.戦略の構想は明確で,理解しやすく,実行できます.しかし,戦略には,指標の遅れ,頻繁な取引などの問題もあります.他の技術指標,最適化ストップの方法,動的調整パラメータ,ポジション管理などの方法を導入することにより,戦略のパフォーマンスと安定性をさらに向上させることができます.
/*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")