双重トレンド追跡戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-17 18:20:27
タグ:

概要

この戦略は,両方向のトレンドを識別し追跡するためのAroon指標に基づいています.Aroon指標は,市場のトレンドの方向性を効果的に決定することができます.RSI指標と組み合わせると,比較的完全な追跡戦略を形成します.

戦略原則

  1. 価格動向の方向を判断するためにAroon指標を使用します. 0線上の線は上昇傾向を示し,0線下の線は下落傾向を示します.

  2. アルーンインジケーターが 0 線を下から越えると 購入信号が発信されます

  3. すでにポジションを持っている場合,閉じる値は購入価格を下回り,RSIは30を下回る場合は,過剰販売とみなされ,追加的な購入オーダーが表示されます.

  4. アルーン指示が上から0線を下回ると 完全な出口信号が発します

  5. ストップ・ロスは5%設定されます. ストップ・ロスはこの値を超えると,ストップ・ロスは終了します.

利点分析

  1. アルーン指標を使用して 傾向の方向性を決定することで 市場の回転点を効果的に把握できます

  2. RSIインジケーターは,市場転換時に新しい高値を追いかけるのを避け,過剰購入と過剰販売の領域を特定するのに役立ちます.

  3. 両方向の取引は 上下両方向の市場で利益を得ることができます

  4. ストップ・ロスを設定することで リスクをコントロールできます

リスク分析

  1. アルーン指標は遅延効果があり,短期的や突然の逆転を 見逃す可能性があります.

  2. 範囲限定の市場を効果的に扱えないため,不必要な取引が起こる.

  3. 両方向の取引は 取引頻度と手数料を増加させる.

  4. パラメータは異なる時間枠と製品に適応するために適切な調整が必要です.

オプティマイゼーションの方向性

  1. 他のインジケーターと組み合わせることで信号をフィルタリングし,遅延によるエラーを減らす.

  2. 異なる製品のパラメータを最適化するために定量的な研究を増やす.

  3. 利潤因子を増やすために 利潤を取る戦略を追加します

  4. 効果のない取引を減らす傾向がはっきりしている場合にのみ取引を検討します.

概要

この戦略は,AroonとRSIインジケーターを統合して比較的完全な二方向トレンドトレーディングシステムを形成する.しかし,パラメータのさらなる最適化およびエラーを減らすために他のフィルタリングインジケーターとの組み合わせは依然として必要である.適切なパラメータ調整とリスク制御により,この戦略は比較的安定した過剰収益を達成する可能性がある.


/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
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/
// © mohanee

//@version=4
// strategy(title="Aroon Oscillator Strategy", overlay=false, pyramiding=2,    initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 

//variables BEGIN
aroonLength=input(169,title="Aroon Length")   //square root of 13
rsiLength=input(13, title="RSI Length")
stopLoss = input(title="Stop Loss%", defval=5, minval=1)
//variables  END

//RSI 
rsi13=rsi(close,rsiLength)




// Drawings

//Aroon oscillator

arronUpper = 100 * (highestbars(high, aroonLength+1) + aroonLength)/aroonLength
aroonLower = 100 * (lowestbars(low, aroonLength+1) + aroonLength)/aroonLength

aroonOsc  = arronUpper - aroonLower

aroonMidpoint = 0
oscPlot = plot(aroonOsc, color=color.green)
midLine= plot(aroonMidpoint, color=color.green)
topLine = plot(90,style=plot.style_circles, color=color.green)
bottomLine = plot(-90,style=plot.style_circles, color=color.red)

fill(oscPlot, midLine, color=aroonOsc>0?color.green:color.red, transp=50)
fill(topLine,bottomLine, color=color.blue)


// RSI 
//plot(rsi13, title="RSI", linewidth=2, color=color.purple)
//hline(50, title="Middle Line", linestyle=hline.style_dotted)
//obLevel = hline(80, title="Overbought", linestyle=hline.style_dotted)
//osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
//fill(obLevel, osLevel, title="Background", color=rsi13 >=30 ? color.green:color.purple, transp=65)  // longTermRSI >=50


//Entry--

strategy.entry(id="Long Entry", comment="LE",  long=true,  when= crossover(aroonOsc,0)   )     //crossover(close,ema34)  //and close>ema34  //crossover(rsi5Val,rsiBuyLine)

//Add
if(strategy.position_size>=1 and close < strategy.position_avg_price and crossover(rsi13,30))
    strategy.order(id="Long Entry", comment="Add", long=true )     //crossover(close,ema34)  //and close>ema34  //crossover(rsi5Val,rsiBuyLine)  --


stopLossVal= abs(strategy.position_size)>1 ? strategy.position_avg_price*(1-0.5) : 0.00 


//close partial
strategy.close(id="Long Entry", comment="Partial X",  qty=strategy.position_size/3, when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 90) )   //close<ema55 and rsi5Val<20 //ema34<ema55 


//close All
strategy.close(id="Long Entry", comment="Exit All",  when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 0) )   //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89

//close All on stop loss
strategy.close(id="Long Entry", comment="Stoploss X",  when=abs(strategy.position_size)>=1 and close < stopLossVal )   //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89


もっと