Die Hauptidee dieser Strategie besteht darin, den Einstiegspunkt zufällig zu bestimmen und drei Gewinnpunkte und einen Stop-Loss-Punkt festzulegen, um Risiken zu managen und den Gewinn und Verlust jedes Handels zu kontrollieren.
Diese Strategie verwendet die zufällige Zahl rd_number_entry zwischen 11 und 13 um den Long-Entry-Punkt zu bestimmen, und verwendet rd_number_exit zwischen 20 und 22 um das Schließen von Positionen zu bestimmen.Gleichzeitig werden drei Take-Profit-Punkte gesetzt. Der erste Take-Profit-Punkt ist der Einstiegspreis plus atr(14)tpx, der zweite Take-Profit-Punkt ist der Einstiegspreis plus 2tpx, und der dritte Take-Profit-Punkt ist der Einstiegspreis plus 3Das Prinzip des Shorting ist ähnlich, mit der Ausnahme, dass die Eintrittsentscheidung verschiedene rd_number_entry-Werte annimmt und die Richtung von Take Profit und Stop Loss entgegengesetzt ist.
Das Risiko kann durch Anpassung von tpx (Take-Profit-Koeffizient) und slx (Stop-Loss-Koeffizient) kontrolliert werden.
Zu den Vorteilen dieser Strategie gehören:
Zu den Risiken dieser Strategie gehören außerdem:
Die Risiken können durch Anpassung der Gewinn- und Stop-Loss-Koeffizienten und die Optimierung der Logik des zufälligen Einsatzes verringert werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Diese Strategie basiert auf einem zufälligen Eintrag und setzt mehrere Take-Profit- und Stop-Loss-Punkte, um das Risiko eines einzigen Handels zu kontrollieren. Aufgrund der hohen Zufälligkeit kann die Wahrscheinlichkeit einer Kurvenanpassung reduziert werden. Das Handelsrisiko kann durch Parameteroptimierung reduziert werden. Es gibt noch viel Raum für weitere Optimierung und Forschung.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Random Strategy with 3 TP levels and SL", overlay=true,max_bars_back = 50) tpx = input(defval = 0.8, title = 'Atr multiplication for TPs?') slx = input(defval = 1.2, title = 'Atr multiplication for SL?') isLong = false isLong := nz(isLong[1]) isShort = false isShort := nz(isShort[1]) entryPrice = 0.0 entryPrice := nz(entryPrice[1]) tp1 = true tp1 := nz(tp1[1]) tp2 = true tp2 := nz(tp2[1]) sl_price = 3213.0 sl_price := nz(sl_price[1]) sl_atr = atr(14)*slx tp_atr = atr(14)*tpx rd_number_entry = 1.0 rd_number_entry := (16708 * nz(rd_number_entry[1], 1) % 2147483647)%17 rd_number_exit = 1.0 rd_number_exit := ((16708 * time % 2147483647) %17) //plot(rd_number_entry) shortCondition = (rd_number_entry == 13? true:false) and (year >= 2017) and not isLong and not isShort longCondition = (rd_number_entry == 11 ? true:false) and (year >= 2017) and not isShort and not isShort //Never exits a trade: exitLong = (rd_number_exit == 22?true:false) and (year >= 2018) and not isShort exitShort = (rd_number_exit == 22?true:false) and (year >= 2018) and not isLong //shortCondition = crossunder(sma(close, 14), sma(close, 28)) and year >= 2017 //longCondition = crossover(sma(close, 14), sma(close, 28)) and year >= 2017 //exitLong = crossunder(ema(close, 14), ema(close, 28)) and year >= 2017 //exitShort = crossover(ema(close, 14), ema(close, 28)) and year >= 2017 if (longCondition and not isLong) strategy.entry('Long1', strategy.long) strategy.entry('Long2', strategy.long) strategy.entry('Long3', strategy.long) isLong := true entryPrice := close isShort := false tp1 := false tp2 := false sl_price := close-sl_atr if (shortCondition and not isShort) strategy.entry('Short1', strategy.short) strategy.entry('Short2', strategy.short) strategy.entry('Short3', strategy.short) isShort := true entryPrice := close isLong := false tp1 := false tp2 := false sl_price := close+sl_atr if (exitShort and isShort) strategy.close('Short1') strategy.close('Short2') strategy.close('Short3') isShort := false if (exitLong and isLong) strategy.close('Long1') strategy.close('Long2') strategy.close('Long3') isLong := false if isLong if (close > entryPrice + tp_atr) and not tp1 strategy.close('Long1') tp1 := true sl_price := close - tp_atr if (close > entryPrice + 2*tp_atr) and not tp2 strategy.close('Long2') tp2 := true sl_price := close - tp_atr if (close > entryPrice + 3*tp_atr) strategy.close('Long3') isLong := false if (close < sl_price) strategy.close('Long1') strategy.close('Long2') strategy.close('Long3') isLong := false if isShort if (close < entryPrice - tp_atr) and not tp1 strategy.close('Short1') sl_price := close + tp_atr tp1 := true if (close < entryPrice - 2*tp_atr) and not tp2 strategy.close('Short2') sl_price := close + tp_atr tp2 := true if (close < entryPrice - 3*tp_atr) strategy.close('Short3') isShort := false if (close > sl_price) strategy.close('Short1') strategy.close('Short2') strategy.close('Short3') isShort := false plot(atr(14)*slx) plot(sl_price)