
この戦略は,多頭だけのトレンド追跡戦略であり,Aroon指標と線形回帰移動平均の二重確認によって取引シグナルを生成します. この戦略は,中長線トレンド取引に適用されます.
この策略は,アロン指数の上線と下線の交差点を用いてトレンドの方向を判断する.上線が下線から上線を突破すると買入シグナルを生成する.上線が上線から下線を突破すると売出シグナルを生成する.偽の突破をフィルターするために,策略はまた,線形回帰移動平均LSMAを補助判断基準として導入する.閉盘価格がLSMAより高い場合にのみ買入シグナルをトリガーする.
具体的には,この戦略の取引シグナル生成規則は以下の通りです.
買い信号生成条件:上線が下線を突破する ((Aroon指標は双線交差が上昇傾向を形成することを判定する) そして当日の閉盘価格がLSMA移動平均より高い ((閉盘価格は上昇傾向にある)
販売信号生成条件:上線が下線を突破した ((Aroon指標は双線交差が下向きのトレンドを形成することを判定した) そして当日の閉店価格はLSMA移動平均より低い ((閉店価格は下向きのトレンド中)
リスクを防ぎ,ストップ・ロズ戦略を設定するか,または他の指標と組み合わせてトレンドの逆転のタイミングを判断し,タイミングでストップ・ロズを行うことができます.
この戦略は,全体として,よりシンプルで実用的な二重確認トレンド追跡戦略である. それは,トレンドの方向を判断するAroonとLSMAのフィルターノイズを使用する考え方がシンプルで直接であり,パラメータを適切に設定した場合,良い効果を得ることができます. この戦略は,中長期線を保持し,短期市場のノイズによって邪魔されないようにする. ストップ・ロスのようなモジュールを追加することで,戦略の優位性をさらに拡大し,リスクを軽減することができます.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © exlux99
//@version=4
strategy(title = "Aroon Strategy long only", overlay = true, pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)
//Time
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2010, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
//INPUTS
length = input(15, minval=1, title="Aroon Legnth")
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length
lengthx = input(title="Length LSMA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, lengthx, offset)
long = crossover(upper,lower) and close > lsma
longexit = crossunder(upper,lower) and close < lsma
if(time_cond)
strategy.entry("long",1,when=long)
strategy.close("long",when=longexit)