これは,2つのSMAのみを使用する取引戦略である.この戦略は,遅いSMAラインを使用してトレンドの方向性を定義し,速いSMAラインを使用して特定の入場点を決定する.この戦略は,時間レベルおよびそれ以上の周期の暗号通貨取引に適用されます.
この戦略は,速いSMA線と遅いSMA線を計算してトレンドの方向を判断する.具体的には:
慢速SMA線 ((青) は,トレンドの方向を定義するために使用される. 価格が慢速SMAより低ければ,下降トレンドとして定義され,価格が慢速SMAより高ければ,上昇トレンドとして定義される.
急速SMA線 ((赤) は,特定の入札時刻を決定するために使用される.上昇傾向下では,K線閉店価格が開店価格より低く,急速SMAより低いときは,多めに;下降傾向下では,K線閉店価格が開店価格より高く,急速SMAより高いときは,空いて.
この戦略は同時にK線実体色を考慮し,この戦略で定義されたトレンド方向でのみ入場する.つまり,上昇傾向の下では多単数信号を見て,下降傾向の下では空単数信号を見て,逆転取引を避ける.
上記のリスクに対して,以下の方法で最適化できます.
MACDなどの指標と組み合わせたトレンド判断.
リスクコントロールのストップ・ロズ戦略に追加する
パラメータ最適化モジュールを追加し,パラメータ自在化を可能にします.
入学確認の指標を増やし,余剰入学を避ける.
この戦略は以下の点で最適化できます.
パラメータ最適化。 パラメータ最適化モジュールを追加して,異なる市場環境に応じてSMAパラメータを自動的に調整し,パラメータ自在化を可能とする。
入場確認。MACD,ブリン帯などの指標に加入し,SMAトレンドの多方検証を行い,誤信号を避ける。
止損策 移動止損,時間止損などの策を設定し,入場後に早期に止損し,リスクを制御する.
撤回制御 ◎最大撤回比率を設定し,撤回比率に達するとすべてのポジションを閉鎖し,損失の拡大を避ける ◎
跨時間周期検証.より高い時間周期指標を導入して,より低周期SMA信号の信頼性を検証することができる.
多空の選択を追加する. 多空のみまたは空きのみの切り替えを追加して,異なる市場状況に適応する.
この戦略の全体的な考え方は明確で分かりやすく,簡単な常用指標を使用してトレンドを判断し,信頼性が高い。しかし,一定の利益の余地が限られ,リスク管理が不十分であるなどの問題がある。次のステップは,パラメータ最適化,リスク管理などの面で戦略最適化を行うことができ,戦略パラメータを市場環境に適合させ,取引リスクを効果的に制御することができ,戦略優位性をさらに高めることができる。
/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Trend SMA Strategy v1.1", shorttitle = "Trend SMA str 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
fastlen = input(5, "fast SMA Period")
slowlen = input(15, "slow SMA Period")
only = input(false, "Only long?")
fastsma = ema(close, fastlen)
slowsma = ema(close, slowlen)
trend = low > slowsma ? 1 : high < slowsma ? -1 : trend[1]
up = trend == 1 and low < fastsma and close < open ? 1 : 0
dn = trend == -1 and high > fastsma and close > open ? 1 : 0
plot(fastsma, color = red, title = "Fast SMA")
plot(slowsma, color = blue, title = "Slow SMA")
longCondition = up == 1
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = dn == 1
if (shortCondition)
strategy.entry("Short", strategy.short, only == true ? 0 : na)