
Ini adalah strategi pengoptimuman isyarat pembelian yang komprehensif yang mengenal pasti peluang pembelian di pasaran dengan menggabungkan pelbagai petunjuk analisis teknikal dan bentuk grafik. Ciri utama strategi ini adalah kebolehsuaiannya yang tinggi, yang membolehkan peniaga menetapkan jumlah minimum syarat yang perlu dipenuhi (pilihan dari 9 syarat yang telah ditentukan) untuk mencetuskan isyarat pembelian. Reka bentuk yang fleksibel ini membolehkan strategi ini menyesuaikan diri dengan persekitaran pasaran yang berbeza dan pilihan perdagangan individu, sambil mengekalkan objektif dan sistematik keputusan.
Strategi ini adalah berdasarkan kepada seni bina analisis teknikal berbilang dimensi, dengan menilai secara menyeluruh 9 syarat utama berikut:
Strategi ini memicu isyarat beli dengan mengira jumlah syarat yang dipenuhi, apabila jumlah syarat yang dipenuhi mencapai atau melebihi had minimum yang ditetapkan oleh pengguna. Tetapan lalai adalah sekurang-kurangnya 2 syarat yang dipenuhi, tetapi pengguna boleh menyesuaikan had ini mengikut keutamaan risiko dan keadaan pasaran mereka sendiri.
Strategi ini mempunyai beberapa kelebihan yang ketara:
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
Untuk mengurangkan risiko ini, peniaga disarankan untuk: 1) menyesuaikan jumlah minimum syarat mengikut kitaran pasaran yang berbeza; 2) menambah strategi berhenti dan keuntungan yang sesuai; 3) menguji prestasi strategi dalam persekitaran pasaran yang berbeza; 4) pertimbangkan untuk menambah syarat penapisan untuk mengurangkan isyarat palsu.
Berdasarkan analisis mendalam mengenai kod, berikut adalah arah yang berpotensi untuk pengoptimuman strategi:
Langkah-langkah pengoptimuman ini dapat meningkatkan ketangguhan dan kesesuaian strategi secara ketara, terutamanya semasa beralih ke persekitaran pasaran yang berbeza.
Strategi Optimasi Isyarat Pembelian Pengesahan Antara Tanda Teknikal Multidimensional adalah sistem perdagangan yang komprehensif dan fleksibel untuk mengenal pasti peluang pembelian yang berpotensi melalui analisis komprehensif pelbagai petunjuk teknikal dan bentuk harga. Kelebihan utamanya adalah kebolehpasangan dan mekanisme pengesahan pelbagai dimensi yang membolehkan peniaga menyesuaikan kepekaan strategi mengikut pilihan risiko dan keadaan pasaran peribadi.
Walaupun terdapat beberapa risiko yang wujud dalam strategi ini, seperti sensitiviti parameter dan kekurangan mekanisme keluar yang sempurna, masalah-masalah ini dapat diselesaikan dengan cara yang optimum yang dicadangkan, terutamanya dengan menambah sistem berat dinamik dan memperbaiki logik keluar. Secara keseluruhan, ini adalah kerangka pembentukan isyarat beli yang tersusun dengan logik yang jelas, sesuai untuk peniaga yang berpengalaman untuk penyesuaian yang tinggi, dan juga untuk pemula untuk mendapatkan isyarat masuk pasaran yang objektif melalui penyesuaian parameter yang mudah.
Nilai sebenar strategi ini bukan hanya dalam membeli keupayaan untuk menghasilkan isyarat, tetapi ia juga menyediakan kerangka yang boleh diperluaskan di mana pedagang boleh terus mengulangi dan memperbaiki dan membangunkan sistem perdagangan yang lengkap yang lebih sesuai dengan gaya perdagangan individu.
/*backtest
start: 2024-08-10 00:00:00
end: 2024-12-10 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("My Buy Signal Strategy", overlay=true)
min_conditions = input.int(2, "Minimum Conditions", minval=1, maxval=9)
// Condition 1: 50-day MA crosses above 200-day MA
ma50 = ta.sma(close, 50)
ma200 = ta.sma(close, 200)
condition1 = ta.crossover(ma50, ma200)
// Condition 2: RSI < 40 and rising
rsi_value = ta.rsi(close, 14)
condition2 = rsi_value < 40 and rsi_value > rsi_value[1]
// Condition 3: MACD line crosses above signal line
[macd_line, signal_line, hist] = ta.macd(close, 12, 26, 9)
condition3 = ta.crossover(macd_line, signal_line)
// Condition 5: Stochastic %K crosses above %D from below 30
stoch_length = 14
smooth_k = 3
smooth_d = 3
stoch_raw = ta.stoch(high, low, close, stoch_length)
k = ta.sma(stoch_raw, smooth_k)
d = ta.sma(k, smooth_d)
condition5 = ta.crossover(k, d) and k[1] < 30
// Condition 6: Price at Fibonacci retracement levels and showing reversal signs
swing_low = ta.lowest(low, 260)
swing_high = ta.highest(high, 260)
fib382 = swing_high - 0.382 * (swing_high - swing_low)
fib50 = swing_high - 0.5 * (swing_high - swing_low)
fib618 = swing_high - 0.618 * (swing_high - swing_low)
close_within_fib382 = close >= fib382 - 0.01 * close and close <= fib382 + 0.01 * close
close_within_fib50 = close >= fib50 - 0.01 * close and close <= fib50 + 0.01 * close
close_within_fib618 = close >= fib618 - 0.01 * close and close <= fib618 + 0.01 * close
condition6 = (close_within_fib382 or close_within_fib50 or close_within_fib618) and close > open
// Condition 7: Parabolic SAR dots are below the price bars
psar = ta.sar(0.02, 0.02, 0.2)
condition7 = psar < close
// Condition 8: ADX > 15 and rising, with +DI > -DI
[di_plus, di_minus, _] = ta.dmi(14, 14)
dx = 100 * math.abs(di_plus - di_minus) / (di_plus + di_minus)
adx_val = ta.rma(dx, 14)
condition8 = adx_val > 15 and adx_val > adx_val[1] and di_plus > di_minus
// Condition 9: Volume increases during price rises
avg_volume = ta.sma(volume, 20)
condition9 = close > open and volume > avg_volume
// Condition 10: Price forms bull reversal patterns (Hammer, Inverted Hammer, Morning Star)
isHammer = close > open and (high - close) <= (close - open) and (open - low) >= 1.5 * (close - open)
isInvertedHammer = close > open and (high - close) >= 1.5 * (close - open) and (open - low) <= (close - open)
isMorningStar = close[2] < open[2] and math.abs(close[1] - open[1]) < (open[2] - close[2]) * 0.75 and close > open and close > close[1] and open[1] < close[2]
condition10 = isHammer or isInvertedHammer or isMorningStar
// Count the number of conditions met
count = (condition1 ? 1 : 0) + (condition2 ? 1 : 0) + (condition3 ? 1 : 0) + (condition5 ? 1 : 0) + (condition6 ? 1 : 0) + (condition7 ? 1 : 0) + (condition8 ? 1 : 0) + (condition9 ? 1 : 0) + (condition10 ? 1 : 0)
// Buy signal if count >= min_conditions
buy_signal = count >= min_conditions
if (buy_signal)
strategy.entry("Buy", strategy.long)