
この戦略は,平均線とEMAを利用して,時間枠の間のトレンド取引を実現する戦略である. この戦略は,異なる周期のSMA,EMA,およびK線実体によるトレンド方向判断によって,低リスクのトレンド追跡を実現する戦略である.
この戦略は,主に3つの周期の異なるSMA平均線を比較して,価格動きを判断する.さらに,実体方向を判断するEMAを使用する.
具体的には,戦略は3周期SMA平均線を使用し,3周期,8周期,10周期SMAを使用しています.価格が3周期平均線以下であるときは下落状態と見なされ,価格が平均線に戻ったときに買取信号を発します.
さらに,戦略は5サイクルEMAを活用して,Kラインの方向性を判断し,購入時にその方向性を確認する.
ポジション管理では,戦略は,利益の回数または最大ポジション保持周期を,ストップ・ローズとして設定する.
この戦略は,異なる時間周期の均線を組み合わせて,トレンドの判断を実現し,市場騒音を効果的にフィルターし,中長期トレンドを追跡する.戦略のパラメータは,最適化され,歴史の反省で良好なパフォーマンスを発揮する.
さらに,戦略はEMAの判断に加えられ,K線実体の下向きの買い方を避け,不必要な滑点損失を減らすことができる.
この戦略は安定し,信頼性があり,中長線追跡に適しています.
この戦略はパラメータに敏感であり,3つのSMAサイクルまたはEMAサイクルを不適切に設定すると,取引信号の質が低下する.異なる品種に対してパラメータの最適化が必要である.
策略は大幅な空飛躍や空隙を考慮していない.重大なニュースが価格を大幅に空飛躍させた場合,一定の損失が生じることがあります.このリスクを回避するために,価格のストップを設定できます.
より多くの周期パラメータを追加して,多時間枠のEMAまたはSMAの比較を形成することを考慮し,戦略の傾向判断をより正確にすることができる.
特定の幅の価格停止の設定をテストし,利益の保証を前提に,極端な市場の損失を減らすことができます.
動的最適化のためのパラメータを導入する機械学習を導入し,リアルタイム市場の状況に応じて戦略パラメータを調整することができます.
この戦略は,全体的に安定して信頼性があり,平均線を比較してトレンドの方向を判断し,EMAフィルタリング信号で補足する.パラメータ最適化と風制御設定により,戦略の勝利率と収益率をさらに向上させることができる.さらなる研究と応用に値する.
/*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"}]
*/
//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)
// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")
// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)
// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]
// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])
// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))