Model Tiga Faktor untuk Pengesanan Osilasi Harga adalah strategi perdagangan jangka pendek yang mengintegrasikan beberapa faktor untuk penilaian. Strategi ini mengambil kira faktor seperti nisbah jumlah, RSI, MACD, dan garis isyarat untuk mengesan turun naik harga dan menemui peluang perdagangan jangka pendek.
Logik teras strategi ini ialah:
Mengira penunjuk teknikal seperti MA pantas, MA perlahan, MACD, dan garis isyarat;
Menghakimi keadaan pelbagai faktor termasuk nisbah jumlah, RSI, MACD dan garis isyarat;
Memastikan tahap turun naik harga semasa dan peluang membeli/jual berdasarkan analisis pelbagai faktor;
Mengambil kedudukan LONG atau SHORT dan menetapkan mengambil keuntungan dan menghentikan kerugian;
Tutup kedudukan apabila harga mencapai mengambil keuntungan atau hentikan kerugian.
Strategi ini secara fleksibel menggunakan faktor seperti nisbah jumlah, RSI, MACD dan garis isyarat untuk mengesan turun naik harga dan menangkap peluang jangka pendek.
Kelebihan strategi ini:
Risiko strategi ini:
Untuk menangani risiko di atas, pengoptimuman boleh dibuat dalam:
Arah pengoptimuman utama:
Mengoptimumkan berat faktor secara dinamik. Berat boleh diselaraskan berdasarkan keadaan pasaran untuk meningkatkan kesesuaian;
Memperkenalkan algoritma pembelajaran mesin untuk mencapai pengoptimuman faktor adaptif. Algoritma seperti rangkaian saraf dan algoritma genetik boleh digunakan untuk melatih model dan mengoptimumkan parameter;
Mengoptimumkan strategi stop loss. Gabungan yang berbeza dari pemantauan stop loss dan pergerakan stop loss boleh diuji untuk mencari penyelesaian yang terbaik;
Masukkan penunjuk teknikal canggih. Lebih banyak penunjuk seperti turun naik turun naik dan goyangan momentum boleh memperkaya faktor.
Model Tiga Faktor untuk Pengesanan Guncangan Harga menggunakan sepenuhnya ciri-ciri guncangan harga untuk melaksanakan strategi perdagangan jangka pendek yang cekap. Ia menilai titik masuk dan keluar terbaik berdasarkan pelbagai faktor seperti jumlah, RSI, MACD dan garis isyarat. Pelbagai faktor meningkatkan ketepatan dan membawa kepada pulangan yang stabil. Pengoptimuman lanjut boleh dilakukan melalui pembelajaran mesin untuk pengoptimuman adaptif, menghasilkan prestasi strategi yang lebih baik.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false) signalBiasValue = input(title="Signal Bias", defval=0.26) macdBiasValue = input(title="MACD Bias", defval=0.7) shortLookBack = input( title="Short LookBack", defval=3) longLookBack = input( title="Long LookBack", defval=6) takeProfit = input( title="Take Profit", defval=2) stopLoss = input( title="Stop Loss", defval=0.7) fast_ma = ta.sma(close, 3) slow_ma = ta.sma(close, 10) macd = fast_ma - slow_ma signal = ta.sma(macd, 16) hline(0, "Zero Line", color = color.black) buyVolume = volume*((close-low)/(high-low)) sellVolume = volume*((high-close)/(high-low)) buyVolSlope = buyVolume - buyVolume[1] sellVolSlope = sellVolume - sellVolume[1] signalSlope = ( signal - signal[1] ) macdSlope = ( macd - macd[1] ) plot(macd, color=color.blue, title="Total Volume") plot(signal, color=color.orange, title="Total Volume") plot(macdSlope, color=color.green, title="MACD Slope") plot(signalSlope, color=color.red, title="Signal Slope") intrabarRange = high - low rsi = ta.rsi(close, 14) rsiSlope = rsi - rsi[1] plot(rsiSlope, color=color.black, title="RSI Slope") getRSISlopeChange(lookBack) => j = 0 for i = 0 to lookBack if ( rsi[i] - rsi[ i + 1 ] ) > -5 j += 1 j getBuyerVolBias(lookBack) => j = 0 for i = 1 to lookBack if buyVolume[i] > sellVolume[i] j += 1 j getSellerVolBias(lookBack) => j = 0 for i = 1 to lookBack if sellVolume[i] > buyVolume[i] j += 1 j getVolBias(lookBack) => float b = 0.0 float s = 0.0 for i = 1 to lookBack b += buyVolume[i] s += sellVolume[i] b > s getSignalBuyerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] > signalBiasValue j += 1 j getSignalSellerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < ( 0.0 - signalBiasValue ) j += 1 j getSignalNoBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue ) j += 1 j getPriceRising(lookBack) => j = 0 for i = 1 to lookBack if close[i] > close[i + 1] j += 1 j getPriceFalling(lookBack) => j = 0 for i = 1 to lookBack if close[i] < close[i + 1] j += 1 j getRangeNarrowing(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] < intrabarRange[i + 1] j+= 1 j getRangeBroadening(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] > intrabarRange[i + 1] j+= 1 j bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0 bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0 bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0 bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0 bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0 bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0 bool hasSignalBias = math.abs(signal) >= signalBiasValue bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue ) bool hasSignalBuyerBias = hasSignalBias and signal > 0.0 bool hasSignalSellerBias = hasSignalBias and signal < 0.0 bool hasPositiveMACDBias = macd > macdBiasValue bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue ) bool hasBullAntiPattern = ta.crossunder(macd, signal) bool hasBearAntiPattern = ta.crossover(macd, signal) bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 ) bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 ) // 202.30 Profit 55.29% 5m if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open) strategy.entry("5C1", strategy.long, qty=1.0) strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss) // 171.70 Profit 50.22% 5m if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0) strategy.entry("5C2", strategy.long, qty=1.0) strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss) // 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades if ( macd > macdBiasValue and macdSlope > 0) strategy.entry("5P1", strategy.short, qty=1.0) strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)