
Die Bottom-up-Strategie ist eine typische Low-Buy-High-Sell-Strategie. Sie nutzt den RSI-Indikator, um Überverkäufe zu erkennen, und sendet ein Kaufsignal, wenn der Preis bis zu einem gewissen Grad gesunken ist, um die Token zu einem niedrigeren Preis zu akkumulieren. Wenn der Preis wieder steigt, wird der Gewinn durch die Einstellung des RSI-Ausgangs aus der Wertminderung erreicht.
Die Strategie basiert hauptsächlich auf dem RSI-Indikator, um Übersellpunkte zu identifizieren. Die normale Bandbreite des RSI-Indikators liegt zwischen 0 und 100. Bei einem Rückgang des RSI-Indikators unter dem gesetzten Einstiegswert von 35 wird ein Kaufsignal ausgegeben.
Zusätzlich wurde ein einfacher Moving Average mit 100 Zyklen eingeführt, der mit dem RSI kombiniert wird. Ein Kaufsignal wird nur ausgelöst, wenn der Preis unter den Moving Average fällt und der RSI in die Überverkaufszone eintritt. Dies kann einige falsche Durchbrüche filtern und unnötige Geschäfte reduzieren.
Die Bottom-up-Strategie ist insgesamt eine robuste und praktische Low-Buy-Bold-Selling-Strategie. Durch die Doppelfilterung von RSI und Moving Averages können falsche Signale wirksam unterdrückt werden, wodurch unter optimierten Parametern niedrigere Haltekosten erzielt werden können. Gleichzeitig werden die Kennzahlenparameter entsprechend optimiert und die Positionsstrategie angepasst, um eine höhere Effizienz der Kapitalnutzung zu erzielen.
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 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/
// © Coinrule
//@version=4
strategy(shorttitle='Optimized RSI Strategy',title='Optimized RSI Strategy - Buy The Dips (by Coinrule)', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// RSI inputs and calculations
lengthRSI = (14)
RSI = rsi(close, lengthRSI)
RSI_entry = input(35, title = 'RSI Entry', minval=1)
RSI_exit = input(65, title = 'RSI Close', minval=1)
//Calculate Moving Averages
movingaverage_signal = sma(close, input(100))
//Entry
strategy.entry(id="long", long = true, when = RSI< RSI_entry and close < movingaverage_signal and window())
//Exit
//RSI
strategy.close("long", when = RSI > RSI_exit and window())
plot (movingaverage_signal)