この策略は,SMA平均線システムに基づくトレンド追跡策略と呼ばれる.その主な考えは,異なるパラメータ長さのSMA平均線を利用して取引信号を構築し,突破点で入場し,同時に,ストップ・メカニズムによるリスク制御を組み合わせることです.
この戦略は,SMA1とSMA2の2つの平均線を使用します. SMA1の長さは1で,SMA2の長さは3です. この戦略は,SMA1のSMA2を横断する際に買入シグナルを生成し,SMA1の下のSMA2を横断する際に売り出しシグナルを生成し,価格のトレンドを捕捉するために,これらの2つのSMA平均線を計算します.
具体的には,戦略は,ta.crossoverとta.crossunderの関数によってSMA平均線の突破関係を判断し,その結果longConditionとshortConditionのブル変数を生成する.longConditionが真である場合,買入シグナルを生成し,shortConditionが真である場合,売出シグナルを生成する.戦略は,シグナルポイントで入場を行い,同時にprofitAccumulatedとlastTradeProfit変数を更新して累積利益を追跡する.
リスク管理のために,戦略はまた,固定ポイント数に基づいたストップメカニズムを設定している.入場点から,価格が設定されたストップポイントに達した場合,ストップポイントの平仓を触発する.
この戦略の最大の優点は,SMA均線のトレンド追跡機能を利用して,価格トレンドの変化を効果的に捕捉することです.単一均線戦略と比較して,双均線戦略は均線間の交差関係を利用してトレンドの方向を判断して取引信号を生成することができます.さらに,戦略は,単一損失を効果的に制御する止損機構を組み込んでいます.
この策略の主要なリスクは,均等線策が偽信号を生成しやすいことにある.価格が揺れると,SMA均等線が頻繁に交差し,不必要な取引信号を引き起こす可能性がある.この場合,止損効果がなければ,より大きな損失が生じる可能性がある.
この戦略は以下の点で最適化できます.
SMAパラメータを調整し,最適な平均線長組合せを探します. 最適なパラメータは,回転回測で得ることができます.
フィルタリング条件を追加し,均線交差点の近くで価格突破条件を設定し,偽信号を避ける.
移動式止損,吊り式止損など,さまざまな種類の止損方法をテストできます.
ポジションサイズのコントロールを高め,資金の利用効率を最適化します.
この戦略は,全体として典型的なトレンド追跡戦略である.これは,SMA平均線の突破関係を使用して価格のトレンド方向を判断し,トレンドの変更点で入場する.同時に,戦略は,リスクを制御するために固定されたストップ・ロスの機能を持つ.この戦略は,シンプルで実用的で,容易に理解できます.しかし,まだ深いテストと最適化が必要で,現場で安定した利益を得ることができます.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © cesarpieres72
//@version=5
strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true)
// Definir las variables de las medias móviles
sma1_length = input(1, title="SMA 1 Longitud")
sma2_length = input(3, title="SMA 2 Longitud")
// Calcular las medias móviles
sma1 = ta.sma(close, sma1_length)
sma2 = ta.sma(close, sma2_length)
// Condiciones para las señales de compra y venta
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)
// Acumular las ganancias
var float profitAccumulated = 0.0
var float lastTradeProfit = na
if (longCondition)
strategy.entry("Buy", strategy.long)
lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
profitAccumulated := strategy.netprofit
if (shortCondition)
strategy.entry("Sell", strategy.short)
lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
profitAccumulated := strategy.netprofit
// Mostrar las señales en el gráfico
plot(sma1, color=color.blue, title="SMA 1")
plot(sma2, color=color.red, title="SMA 2")
// Añadir stop loss
stopLossPips = input(5000, title="Stop Loss (en pips)")
stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick)
strategy.exit("SL", "Buy", stop=stopLossPrice)