Strategi ini menggunakan kombinasi rata-rata bergerak dari kerangka waktu yang berbeda untuk mengidentifikasi pergantian tren pada grafik jam-jam besar dan menengah, dan untuk melakukan pelacakan tren yang berisiko rendah. Strategi ini memiliki keuntungan konfigurasi yang fleksibel, sederhana, dan efisiensi dana yang tinggi, yang cocok untuk pedagang yang memegang posisi jangka panjang dan menengah untuk mengikuti tren.
Strategi ini menggunakan tiga garis rata-rata bergerak 5, 20, dan 40 hari untuk menentukan kombinasi urutan tren dalam kerangka waktu yang berbeda.
Secara khusus, melewati garis cepat 5 hari dengan garis tengah 20 hari dianggap sebagai sinyal kenaikan garis pendek, dan melewati garis lambat 20 hari dengan garis tengah 40 hari dianggap sebagai sinyal kenaikan garis tengah. Ketika garis 3 cepat > 20 hari > 40 hari, dianggap sebagai siklus multi-head; ketika garis 3 cepat > 20 hari > 40 hari, dianggap sebagai siklus kosong.
Dengan demikian, berdasarkan arah tren siklus besar, kemudian dikombinasikan dengan kekuatan siklus kecil untuk mendeteksi entri tertentu. Artinya, hanya dengan tren besar yang seragam dan siklus kecil yang kuat, posisi dapat dibuka, yang dapat secara efektif menyaring terbalik palsu terobosan, untuk mencapai operasi win-rate tinggi.
Selain itu, strategi ini juga menggunakan ATR stop loss untuk mengendalikan risiko investasi tunggal dan meningkatkan tingkat keuntungan lebih lanjut.
Konfigurasi fleksibel, pengguna dapat menyesuaikan parameter rata-rata bergerak sendiri untuk menyesuaikan dengan varietas dan preferensi perdagangan yang berbeda
Perangkat lunak ini sangat mudah untuk digunakan oleh pengguna baru.
Dengan menggunakan dana yang efisien, Anda dapat memanfaatkan pengaruh dana secara maksimal.
Pengendalian risiko, mekanisme stop loss yang efektif untuk mencegah kerugian besar
Kemampuan untuk mengikuti tren yang kuat, dan keuntungan yang berkelanjutan setelah siklus besar menentukan arah
Tingkat kemenangan yang lebih tinggi, kualitas sinyal yang lebih baik, dan kesalahan-kesalahan yang lebih sedikit
Pengertian siklus besar tergantung pada susunan garis rata-rata pergeseran, ada risiko kesalahan pengertian yang tertunda
Deteksi intensitas siklus kecil hanya dengan satu garis K, mungkin dipicu lebih awal, dapat rileks dengan tepat
Stop loss yang tetap dan dapat dioptimalkan untuk stop loss dinamis
Anda dapat mempertimbangkan untuk menambahkan filter tambahan, seperti energi volume transaksi, dll.
Anda dapat mencoba kombinasi parameter rata-rata bergerak yang berbeda untuk mengoptimalkan strategi
Strategi ini mengintegrasikan analisis multi-frame waktu dan manajemen stop loss untuk mencapai perdagangan trend tracking yang berisiko rendah. Dengan menyesuaikan parameter, strategi ini dapat diterapkan pada berbagai varietas untuk memenuhi kebutuhan para pengikut tren. Strategi ini memberikan keputusan perdagangan yang lebih kuat dan sinyal yang lebih efisien dibandingkan dengan sistem frame waktu tunggal tradisional. Secara keseluruhan, strategi ini memiliki kemampuan adaptasi pasar dan prospek pertumbuhan yang baik.
Strategi ini menggunakan kombinasi rata-rata bergerak di seluruh kerangka waktu untuk mengidentifikasi rotasi tren pada grafik per jam, harian dan mingguan. Ini memungkinkan tren berisiko rendah setelah perdagangan. Strategi ini fleksibel, mudah diterapkan, efisien modal dan cocok untuk pedagang tren jangka menengah dan panjang.
Strategi ini menggunakan rata-rata bergerak 5, 20 dan 40 hari untuk menentukan keselarasan tren di berbagai kerangka waktu. Berdasarkan konsistensi antara kerangka waktu yang lebih besar dan lebih kecil, ia mengidentifikasi siklus bullish dan bearish.
Secara khusus, penyeberangan MA cepat 5 hari di atas MA menengah 20 hari menunjukkan tren naik dalam jangka pendek. Penyeberangan MA menengah 20 hari di atas MA lambat 40 hari menandakan tren naik dalam jangka menengah. Ketika MA cepat, menengah dan lambat selaras positif (5 hari > 20 hari > 40 hari), itu adalah siklus bull. Ketika mereka selaras negatif (5 hari < 20 hari < 40 hari), itu adalah siklus bear.
Dengan menentukan arah dari siklus yang lebih besar dan mengkonfirmasi kekuatan pada siklus yang lebih kecil, strategi ini membuka posisi hanya ketika tren utama dan momentum kecil sejajar.
Strategi ini juga memanfaatkan ATR trailing stops untuk mengendalikan risiko perdagangan tunggal dan meningkatkan profitabilitas.
Konfigurasi yang fleksibel sesuai dengan instrumen dan gaya perdagangan yang berbeda
Sederhana untuk diterapkan bahkan untuk pedagang pemula
Efisiensi modal yang tinggi untuk memaksimalkan leverage
Kontrol risiko yang efektif untuk menghindari kerugian yang signifikan
Tren kuat menyusul kemampuan untuk keuntungan berkelanjutan
Tingkat kemenangan tinggi karena sinyal yang kuat dan lebih sedikit whipsaws
MA crossovers mungkin terlambat dan menyebabkan terlambat trend deteksi
Deteksi kekuatan lilin tunggal bisa memicu awal masuk, kondisi rileks
Pembuatan ATR stop loss, dioptimalkan ke dynamic stop
Pertimbangkan untuk menambahkan filter tambahan seperti volume
Jelajahi parameter MA yang berbeda untuk optimasi
Strategi ini mengintegrasikan beberapa analisis jangka waktu dan manajemen risiko untuk tren berisiko rendah setelah perdagangan. Dengan menyesuaikan parameter, dapat disesuaikan dengan instrumen yang berbeda agar sesuai dengan pedagang tren. Dibandingkan dengan sistem jangka waktu tunggal, ia membuat keputusan perdagangan yang lebih kuat dan menghasilkan sinyal efisiensi yang lebih tinggi. Kesimpulannya, strategi ini memiliki kemampuan adaptasi pasar dan potensi pengembangan yang baik.
/*backtest start: 2023-10-17 00:00:00 end: 2023-11-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © kgynofomo //@version=5 strategy(title="[Salavi] | Andy Advance Pro Strategy [BTC|M15]",overlay = true, pyramiding = 1,initial_capital = 10000, default_qty_type = strategy.cash,default_qty_value = 10000) ema_short = ta.ema(close,5) ema_middle = ta.ema(close,20) ema_long = ta.ema(close,40) cycle_1 = ema_short>ema_middle and ema_middle>ema_long cycle_2 = ema_middle>ema_short and ema_short>ema_long cycle_3 = ema_middle>ema_long and ema_long>ema_short cycle_4 = ema_long>ema_middle and ema_middle>ema_short cycle_5 = ema_long>ema_short and ema_short>ema_middle cycle_6 = ema_short>ema_long and ema_long>ema_middle bull_cycle = cycle_1 or cycle_2 or cycle_3 bear_cycle = cycle_4 or cycle_5 or cycle_6 // label.new("cycle_1") // bgcolor(color=cycle_1?color.rgb(82, 255, 148, 60):na) // bgcolor(color=cycle_2?color.rgb(82, 255, 148, 70):na) // bgcolor(color=cycle_3?color.rgb(82, 255, 148, 80):na) // bgcolor(color=cycle_4?color.rgb(255, 82, 82, 80):na) // bgcolor(color=cycle_5?color.rgb(255, 82, 82, 70):na) // bgcolor(color=cycle_6?color.rgb(255, 82, 82, 60):na) // Inputs a = input(2, title='Key Vaule. \'This changes the sensitivity\'') c = input(7, title='ATR Period') h = false xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close xATRTrailingStop = 0.0 iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1 xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ema = ta.ema(src, 1) above = ta.crossover(ema, xATRTrailingStop) below = ta.crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop atr = ta.atr(14) atr_length = input.int(25) atr_rsi = ta.rsi(atr,atr_length) atr_valid = atr_rsi>50 long_condition = buy and bull_cycle and atr_valid short_condition = sell and bear_cycle and atr_valid Exit_long_condition = short_condition Exit_short_condition = long_condition if long_condition strategy.entry("Andy Buy",strategy.long, limit=close,comment="Andy Buy Here") if Exit_long_condition strategy.close("Andy Buy",comment="Andy Buy Out") // strategy.entry("Andy fandan Short",strategy.short, limit=close,comment="Andy 翻單 short Here") // strategy.close("Andy fandan Buy",comment="Andy short Out") if short_condition strategy.entry("Andy Short",strategy.short, limit=close,comment="Andy short Here") // strategy.exit("STR","Long",stop=longstoploss) if Exit_short_condition strategy.close("Andy Short",comment="Andy short Out") // strategy.entry("Andy fandan Buy",strategy.long, limit=close,comment="Andy 翻單 Buy Here") // strategy.close("Andy fandan Short",comment="Andy Buy Out") inLongTrade = strategy.position_size > 0 inLongTradecolor = #58D68D notInTrade = strategy.position_size == 0 inShortTrade = strategy.position_size < 0 // bgcolor(color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na) plotshape(close!=0,location = location.bottom,color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na) plotshape(long_condition, title='Buy', text='Andy Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(short_condition, title='Sell', text='Andy Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) //atr > close *0.01* parameter // MONTHLY TABLE PERFORMANCE - Developed by @QuantNomad // ************************************************************************************************************************************************************************************************************************************************************************* show_performance = input.bool(true, 'Show Monthly Performance ?', group='Performance - credits: @QuantNomad') prec = input(2, 'Return Precision', group='Performance - credits: @QuantNomad') if show_performance new_month = month(time) != month(time[1]) new_year = year(time) != year(time[1]) eq = strategy.equity bar_pnl = eq / eq[1] - 1 cur_month_pnl = 0.0 cur_year_pnl = 0.0 // Current Monthly P&L cur_month_pnl := new_month ? 0.0 : (1 + cur_month_pnl[1]) * (1 + bar_pnl) - 1 // Current Yearly P&L cur_year_pnl := new_year ? 0.0 : (1 + cur_year_pnl[1]) * (1 + bar_pnl) - 1 // Arrays to store Yearly and Monthly P&Ls var month_pnl = array.new_float(0) var month_time = array.new_int(0) var year_pnl = array.new_float(0) var year_time = array.new_int(0) last_computed = false if (not na(cur_month_pnl[1]) and (new_month or barstate.islastconfirmedhistory)) if (last_computed[1]) array.pop(month_pnl) array.pop(month_time) array.push(month_pnl , cur_month_pnl[1]) array.push(month_time, time[1]) if (not na(cur_year_pnl[1]) and (new_year or barstate.islastconfirmedhistory)) if (last_computed[1]) array.pop(year_pnl) array.pop(year_time) array.push(year_pnl , cur_year_pnl[1]) array.push(year_time, time[1]) last_computed := barstate.islastconfirmedhistory ? true : nz(last_computed[1]) // Monthly P&L Table var monthly_table = table(na) if (barstate.islastconfirmedhistory) monthly_table := table.new(position.bottom_center, columns = 14, rows = array.size(year_pnl) + 1, border_width = 1) table.cell(monthly_table, 0, 0, "", bgcolor = #cccccc) table.cell(monthly_table, 1, 0, "Jan", bgcolor = #cccccc) table.cell(monthly_table, 2, 0, "Feb", bgcolor = #cccccc) table.cell(monthly_table, 3, 0, "Mar", bgcolor = #cccccc) table.cell(monthly_table, 4, 0, "Apr", bgcolor = #cccccc) table.cell(monthly_table, 5, 0, "May", bgcolor = #cccccc) table.cell(monthly_table, 6, 0, "Jun", bgcolor = #cccccc) table.cell(monthly_table, 7, 0, "Jul", bgcolor = #cccccc) table.cell(monthly_table, 8, 0, "Aug", bgcolor = #cccccc) table.cell(monthly_table, 9, 0, "Sep", bgcolor = #cccccc) table.cell(monthly_table, 10, 0, "Oct", bgcolor = #cccccc) table.cell(monthly_table, 11, 0, "Nov", bgcolor = #cccccc) table.cell(monthly_table, 12, 0, "Dec", bgcolor = #cccccc) table.cell(monthly_table, 13, 0, "Year", bgcolor = #999999) for yi = 0 to array.size(year_pnl) - 1 table.cell(monthly_table, 0, yi + 1, str.tostring(year(array.get(year_time, yi))), bgcolor = #cccccc) y_color = array.get(year_pnl, yi) > 0 ? color.new(color.teal, transp = 40) : color.new(color.gray, transp = 40) table.cell(monthly_table, 13, yi + 1, str.tostring(math.round(array.get(year_pnl, yi) * 100, prec)), bgcolor = y_color, text_color=color.new(color.white, 0)) for mi = 0 to array.size(month_time) - 1 m_row = year(array.get(month_time, mi)) - year(array.get(year_time, 0)) + 1 m_col = month(array.get(month_time, mi)) m_color = array.get(month_pnl, mi) > 0 ? color.new(color.teal, transp = 40) : color.new(color.gray, transp = 40) table.cell(monthly_table, m_col, m_row, str.tostring(math.round(array.get(month_pnl, mi) * 100, prec)), bgcolor = m_color, text_color=color.new(color.white, 0))