
Strategi ini menggunakan pengiraan nisbah panjang bayang-bayang K untuk menentukan arah trend semasa, mengenal pasti trend dengan ATR gelombang sebenar rata-rata, membuka posisi terbalik pada titik penembusan, menetapkan stop loss dan menangkap trend jangka pendek.
Strategi ini terutamanya dengan mengira nisbah panjang bayang-bayang K garis, untuk menentukan arah trend semasa, apabila panjangnya terlalu panjang, ia dianggap sebagai tren menurun, apabila panjangnya terlalu panjang, ia dianggap sebagai tren naik.
Logik strategi ini ialah:
Ini adalah logik perdagangan asas strategi, dengan mengenal pasti titik pecah trend untuk membuka kedudukan terbalik, menetapkan stop loss dan kemudian mengoptimumkan keuntungan.
Anda boleh mengawal risiko dengan menghentikan kerugian yang munasabah, mengoptimumkan parameter, dan menghentikan kerugian tepat pada masanya.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Untuk memaksimumkan keberkesanan strategi, percubaan dan pengoptimuman pelbagai arah diperlukan.
Secara keseluruhan, strategi ini adalah strategi penembusan garis pendek yang stabil dalam kesannya, memanfaatkan turun naik harga jangka pendek dengan cara mengenal pasti trend dan mengawal risiko. Apabila dioptimumkan, ia boleh menjadi bahagian penting dalam perdagangan kuantitatif.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © ondrej17
//@version=4
strategy("longWickstrategy", overlay=true )
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)
// Entries and Exits
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0
strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)
longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na
strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)
plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)
plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)