戦略をフォローするSMAシステム傾向

作者: リン・ハーンチャオチャン,日付: 2024-02-23 12:29:51
タグ:

img

概要

この戦略は"SMAシステムトレンドフォロー戦略"と呼ばれる.主なアイデアは,異なるパラメータ長さのSMAラインに基づいて取引信号を構築し,リスクを制御するためのストップ・ロスのメカニズムでブレイクポイントで市場に参入することです.

戦略原則

この戦略は,SMA1とSMA2という2つのSMAラインを使用する.SMA1の長さは1であり,SMA2の長さは3である.これらの2つのSMAラインを計算することによって,SMA1がSMA2を超えると購入信号が生成される.SMA1がSMA2を下回ると販売信号が生成される.これは価格の傾向を把握することを目的としている.

具体的には,戦略は,ta.crossover と ta.crossunder 関数を通じて SMA 線間のクロスオーバー関係を判断し,longCondition と shortCondition のブール変数を生成する.longCondition が true ならば,買い信号が生成される.shortCondition が true ならば,売り信号が生成される.戦略は,信号点で市場に入り,蓄積された利益を追跡するために,profitAccumulated と lastTradeProfit の変数を更新する.

リスク管理のために,戦略は固定点に基づくストップ・ロスのメカニズムも設定します.入口点から価格が設定されたストップ・ロスのポイントに達すると,ストップ・ロスの注文の終了が引き発されます.

利点分析

この戦略の最大の利点は,SMAラインのトレンド追跡能力を活用して価格動向の変化を効果的に把握することにある.シングルライン戦略と比較して,ダブルライン戦略は,トレンド方向を決定し,取引信号を生成するためにライン間のクロスオーバー関係を利用することができる.また,ストップ損失メカニズムはシングル損失を効果的に制御することができる.

リスク分析

この戦略の主なリスクは,移動平均戦略が誤った信号を生む傾向があることである.価格が振動すると,SMA線が頻繁に横断され,不必要な取引信号が生じる可能性がある.この時点で,効果的なストップ損失なしに大きな損失が発生する可能性があります.

オプティマイゼーションの方向性

戦略は以下の側面で最適化できます.

  1. SMAパラメータを調整し,バックテストで移動平均長さの最良の組み合わせを見つけます.

  2. フィルタリング条件を増やし,偽信号を避けるため,移動平均のクロスオーバー点に近い価格突破条件を設定する.

  3. 異なるタイプのストップ・ロスト・メソッドをテストできる.例えば,モバイル・ストップ・ロスト,待機中のオーダー・ストップ・ロストなど.

  4. 資本利用効率を最適化するために ポジションサイズ制御を追加します

結論

一般的に,これは典型的なトレンドフォロー戦略である.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)


もっと