
移動平均トレンド追跡戦略は,単純移動平均と急速移動平均の組み合わせを使用して,市場のトレンド方向を判断し,取引信号を生成する. 価格が単純移動平均と急速移動平均を上から穿越すると多し,価格が単純移動平均と急速移動平均を下から穿越すると空になる. この戦略は,動的に後退なく最適化され,トレンドの変化を捉えるリアルタイム取引信号である.
この策略は,sma関数を使用して,50周期のシンプル移動平均smaを計算し,急速移動平均fsmaを計算する.fsmaの計算は,smaの基礎に,priceのn周期標準差の6倍を足したものである.
策略は,2つのブーリアン変数longとshortを使用して,買い上げと空白状態を記録する.価格がsmaとfsmaを上空したとき,longは1で買い上げ;価格がダウンしたとき,longは-1で平仓する.ショート変数は空白状態を処理する同様の論理を使用する.
策略は,トレンドの判断を記録するためにトレンド変数を使用します.価格がfsmaとsmaより高いとき,トレンドは1で,上昇傾向を示します.価格がfsmaとsmaより低いとき,トレンドは-1で,下降傾向を示します.
トレンドのリアルタイム判断により,ロングとショートの取引シグナルを生成する. トレンドが下から上へと転じるとき,価格がfsmaより高い場合は,多めにする. トレンドが上から下へと転じるとき,価格がsmaより低い場合は,空っぽにする.
この戦略は,トレンド判断と突破取引の方法を考慮し,トレンドの転換がもたらす取引機会を効果的に捉えるようにしています.
双重確認モデルを使用して,同時に2つの移動平均を検出することで,偽突破を効果的にフィルターすることができます.
トレンド判断とブレイク取引を組み合わせて,トレンドの転換点での機会を捉えることができます.
逆行テストと最適化,すべての取引信号はリアルタイムで生成され,曲線なしのフィット.
戦略の論理はシンプルで明快で,理解し,修正しやすい.
ビジュアル配置パラメータ,長さ周期,倍数など,市場に応じて調整できます.
この戦略は,頻繁に取引し,損失を逆転させる可能性が高い.
移動平均は,それ自体が後退的な影響で,トレンドの転換を逃しているかもしれない。
損失を抑制する仕組みがなく,単一損失をコントロールできない.
パラメータが不適切である場合,取引が頻繁すぎたり,遅すぎたりする可能性があります.
リスク1と2では,適当な平均線周期を延長し,撤回ストップを追加することができます.
リスク3では,パーセンテージストップまたはワンストップを設定できます.
リスク4では,単一の固定パラメータを避けるため,異なる市場に対応してパラメータを調整する必要があります.
トレンドフィルタリング条件を追加し,MACD,DMIなどの指標を使用してトレンドを確認する.
KD,RSIなどの指標を活用し,超買い超売りの状況と併合して入場する.
トラッキング・ストップ,パーセンテージ・ストップなど,全体的なストップメカニズムを追加する.
ポジションのサイズを動的に調整するなど,ポジション管理モジュールを追加します.
パラメータの設定を最適化して,異なる状況サイクルにより効果的に適応させる.
機械学習モジュールを追加し,AI技術を活用してパラメータを自動的に最適化します.
複合的な戦略を立てて,他の指標を活用して,偽の突破を防ぎます.
ディープ・ラーニング技術を使って,より複雑なトレンドパターンを識別する.
移動平均線トレンド追跡戦略は,全体として比較的単純なトレンド追跡戦略である.それは,快慢平均線の組み合わせを活用して,トレンドの方向を補助的に判断し,トレンドの転換点でトレンドの切り替えを行い,価格のトレンドの転換を効果的に捕捉することができる.しかし,この戦略には,頻繁な取引,遅滞などのリスクなどの問題もある.将来の最適化の方向には,トレンドフィルタ,ストップ・ロスのモジュール,動的調整パラメータなどの追加が含まれている.全体的に言えば,この戦略は,トレンド追跡入門戦略としてより適している.しかし,実際には,市場向けに最適化調整を施す必要がある.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
tri=input(false, title="Use triangles?")
r(src, n)=>
s = 0.0
for i = 0 to n-1
s := s + ((n-(i*2+1))/2)*src[i]
x=s/(n*(n+1))
x
l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)
trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]
strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and src_>h)
strategy.entry("Short", strategy.short, when=trend==-1 and src_<l)
long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]
barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na)
plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top)
//shortenter=
a1=plot(plots? l : na, color=color.blue, linewidth=1)
//longenter=
a2=plot(plots? h : na, color=color.blue, linewidth=1)
fill(a1, a2, color=color.blue)
//stopshort=
b1=plot(plots? hr : na, color=color.navy, linewidth=1)
//stoplong=
b2=plot(plots? lr : na, color=color.navy, linewidth=1)
fill(b1, b2, color=color.navy)