移動平均に基づく独自のトレンドフォロー戦略


作成日: 2023-11-23 15:54:37 最終変更日: 2023-11-23 15:54:37
コピー: 0 クリック数: 581
1
フォロー
1617
フォロワー

移動平均に基づく独自のトレンドフォロー戦略

概要

この戦略は,candleの实体部分に基づいています.EMA指標と組み合わせて,市場の傾向の方向を判断し,ORIGINAL PRIMITIVE TREND TRACKINGの効果を実現します. 陽線が大きいときは多行し,陰線が大きいときは空行して,市場傾向を追跡します.

戦略原則

  1. 最後の30のK線のcandle実体平均長さを計算する
  2. 最新のK線が陽線で,実体長がsbody/2より大きいとき,多めに
  3. 取引が完了すると,最新のK線が陰線で,実体長がsbody/2より大きく,現在の取引が利潤状態である場合,平多取引となります.
  4. 最新のK線が陰線であり,実体長がsbody/2より大きいとき,空白する
  5. 空白のとき,最新K線が陽線で,実体長がsbody/2より大きく,現在のポジションが利潤状態である場合,空白ポジション

優位分析

この戦略は以下の利点があります.

  1. シンプルで理解し,実行しやすい
  2. candle 構造の判断により,Trading Breakouts に何らかの影響がある
  3. トレンドを追跡し,大きな動きを捉える
  4. 利回りのポジションの後に,利回りをロックする有利な速度の停止

リスク分析

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

  1. 偽侵入を効果的にフィルターできず,不必要な損失を招く可能性があります.
  2. キャンデルのみによる判断 滑り場や夜間飛行の影響を受けやすい
  3. 取引頻度の高さを考慮していない

リスクは以下の方法で軽減できます

  1. 他の指標と組み合わせたフィルター信号
  2. ストップ・ロスの策定
  3. オプティマイゼーションパラメータ,取引頻度制御

最適化の方向

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

  1. 突破指数を増やし,偽突破をフィルターする
  2. 単一損失を減らすために ストップ・ロスを増やす
  3. トレンド指数と組み合わせて,トレンドの方向をチェックする
  4. パラメータ最適化,最適なパラメータ組み合わせを見つける

要約する

この戦略は,原始的なシンプルなタイプのトレンド追跡戦略の1つである。キャンドル構造の判断により,トレンドの方向を効果的に追跡することができる。同時に,急速なストップ・ロスの仕組みを設定し,利益をロックすることができる。この戦略は,トレンド追跡ポートフォリオを補完できるが,リスクを下げるために最適化する必要がある。将来,他の指標と組み合わせた効果をさらに研究する価値がある。

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

//@version=3
strategy(title = "Noro's Primitive Strategy v1.0", shorttitle = "Primitive str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(01, defval = 01, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()