이 전략은 시장 트렌드와 잠재적 거래 기회를 식별하기 위해 아론 지표와 절대 강도 히스토그램 (ASH) 을 결합합니다. 아론은 트렌드의 강도와 방향을 결정하는 데 도움이되며, ASH는 추진력 강도에 대한 통찰력을 제공합니다. 이러한 지표를 결합함으로써 전략은 이더리움 시장에서 수익성있는 거래를 캡처하는 것을 목표로합니다.
이 전략은 아룬 지표에 대한 두 개의 매개 변수를 사용합니다.
ASH는 종료 가격을 데이터 소스로 사용하여 9 바의 길이로 계산됩니다.
이 전략은 특정 입국 및 출입 규칙을 포함합니다.
이 전략의 주요 장점은 두 지표의 조합으로 인한 시너지입니다. Aroon은 트렌드 방향과 강도를 효과적으로 측정합니다. ASH는 타이밍 진입 및 출구 신호에 도움이되는 추가 추진력 통찰력을 제공합니다.
두 개의 아론 매개 변수를 사용하면 변화하는 시장 조건에 적응하는 데 유연성을 제공합니다.
주요 한계점은 지표 자체에서 비롯됩니다. 아론은 범위 제한 시장에서 어려움을 겪으며 잘못된 신호를 생성 할 수 있습니다. ASH는 또한 단기적으로 과도한 반응에 취약합니다.
부적절한 매개 변수 설정은 또한 성능에 영향을 줄 수 있습니다. 아론의 긴/단기 및 ASH의 길이는 이상적인 조합을 찾기 위해 최적화가 필요합니다.
가격 파열이나 증가량과 같은 추가 필터가 추가 될 수 있습니다. 불안정한 조건에서 잘못된 신호를 피하기 위해.
다양한 매개 변수 조합과 가중을 테스트하여 최적의 설정을 찾을 수 있습니다. RSI 또는 KD와 같은 다른 지표도 전략을 보완 할 수 있습니다.
이 전략은 트렌드와 전환점을 두 번 확인하기 위해 Aroon과 ASH의 강점을 효과적으로 결합합니다. 그러나 매개 변수와 지표 제한은 여전히 정교 할 필요가 있습니다. 창의적 개념은 추가 개선 및 테스트를위한 약속을 보여줍니다.
/*backtest start: 2023-03-05 00:00:00 end: 2024-03-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © IkkeOmar //@version=5 strategy("Aroon and ASH strategy - ETHERIUM [IkkeOmar]", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1, commission_value=0, slippage=2) // AROON SETTINGS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // Inputs for longs length_upper_long = input.int(56, minval=15) length_lower_long = input.int(20, minval=5) // Inputs for shorts //Aroon Short Side Inputs length_upper_short = input.int(17, minval=10) length_lower_short = input.int(55) // ABSOLUTE STRENGTH HISTOGRAM SETTINGS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ length = input(title='Length', defval=9) src = input(title='Source', defval=close) // CALCULATIONS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // Aroon upper_long = 100 * (ta.highestbars(high, length_upper_long + 1) + length_upper_long) / length_upper_long lower_long = 100 * (ta.lowestbars(low, length_lower_long + 1) + length_lower_long) / length_lower_long upper_short = 100 * (ta.highestbars(high, length_upper_short + 1) + length_upper_short) / length_upper_short lower_short = 100 * (ta.lowestbars(low, length_lower_short + 1) + length_lower_short) / length_lower_short // Ahrens Moving Average ahma = 0.0 ahma := nz(ahma[1]) + (src - (nz(ahma[1]) + nz(ahma[length])) / 2) / length // CONDITIONS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // Options that configure the backtest start date startDate = input(title='Start Date', defval=timestamp('01 Jan 2018 00:00')) // Option to select trade directions tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Long') // Translate input into trading conditions longOK = tradeDirection == 'Long' or tradeDirection == 'Both' shortOK = tradeDirection == 'Short' or tradeDirection == 'Both' // Check if the close time of the current bar falls inside the date range inDateRange = true longCondition = ta.crossover(upper_long, lower_long) and inDateRange and lower_long >= 5 and longOK longCloseCondition = ta.crossunder(upper_long, lower_long) and inDateRange shortCondition = ta.crossunder(upper_short, lower_short) and inDateRange and shortOK shortCloseCondition = ta.crossover(upper_short, lower_short) and inDateRange // Start off with the initial states for the longs and shorts var in_short_trade = false var in_long_trade = false var long_signal = false var short_signal = false if longCondition long_signal := true if longCloseCondition long_signal := false if shortCondition short_signal := true if shortCloseCondition short_signal := false // While no trades active and short condition is met, OPEN short if true and in_short_trade == false and in_long_trade == false and shortCondition strategy.entry("short", strategy.short, when = shortCondition) in_short_trade := true in_long_trade := false // While no trades and long condition is met, OPEN LONG if true and in_short_trade == false and in_long_trade == false and longCondition strategy.entry("long", strategy.long, when = longCondition) in_long_trade := true in_short_trade := false // WHILE short trade and long condition is met, CLOSE SHORT and OPEN LONG if true and in_short_trade == true and in_long_trade == false and longCondition // strategy.close("short", when = longCondition) strategy.entry("long", strategy.long, when = longCondition) in_short_trade := false in_long_trade := true // WHILE long trade and short condition is met, CLOSE LONG and OPEN SHORT if true and in_short_trade == false and in_long_trade == true and shortCondition // strategy.close("long", when = shortCondition) strategy.entry("short", strategy.short, when = shortCondition) in_short_trade := true in_long_trade := false // WHILE long trade and exit long condition is met, CLOSE LONG // if short signal is active, OPEN SHORT if true and in_short_trade == false and in_long_trade == true and longCloseCondition if short_signal strategy.entry("short", strategy.short, when = short_signal) in_long_trade := false in_short_trade := true else strategy.close("long", when = longCloseCondition) in_long_trade := false in_short_trade := false // if in short trade only and exit short condition is met, close the short // if long signal still active, OPEN LONG if true and in_short_trade == true and in_long_trade == false and shortCloseCondition if long_signal strategy.entry("long", strategy.long, when = long_signal) in_short_trade := false in_long_trade := true else strategy.close("short", when = shortCloseCondition) in_short_trade := false in_long_trade := false