Strategi ini adalah alat analisis teknikal yang komprehensif yang menggabungkan pelbagai Purata Bergerak Lesu (SMMA), pengenalan trend, pengenalan corak lilin, dan analisis sesi dagangan. Ia bertujuan untuk membantu peniaga mengenal pasti trend pasaran, mengesan titik pembalikan yang berpotensi, dan melaksanakan dagangan dalam sesi dagangan tertentu. Inti strategi terletak pada menggunakan SMMA dari tempoh yang berbeza untuk menentukan arah pasaran, sambil menggunakan corak lilin
Purata Bergerak Lencir Berganda (SMMA): Strategi ini menggunakan 4 SMMA (21-periode, 50-periode, 100-periode, dan 200-periode) untuk menilai trend pasaran dalam jangka masa yang berbeza. purata bergerak ini membantu peniaga memahami trend pasaran jangka pendek, sederhana, dan jangka panjang.
Trend Fill: Strategi ini secara visual memaparkan trend semasa dengan mengisi latar belakang berdasarkan hubungan antara harga jangka pendek (2-period EMA) dan SMMA 200-period. Latar belakang hijau menunjukkan trend bullish, manakala merah menunjukkan trend bearish.
Pengiktirafan corak candlestick:
Analisis Sesi Dagangan: Membolehkan pengguna menentukan sesi dagangan tertentu dan menyerlahkan tempoh ini pada carta. Ini membantu peniaga memberi tumpuan kepada masa perdagangan yang paling aktif.
Generasi Isyarat Perdagangan:
Analisis Berbilang Dimensi: Dengan menggabungkan beberapa penunjuk teknikal dan kaedah analisis, ia menyediakan perspektif pasaran yang komprehensif, memudahkan keputusan perdagangan yang lebih tepat.
Pengesahan Trend: Menggunakan SMMA dalam pelbagai jangka masa membolehkan pengesahan trend yang lebih tepat, mengurangkan isyarat palsu.
Pengenalan Pembalikan: Dengan mengenali corak lilin tertentu, ia dapat menangkap pembalikan pasaran yang berpotensi lebih awal, memberikan pedagang peluang masuk dan keluar.
Intuitif visual: Penggunaan warna dan penanda grafik menjadikan keadaan pasaran dan isyarat berpotensi mudah difahami, memudahkan analisis cepat.
Fleksibiliti: Membolehkan pengguna menyesuaikan pelbagai parameter, seperti tempoh purata bergerak dan sesi dagangan, untuk menyesuaikan diri dengan gaya dagangan dan keadaan pasaran yang berbeza.
Pengurusan Masa: Dengan menyoroti sesi dagangan tertentu, ia membantu peniaga menguruskan masa dagangan mereka dengan lebih baik, memberi tumpuan kepada tempoh pasaran yang paling berpotensi.
Sifat ketinggalan: Purata bergerak secara semula jadi merupakan penunjuk ketinggalan dan mungkin tidak menangkap titik perubahan tepat pada masanya di pasaran yang berubah dengan cepat.
Terlalu bergantung pada corak: Kebergantungan yang berlebihan pada corak candlestick boleh menyebabkan penilaian yang salah, kerana tidak semua corak meramalkan pembalikan pasaran dengan tepat.
Risiko pecah palsu: Di pasaran yang berbeza, harga sering melintasi purata bergerak, menghasilkan isyarat palsu.
Sensitiviti Parameter: Prestasi strategi sangat bergantung kepada parameter yang dipilih, yang mungkin memerlukan penyesuaian yang kerap dalam keadaan pasaran yang berbeza.
Penolakan Dasar: Kaedah analisis teknikal murni mungkin mengabaikan faktor asas yang penting, yang membawa kepada pertimbangan yang salah semasa berita atau peristiwa penting.
Overtrading: Dalam pasaran yang sangat tidak menentu, strategi boleh menghasilkan terlalu banyak isyarat perdagangan, meningkatkan kos transaksi dan berpotensi membawa kepada overtrading.
Untuk mengurangkan risiko ini, disyorkan untuk:
Penyesuaian Parameter Dinamik: Melaksanakan tempoh purata bergerak adaptif yang menyesuaikan diri secara automatik berdasarkan turun naik pasaran untuk memenuhi keadaan pasaran yang berbeza.
Mekanisme Pengesahan Isyarat: Memperkenalkan penunjuk teknikal tambahan (seperti RSI, MACD) untuk mengesahkan isyarat perdagangan, meningkatkan kebolehpercayaan isyarat.
Penapis Volatiliti: Masukkan penunjuk ATR (Rentang Benar Purata) untuk menapis isyarat lemah semasa tempoh turun naik yang rendah, hanya berdagang apabila pasaran mempunyai momentum yang mencukupi.
Klasifikasi Negara Pasaran: Membangunkan algoritma untuk mengklasifikasikan keadaan pasaran semasa (trend, julat, turun naik yang tinggi, dan lain-lain) dan mengamalkan strategi perdagangan yang berbeza untuk keadaan yang berbeza.
Pengoptimuman Stop-Loss: Melaksanakan stop-loss dinamik, seperti menggunakan ATR atau tahap sokongan / rintangan baru-baru ini untuk menetapkan titik stop-loss, untuk pengurusan risiko yang lebih baik.
Analisis Volume: Mengintegrasikan data jumlah, melaksanakan isyarat perdagangan hanya apabila disahkan oleh jumlah, untuk meningkatkan kebolehpercayaan isyarat.
Berat Masa: Menganalisis data sejarah untuk menentukan kadar kejayaan pada tempoh masa yang berbeza, menetapkan berat yang berbeza kepada isyarat pada masa yang berbeza.
Integrasi Pembelajaran Mesin: Gunakan algoritma pembelajaran mesin untuk mengoptimumkan pemilihan parameter dan proses penjanaan isyarat, meningkatkan kebolehsesuaian strategi dan prestasi.
Analisis pelbagai jangka masa: Luaskan strategi untuk mempertimbangkan isyarat dari pelbagai jangka masa, memastikan arah perdagangan sejajar dengan trend pasaran yang lebih besar.
Pengoptimuman Pengurusan Modal: Melaksanakan penyesuaian saiz kedudukan dinamik berdasarkan turun naik pasaran dan risiko akaun untuk menentukan saiz setiap perdagangan.
Arahan pengoptimuman ini bertujuan untuk meningkatkan kestabilan, kesesuaian, dan prestasi keseluruhan strategi. Melalui penambahbaikan ini, strategi dapat mengatasi dengan lebih baik dengan persekitaran pasaran yang berbeza, meningkatkan keuntungan, dan mengurangkan risiko.
Kelebihan utama strategi ini terletak pada pendekatan analisis berbilang dimensi dan persembahan visual yang intuitif, yang membolehkan peniaga dengan cepat memahami keadaan pasaran dan membuat keputusan yang tepat.
Untuk meningkatkan lagi keberkesanan strategi, beberapa arah pengoptimuman boleh dipertimbangkan, termasuk pelarasan parameter dinamik, pengenalan mekanisme pengesahan tambahan, dan integrasi teknik yang lebih maju seperti pembelajaran mesin. pengoptimuman ini dapat membantu strategi menyesuaikan diri dengan lebih baik dengan persekitaran pasaran yang berbeza, meningkatkan kestabilan dan keuntungan.
Akhirnya, adalah penting untuk diingat bahawa tidak ada strategi yang tidak dapat dipungkiri. Perdagangan yang berjaya tidak hanya bergantung pada strategi yang baik tetapi juga pada pengurusan risiko yang ketat, pembelajaran pasaran yang berterusan, dan penyempurnaan strategi yang berterusan. Pedagang harus menggunakan strategi ini sebagai sebahagian daripada sistem perdagangan keseluruhan mereka, menggabungkannya dengan kaedah analisis lain dan wawasan pasaran peribadi untuk membuat keputusan perdagangan akhir.
/*backtest start: 2024-06-29 00:00:00 end: 2024-07-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="TMA Overlay Strategy", shorttitle="TMA Overlay", overlay=true) // ### Four Smoothed Moving Averages len1 = input.int(21, minval=1, title="Length 1", group="Smoothed MA Inputs") src1 = close smma1 = 0.0 sma_1 = ta.sma(src1, len1) smma1 := na(smma1[1]) ? sma_1 : (smma1[1] * (len1 - 1) + src1) / len1 plot(smma1, color=color.white, linewidth=2, title="21 SMMA") len2 = input.int(50, minval=1, title="Length 2", group="Smoothed MA Inputs") src2 = close smma2 = 0.0 sma_2 = ta.sma(src2, len2) smma2 := na(smma2[1]) ? sma_2 : (smma2[1] * (len2 - 1) + src2) / len2 plot(smma2, color=color.new(#6aff00, 0), linewidth=2, title="50 SMMA") h100 = input.bool(true, title="Show 100 Line", group="Smoothed MA Inputs") len3 = input.int(100, minval=1, title="Length 3", group="Smoothed MA Inputs") src3 = close smma3 = 0.0 sma_3 = ta.sma(src3, len3) smma3 := na(smma3[1]) ? sma_3 : (smma3[1] * (len3 - 1) + src3) / len3 sma3plot = plot(h100 ? smma3 : na, color=color.new(color.yellow, 0), linewidth=2, title="100 SMMA") len4 = input.int(200, minval=1, title="Length 4", group="Smoothed MA Inputs") src4 = close smma4 = 0.0 sma_4 = ta.sma(src4, len4) smma4 := na(smma4[1]) ? sma_4 : (smma4[1] * (len4 - 1) + src4) / len4 sma4plot = plot(smma4, color=color.new(#ff0500, 0), linewidth=2, title="200 SMMA") // Trend Fill trendFill = input.bool(true, title="Show Trend Fill", group="Smoothed MA Inputs") ema2 = ta.ema(close, 2) ema2plot = plot(ema2, color=color.new(#2ecc71, 100), linewidth=1, title="EMA(2)", editable=false) fill(ema2plot, sma4plot, color=color.new(ema2 > smma4 and trendFill ? color.green : color.red, 85), title="Trend Fill") // End ### // ### 3 Line Strike bearS = input.bool(true, title="Show Bearish 3 Line Strike", group="3 Line Strike") bullS = input.bool(true, title="Show Bullish 3 Line Strike", group="3 Line Strike") bearSig = close[3] > open[3] and close[2] > open[2] and close[1] > open[1] and close < open[1] bullSig = close[3] < open[3] and close[2] < open[2] and close[1] < open[1] and close > open[1] plotshape(bullS ? bullSig : na, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.small, text="3s-Bull", title="3 Line Strike Up") plotshape(bearS ? bearSig : na, style=shape.triangledown, color=color.red, location=location.abovebar, size=size.small, text="3s-Bear", title="3 Line Strike Down") // End ### //### Engulfing Candles bearE = input.bool(true, title="Show Bearish Big A$$ Candles", group="Big A$$ Candles") bullE = input.bool(true, title="Show Bullish Big A$$ Candles", group="Big A$$ Candles") openBarPrevious = open[1] closeBarPrevious = close[1] openBarCurrent = open closeBarCurrent = close bullishEngulfing = openBarCurrent <= closeBarPrevious and openBarCurrent < openBarPrevious and closeBarCurrent > openBarPrevious bearishEngulfing = openBarCurrent >= closeBarPrevious and openBarCurrent > openBarPrevious and closeBarCurrent < openBarPrevious plotshape(bullE ? bullishEngulfing : na, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Big Ass Candle Up") plotshape(bearE ? bearishEngulfing : na, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Big Ass Candle Down") alertcondition(bullishEngulfing, title="Bullish Engulfing", message="[CurrencyPair] [TimeFrame], Bullish candle engulfing previous candle") alertcondition(bearishEngulfing, title="Bearish Engulfing", message="[CurrencyPair] [TimeFrame], Bearish candle engulfing previous candle") // End ### // ### Trading Session ts = input.bool(true, title="Show Trade Session", group="Trade Session") tzOffset = input.int(0, title="Timezone Offset (hours from UTC)", group="Trade Session") label = input.string("CME Open", title="Label", tooltip="For easy identification", group="Trade Session") startHour = input.int(7, title="Analysis Start Hour", minval=0, maxval=23, group="Trade Session") startMinute = input.int(0, title="Analysis Start Minute", minval=0, maxval=59, group="Trade Session") startHour2 = input.int(8, title="Session Start Hour", minval=0, maxval=23, group="Trade Session") startMinute2 = input.int(30, title="Session Start Minute", minval=0, maxval=59, group="Trade Session") endHour2 = input.int(12, title="Session End Hour", minval=0, maxval=23, group="Trade Session") endMinute2 = input.int(0, title="Session End Minute", minval=0, maxval=59, group="Trade Session") rangeColor = input.color(#1976d21f, title="Color", group="Trade Session") showMon = input.bool(true, title="Monday", group="Trade Session") showTue = input.bool(true, title="Tuesday", group="Trade Session") showWed = input.bool(true, title="Wednesday", group="Trade Session") showThu = input.bool(true, title="Thursday", group="Trade Session") showFri = input.bool(true, title="Friday", group="Trade Session") showSat = input.bool(false, title="Saturday", group="Trade Session") showSun = input.bool(false, title="Sunday", group="Trade Session") startTime = timestamp("UTC", year(time), month(time), dayofmonth(time), startHour - tzOffset, startMinute) endTime = timestamp("UTC", year(time), month(time), dayofmonth(time), endHour2 - tzOffset, endMinute2) active = (startTime <= time and time <= endTime and ts) and ((dayofweek == dayofweek.monday and showMon) or (dayofweek == dayofweek.tuesday and showTue) or (dayofweek == dayofweek.wednesday and showWed) or (dayofweek == dayofweek.thursday and showThu) or (dayofweek == dayofweek.friday and showFri) or (dayofweek == dayofweek.saturday and showSat) or (dayofweek == dayofweek.sunday and showSun)) bgcolor(color=active ? rangeColor : na, title="Session Background") startTime2 = timestamp("UTC", year(time), month(time), dayofmonth(time), startHour2 - tzOffset, startMinute2) endTime2 = timestamp("UTC", year(time), month(time), dayofmonth(time), endHour2 - tzOffset, endMinute2) active2 = (startTime2 <= time and time <= endTime2 and ts) and ((dayofweek == dayofweek.monday and showMon) or (dayofweek == dayofweek.tuesday and showTue) or (dayofweek == dayofweek.wednesday and showWed) or (dayofweek == dayofweek.thursday and showThu) or (dayofweek == dayofweek.friday and showFri) or (dayofweek == dayofweek.saturday and showSat) or (dayofweek == dayofweek.sunday and showSun)) bgcolor(color=active2 ? rangeColor : na, title="Session Background") // End ### // Trading Strategy longCondition = bullSig or bullishEngulfing shortCondition = bearSig or bearishEngulfing if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // eof