均線交差戦略


作成日: 2023-11-23 16:42:58 最終変更日: 2023-11-23 16:42:58
コピー: 0 クリック数: 596
1
フォロー
1621
フォロワー

均線交差戦略

概要

均線交差策は,2つの異なるパラメータセットのSMA均線の交差を計算して取引信号を生成する.速いSMA均線がより遅いSMA均線を横切るときは,買入信号を生成する.より遅いSMA均線がより速いSMA均線を横切るときは,売出信号を生成する.この策は同時に2つのSMA均線パラメータを使用し,一組は買入点を決定し,もう一組は売出点を決定する.

戦略原則

この戦略は,SMA平均線パラメータの2つのセットを使用しています.smaB1smaB2そしてsmaS1smaS2smaB1そしてsmaB2購入シグナルを決定するために,それらはそれぞれ遅い平均線と速い平均線を表します.smaB1服を着るsmaB2購入のシグナルが作られるsmaS1そしてsmaS2販売シグナルを特定するために使用される,同じく,それぞれ遅い,より速い平均線を表す.smaS2下着を脱いでsmaS1販売シグナルが生成される時に.これは,異なる市場環境に適応して,購入と販売の条件を柔軟に調整することができます.

具体的には,この戦略は,閉じる価格のSMA値を計算し,リアルタイムで2つのSMA平均線の交差状況を監視することによって,購入と売却のタイミングを判断する. SMA快線を横切るときは,価格が正方向に上昇していると考えて,この時点で多めにする.

優位分析

この戦略の主な利点は以下の通りです.

  1. 双均線交差システムを使用し,市場変化に適応するために,取引条件を柔軟に調整できます.
  2. SMA平均線は,それ自体で部分的なノイズを消し去り,より信頼性の高い取引信号を生成します.
  3. SMAパラメータのカスタマイズされた組み合わせを許可し,異なる品種に対してパラメータを最適化できます

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 均線交差信号は遅滞し,ターニングポイント前後にすぐに信号を生成できない
  2. 不適切なSMAパラメータの組み合わせを選択すると,誤った信号が多すぎる可能性があります.
  3. 市場が激しく揺れ動いたときのシグナル効果は不十分かもしれない.

上記のリスクを制御するために,SMAパラメータの組み合わせを最適化して,動的ストップと組み合わせて利益をロックする方法などで改善することができます.

最適化の方向

この戦略は以下の点で最適化できます.

  1. より多くのSMAパラメータの組み合わせをテストし,最適なパラメータを探します.
  2. 取引量の確認を増加させ,価格の急激な変動時に誤ったシグナルを避ける
  3. 他の指標 (MACD,RSIなど) と組み合わせたSMA交差信号をフィルターする
  4. 利益を固定し,損失を減らすために,ストップ・ロスを増やす.

要約する

均線交差策は,二つのSMA均線の交差を計算することで,単純で効果的な取引信号を生成する.この策は,パラメータを柔軟に調整することを許し,異なる品種に適用し,一般的なトレンド追跡策である.パラメータ最適化,信号フィルタリングなどの方法によって,この策をさらに改良して,より信頼性の高い信号を生成することができる.

ストラテジーソースコード
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © melihtuna

//@version=4
strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent)

smaB1 = input(title="smaB1",defval=377)
smaB2 = input(title="smaB2",defval=200)
smaS1 = input(title="smaS1",defval=377)
smaS2 = input(title="smaS2",defval=200)
smawidth = 2

plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1')
plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2')
plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1')
plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2')

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => time >= start and time <= finish ? true : false 

longCondition = crossover(sma(close, smaB1),sma(close, smaB2))

if (window() and longCondition)
    strategy.entry("BUY", strategy.long)

shortCondition = crossover(sma(close, smaS2),sma(close, smaS1))

if (window() and shortCondition)
    strategy.entry("SELL", strategy.short)