Idea utama strategi ini adalah untuk menentukan arah panjang dan pendek berdasarkan trend harga mingguan. Dalam trend menaik, ia pergi lama apabila terdapat corak candlestick bullish. Ia mengambil keuntungan apabila harga meningkat ke tahap mengambil keuntungan yang telah ditetapkan dan menghentikan kerugian apabila jatuh ke tahap stop loss yang telah ditetapkan.
Strategi pertama menentukan syarat untuk menilai trend mingguan:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Jika penutupan semasa lebih tinggi daripada penutupan sebelumnya, ia dinilai sebagai aliran menaik.
Kemudian isyarat dagangan intraday ditakrifkan:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
Iaitu, penutupan sebelumnya lebih tinggi daripada penutupan sebelumnya (candle bullish), dan pembukaan sebelumnya lebih tinggi daripada penutupan sebelum hari sebelumnya (gap up), dan ia berada dalam trend menaik.
Selepas memasuki kedudukan, stop loss ditetapkan kepada penutupan sebelumnya tolak 1.382 kali badan sebenar hari sebelumnya:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
Keuntungan mengambil ditetapkan kepada penutupan sebelumnya ditambah 2 kali perbezaan antara penutupan dan stop loss sebelumnya:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
Ini merealisasikan strategi stop loss dan mengambil keuntungan.
Kelebihan strategi ini termasuk:
Terdapat juga beberapa risiko:
Untuk mengawal risiko ini, beberapa pengoptimuman boleh dipertimbangkan:
Strategi ini juga boleh dioptimumkan dengan cara berikut:
Secara keseluruhan, ini adalah strategi yang agak praktikal, menyoroti perdagangan mengikut trend sambil mengawal risiko. Ia boleh berfungsi sebagai strategi perdagangan intraday asas dan boleh dioptimumkan secara modular untuk pasaran dan produk yang berbeza untuk mewujudkan portfolio perdagangan yang pelbagai. Dalam penggunaan sebenar, mengawal kos dan mengelakkan perangkap tetap penting, jadi mengekalkan mental yang betul adalah kunci.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-24 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true) // Function to get previous day's close and open getPrevDayClose() => request.security(syminfo.tickerid, "D", close[1]) getPrevDayOpen() => request.security(syminfo.tickerid, "D", open[1]) // Determine weekly trend isUptrend = close > close[1] isDowntrend = close < close[1] // Determine daily conditions for buy buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend // Calculate stop loss and take profit stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen()) takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss) // Strategy logic if (isUptrend) strategy.entry("Buy", strategy.long, when = buyCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit) if (isDowntrend) strategy.entry("Sell", strategy.short) // Plotting the trend on the chart plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar) plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar) // Plotting stop loss and take profit levels on the chart plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross) plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)