
この戦略は,2つの異なるパラメータのEMA平均線を計算し,Golden Cross ((金叉) とDeath Cross ((死叉) の均線が発生したときに取引信号を発するトレンド追跡型のアルゴリズム取引戦略である.この戦略は,複数のEMA均線を同時に組み合わせて,利潤退出を行い,リスクを制御するために止損点を設定する.
この戦略は,4つのEMA平均線を使用し,これは,快速EMA平均線と遅いEMA平均線のセットであり,それらの交差は,買入と売却のシグナルを生成するために使用される.さらに,この戦略は,早速EMAと遅いEMAの間のパラメータの間の2つのEMA平均線を使用し,早期に部分的にまたは完全にポジションを外して,利益をロックします.
具体的には,高速EMA上では遅いEMAを突破すると,買入シグナルが生じ,高速EMA下では遅いEMAを突破すると,売出シグナルが生じます.これは典型的な二重EMA移動平均クロス戦略である.トレンドをよりよく追跡し,率を高めるために,この戦略は,ポジションに入ってから,高速EMA上では第2のEMA平均線を突破するとか,または高速EMA下では第3のEMA平均線を突破すると,選択的に部分的にまたは完全にポジションを退出する.
さらに,この戦略は,損失の拡大を防止するために,長線と短線の2つのストップポイントを設定しています.具体的には,多単一のストップ幅は入場価格の6%に設定され,空単一のストップ幅は入場価格の3%に設定されています.
典型的な二重EMA移動平均クロス戦略に比べて,この戦略の主要な利点は以下の通りである.
複数のEMA均線を利潤退出に設定することで,利潤をよりよくロックし,利潤が次回調整で縮小するのを防ぐことができます.
空頭ポジションは,小幅のストップ・ロスを有し,より大きな正常行情の振動に耐え,頻繁なストップ・ロスを防止する.
異なるパラメータのEMA平均線を設定して,市場状況に応じて最適な退出点を選択できます.
整体策略は,中長線トレンドの利点を捉えるための優れたトレンド追跡能力を備えています.
この戦略の主なリスクは以下の通りです.
震動的な状況では,EMA平均線で生成される取引シグナルが頻繁で,過剰取引が起こりやすい.
ショートラインのストップポイントは,極端な事態を防ぐだけで,戦略のアカウントの大幅な撤回を防ぐことはできません.
この戦略の撤回リスクは依然として存在し,長期にわたる調整状況に直面すると,収益は大幅に縮小する可能性があります.
このポリシーは,パラメータの調整に敏感であり,不適切な配置により,ポリシーは失効する可能性があります.
この戦略は,上記のリスクを考慮して,以下のような点で最適化できます.
機械学習のアルゴリズムを増やし,トレンド判断を支援し,誤った取引の確率を下げる.
市場変動に応じて,自主的な止損メカニズムを追加し,止損幅を動的に調整できます.
資金活用率を設定し,戦略口座の過剰な資金占有を回避し,ポジション管理メカニズムを増やす.
取引品種をり,トレンドがはっきりした,波動が大きい標本を取引する.
パラメータ最適化モジュールを追加し,パラメータの自動最適化と更新を実現する.
双EMA移動平均線交差戦略は,全体として,費用対効果の高いトレンド追跡戦略である.それは,複数のEMA平均線を設定して,利益の退出,空頭小ストップ,トレンド追跡能力の強さなどの利点がある.しかし,この戦略には,パラメータの調整を最適化する必要があり,機械学習アルゴリズムなどの戦略の安定性をさらに向上させるための補助的なリスクもあります.全体的に,この戦略は,一定の取引経験を持つ投資家にアルゴリズム取引を行うのに適しています.
/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RealTraderAkeme
//@version=5
strategy("AKEME_EMA_CROSS_V6", overlay=true)
////////////////////////////////////////////////////////////PARAMETERS/////////////////////////////////////////////////////////////////
emaFast_op = input(title="Fast_EMA", defval=6)
emaSlow_op = input(title="Slow_EMA", defval=26)
emaExit_op = input(title="Sell_EMA_Exit",defval=10)
emabuyExit_op = input(title="Buy_EMA_Exit",defval=20)
Order_Value = input(defval=1000, title="Order_Value in Pounds")
Direction_Of_Trade = input(title="Trade Direction", defval="Both")
////////////////////////////////////////////////////////////INPUTS//////////////////////////////////////////////////////////////////
fastEMA = ta.ema(close, emaFast_op)
slowEMA = ta.ema(close,emaSlow_op)
emaExit = ta.ema(close,emaExit_op)
emabuyExit = ta.ema(close,emabuyExit_op)
Entry_Ratio = strategy.openprofit/Order_Value
//////////////////////////////////////////////////////////GRAPHS//////////////////////////////////////////////////////////////////
plot(fastEMA, color=color.orange, linewidth = 2)
plot(slowEMA,color = color.blue, linewidth = 2)
plot(emaExit,color = color.gray, linewidth = 2)
plot(series=emabuyExit, color= color.rgb(210, 74, 235), linewidth=2)
/////////////////////////////////////////////////////Conditions//////////////////////////////////////////////////////////////////////
longOK = (Direction_Of_Trade == "Long") or (Direction_Of_Trade == "Both")
shortOK = (Direction_Of_Trade == "Short") or (Direction_Of_Trade == "Both")
///////////////////////////////////////////////////////////ENTRIES&EXITS///////////////////////////////////////////////////////////////
longCondition = ta.crossover(fastEMA, slowEMA) and longOK
if (longCondition)
strategy.entry("Buy", strategy.long)
shortCondition = ta.crossunder(fastEMA, slowEMA) and shortOK
if (shortCondition)
strategy.entry("Sell", strategy.short)
if (strategy.position_size > 0 and shortCondition)
strategy.exit(id="exit Buy", stop=close)
if (strategy.position_size < 0 and longCondition)
strategy.exit(id="exit Sell", stop=close)
/////////////////////////////////////////////////////TAKE PROFIT CONDITIONS////////////////////////////////////////////////////////
if ta.crossunder(fastEMA, emabuyExit) and Entry_Ratio > 0.08333
strategy.close("Buy",comment = "Exit")
if ta.crossover(fastEMA, emaExit) and Entry_Ratio > 0.016666
strategy.close("Sell",comment = "Exit")
if Entry_Ratio > 0.4166666 //0.4166666
strategy.close("Buy",comment = "Exit", qty_percent = 100)
if Entry_Ratio > 0.0833333//0.0833333
strategy.close("Sell",comment = "Exit")//50
if Entry_Ratio > 0.1111111//4000
strategy.close("Sell",comment = "Exit", qty_percent = 50)
if ta.crossover(fastEMA, emaExit) and Entry_Ratio > 0.278 //Percentage
strategy.close("Sell",comment = "Exit")
////////////////////////////////////////////STOP LOSS AS PERCENTAGE OF ENTRY CONDITIONS///////////////////////////////////////////
if Entry_Ratio < -0.05555555555
strategy.close("Buy",comment = "Exit")
if Entry_Ratio < -0.027777777777
strategy.close("Sell",comment = "Exit")// The Sell Stoloss is half the buying stoploss.