
Strategi ini menggunakan gabungan purata bergerak, bentuk harga dan jumlah transaksi untuk mengenal pasti titik balik pasaran. Apabila rata-rata bergerak cepat melintasi rata-rata bergerak perlahan, dan terdapat banyak corak pengapungan, menembusi tahap rintangan, dan meningkatkan jumlah transaksi, strategi ini akan melakukan lebih banyak; sebaliknya, apabila rata-rata bergerak cepat melintasi rata-rata bergerak perlahan di bawah rata-rata bergerak dan terdapat corak pengapungan kosong, jatuh di bawah tahap sokongan, dan meningkatkan jumlah transaksi, strategi ini akan kosong.
Idea teras strategi ini adalah menggunakan gabungan sistem garis lurus, bentuk harga dan tiga tenaga kuantitatif untuk mengenal pasti titik-titik perubahan yang berpotensi. Khususnya, persilangan emas dan persilangan mati pada garis lurus dapat menentukan peralihan trend. Kedua-dua bentuk harga, penyeludupan berbilang dan penyeludupan kosong, biasanya menunjukkan pembalikan jangka pendek.
Dari sudut logik kod, pertama-tama kira rata-rata bergerak cepat dan rata-rata bergerak perlahan. Kemudian atur syarat penilaian untuk menelan banyak kepala dan penelan kepala kosong. Pada masa yang sama, atur syarat untuk menyokong tahap rintangan dan peningkatan jumlah transaksi.
Kelebihan utama strategi ini adalah menggunakan kombinasi pelbagai isyarat untuk mengenal pasti pembalikan, yang dapat mengurangkan isyarat palsu. Khususnya, mudah untuk membuat isyarat perdagangan yang salah hanya dengan bergantung pada satu garis rata-rata, bentuk harga atau kuantiti. Tetapi jika ketiga-tiga isyarat muncul pada masa yang sama, kejayaan meramalkan pembalikan akan meningkat dengan ketara.
Di samping itu, strategi ini memanfaatkan kedua-dua faktor trend dan pembalikan. Sebelum isyarat pembalikan muncul, trend mesti ada.
Risiko terbesar dalam strategi ini adalah kegagalan pembalikan, iaitu, harga terus menurun selepas beberapa isyarat dikeluarkan; atau harga terus meningkat selepas isyarat dibuat. Ini biasanya disebabkan oleh kesalahan penghakiman, isyarat pembalikan hanya palsu, atau hanya penyesuaian jangka pendek, kemudian teruskan trend asal.
Penyelesaiannya adalah dengan menyesuaikan parameter garis purata untuk mengenal pasti trend yang lebih lama; dan dengan tepat meningkatkan markah hentian untuk menghentikan kerugian tepat pada masanya selepas kegagalan pembalikan. Selain itu, ia juga boleh menggabungkan lebih banyak faktor untuk mengesahkan pembalikan, seperti bentuk harga dalam kitaran besar dan sebagainya.
Strategi ini boleh dioptimumkan dengan cara:
Sesuaikan parameter garis rata-rata untuk mengenal pasti tempoh yang lebih sesuai.
Uji algoritma bit rintangan sokongan yang berbeza, seperti bit rintangan sokongan Pareto.
Cubalah pelbagai indikator volum dagangan, seperti indikator arus tenaga, indikator pergerakan volum dagangan dan sebagainya.
Menambah lebih banyak isyarat untuk mengesahkan pembalikan, seperti bentuk harga jangka panjang, peningkatan besar dalam jumlah transaksi, dan sebagainya.
Gabungan dengan indeks saham berjangka untuk pengesahan merentas pasaran, menggunakan indeks saham berjangka untuk mengesahkan pembalikan saham individu.
Dengan menguji kombinasi parameter yang berbeza, strategi ini dapat dioptimumkan lebih jauh, meningkatkan kadar keuntungan dan kemenangan.
Strategi ini mengintegrasikan tiga faktor untuk mengenal pasti pembalikan, iaitu sistem garis rata, bentuk harga dan jumlah transaksi, yang membolehkan gabungan pelbagai isyarat yang berkesan. Ia hanya mencari peluang pembalikan dalam konteks trend, mengelakkan perdagangan rawak. Dengan mengoptimumkan parameter lebih lanjut dan menambah faktor pengesahan, strategi ini boleh menjadi strategi pembalikan garis pendek yang sangat praktikal.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Profit Table Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100
// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]
// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")
// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)
// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition
// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition
// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)
// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)
// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")
// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)