
Model tiga faktor yang membantu menilai pergerakan harga adalah strategi perdagangan garis pendek yang menggabungkan penilaian pelbagai faktor. Strategi ini mengambil kira penilaian pelbagai faktor dari kadar transaksi, RSI, MACD, dan garis isyarat untuk menilai pergerakan harga untuk mencari peluang perdagangan garis pendek.
Logik utama strategi ini ialah:
Mengira penunjuk teknikal seperti purata bergerak pantas, purata bergerak perlahan, kurva MACD, garis isyarat;
untuk menilai kadar dagangan, RSI, MACD, dan signal line;
Penghakiman pelbagai faktor yang komprehensif, mengesahkan bahawa ini adalah masa harga yang bergolak dan peluang untuk membeli dan menjual;
Masukkan kedudukan LONG atau SHORT dan setkan stop loss;
Kedudukan kosong apabila harga mencapai keadaan berhenti atau berhenti.
Strategi ini fleksibel menggunakan penilaian pelbagai faktor, seperti nisbah jumlah transaksi, petunjuk RSI, petunjuk MACD, petunjuk garis isyarat, untuk menilai tingkah laku pergerakan harga, untuk menangkap peluang perdagangan garis pendek. Penilaian gabungan pelbagai faktor dapat mengelakkan isyarat salah yang disebabkan oleh faktor tunggal, meningkatkan ketepatan isyarat.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Menghadapi risiko di atas, anda boleh mengoptimumkan:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Mengoptimumkan berat pelbagai faktor, mencapai penyesuaian dinamik. Ia boleh menyesuaikan berat penilaian pelbagai faktor mengikut keadaan yang berbeza, meningkatkan daya serap;
Menggabungkan algoritma pembelajaran mesin, untuk mencapai pengoptimuman penyesuaian diri pelbagai faktor. Menggunakan rangkaian saraf, algoritma genetik dan lain-lain untuk melatih model pelbagai faktor, untuk mencapai pengoptimuman parameter sendiri;
Mengoptimumkan strategi penutupan kerugian. Anda boleh menguji pelbagai kombinasi penutupan pengesanan dan penutupan pergerakan untuk mencari penyelesaian penutupan yang terbaik.
Gabungan dengan petunjuk teknologi canggih. Ia boleh menguji lebih banyak petunjuk seperti turun naik kadar turun naik, gegaran dinamik, dan lain-lain, dengan kombinasi pelbagai faktor.
Strategi penarikan menggunakan ciri-ciri pelbagai faktor di antara rentang pergerakan harga untuk mencapai strategi perdagangan garis pendek yang cekap. Strategi ini menggunakan pertimbangan pelbagai faktor seperti jumlah dagangan, RSI, MACD, dan garis isyarat untuk menentukan masa pembelian dan penjualan yang terbaik. Pertimbangan pelbagai faktor meningkatkan ketepatan isyarat untuk mendapatkan keuntungan yang stabil.
/*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)