
この戦略は,入場と出場のタイミングを判断するために,双EMA均線の金叉デッドフォークを使用する.具体的には,EMA線が下方向からゆっくりEMA線を突破すると金叉信号を生成し,多行する.EMA線が上方向から下方向からゆっくりEMA線を突破すると死叉信号を生成し,空きをする.この戦略は簡単で,非常に一般的な取引戦略である.
この戦略の核心となるコードは以下の通りです.
fast = input(25, title="Fast")
slow = input(75, title="Slow")
matype1=ema(source, fast)
matype2=ema(source, slow)
longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2)
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
この戦略は,まず,急激なEMA線が25回周期で,遅いEMA線が75回周期を持つ2つのEMA平均線をゆっくりと設定します. そして,2つのEMA線の値を計算します. 速いEMA線が下方から遅いEMA線を突破すると,longCondition条件が真になります. 速いEMA線が上方から下方から遅いEMA線を突破すると,shortCondition条件が真になります. 適切な条件を満たすと,多行または空行になります.
この戦略は,EMA平均線の平らな特性を利用し,市場ノイズを効果的にフィルターし,傾向の変化を素早く捉えることができます. 2つのEMA平均線間の金叉死十字交差は,取引リスクを効果的に制御する強力な取引信号です.
この戦略の利点は以下の通りです.
操作はシンプルで直感的で,理解しやすい.
EMAは市場波動を平らにして,False Signalを効果的にフィルターします.
金叉死叉は,より強力な取引信号であり,リスクを効果的に制御できます.
EMA周期を柔軟に調整し,異なる市場環境に適用できます.
他の技術指標の組み合わせで簡単に使用できます.
EMAパラメータを最適化することで,よりよい戦略効果が得られます.
この戦略にはいくつかのリスクがあります.
EMAの交差は頻繁に発生し,多くの無効取引シグナルを生成します.
EMAは後退しており,短線の機会を逃しているかもしれない.
EMAの交差だけでトレンドの転換点を決定することは不可能であり,一定の利益上限が存在する.
固定のEMA周期は市場の変化に適応できない.
資金の強い支援が必要で,そうでなければ, 派生のリスクが大きい.
ストップ・ロスの規制が厳しくなければ 損失は大きくなるでしょう
この戦略は以下の点で最適化できます.
EMAサイクルパラメータを最適化して,異なる市場状況に適応する.
MACD,ブリン帯など,他の指標のフィルタを追加し,信号の質を向上させる.
ATRのストップ,ADXなどのトレンド判断指標を追加し,無効取引を減らす.
タイムサイクル分析とトレンドの方向性を判断する
EMAサイクルを動的に最適化する機械学習の方法.
ポジション管理を最適化してリスクをコントロールする.
ストップ・ロスの戦略を最適化し,単発損失を減らす.
この戦略は,双EMA均線の金叉死叉交差を取引信号として使用し,より古典的なトレンドフォロー戦略を形成する. この戦略は,シンプルで使いやすい,他の技術指標と簡単に組み合わせられ,トレンド判断の要求が低い投資家に適しています. しかし,一定の利回上限とリスクも存在し,異なる市場環境に対応するために適切な最適化が必要である. 全体的に,この戦略は,投資業者による深い研究のための非常に良い戦略開発基盤を提供します.
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
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/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars
//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)
matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2020, minval=1800, maxval=2100)
// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
startYear, startMonth, startDate, 0, 0))
fast = input(25, title="Fast")
slow = input(75, title="Slow")
matype1=ema(source, fast)
matype2=ema(source, slow)
signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow)
hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
strategy.entry("Short", strategy.short)
//--------------------------------------------------------
//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)
vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open
volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open
cold1=#800000
cold2=#FF0000
cold3=color.orange
colu1=#006400
colu2=color.lime
colu3=#7FFFD4
ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na
barcolor(ac)