Chiến lược này sử dụng sự kết hợp giữa các đường trung bình di động trên các khung thời gian, nhận ra sự thay đổi xu hướng trên biểu đồ giờ trung bình lớn, để thực hiện các giao dịch theo dõi xu hướng có rủi ro thấp. Chiến lược có tính linh hoạt, thực hiện đơn giản, hiệu quả tiền tệ cao, phù hợp với các nhà giao dịch nắm giữ đường trung bình và dài để theo dõi xu hướng.
Chiến lược sử dụng ba đường trung bình di chuyển 5, 20 và 40 ngày để xác định sự sắp xếp của xu hướng trong các khung thời gian khác nhau.
Cụ thể, đường nhanh 5 ngày qua đường trung bình 20 ngày được coi là tín hiệu tăng đường ngắn, đường chậm 40 ngày qua đường trung bình 20 ngày được coi là tín hiệu tăng đường trung gian. Khi đường nhanh trung bình chậm 3 ngày là đúng ((5 ngày > 20 ngày > 40 ngày), được đánh giá là chu kỳ đa đầu; khi đường nhanh trung bình chậm 3 ngày là ngược lại ((5 ngày < 20 ngày < 40 ngày), được đánh giá là chu kỳ không đầu.
Do đó, theo hướng xu hướng chu kỳ lớn, kết hợp với sức mạnh chu kỳ nhỏ để phát hiện các bước vào cụ thể. Đó là chỉ khi xu hướng lớn đồng chiều và chu kỳ nhỏ mạnh, bạn có thể lọc hiệu quả các bước đột phá đảo ngược giả để đạt được hoạt động tỷ lệ thắng cao.
Ngoài ra, các chiến lược cũng sử dụng ATR để kiểm soát rủi ro của một khoản tiền để tăng lợi nhuận hơn nữa.
Thiết lập linh hoạt, người dùng có thể tự điều chỉnh các tham số đường trung bình di động để phù hợp với các giống và sở thích giao dịch khác nhau
Việc thực hiện rất đơn giản và dễ dàng cho người mới sử dụng.
Sử dụng vốn hiệu quả cao, tận dụng tối đa đòn bẩy của vốn
Các cơ chế ngăn chặn rủi ro có khả năng ngăn chặn thiệt hại lớn
Khả năng theo dõi xu hướng mạnh mẽ, lợi nhuận bền vững sau khi chu kỳ lớn xác định hướng
Tỷ lệ thắng cao, tín hiệu giao dịch chất lượng tốt, ít nhầm đường
Quyết định chu kỳ lớn phụ thuộc vào sắp xếp đường trung tuyến di chuyển, có nguy cơ sai đoán chậm
Kiểm tra cường độ chu kỳ nhỏ chỉ bằng một dây K, có thể được kích hoạt sớm, có thể thư giãn thích hợp
Lượng dừng cố định, có thể được tối ưu hóa để dừng động
Có thể xem xét thêm các điều kiện lọc, chẳng hạn như năng lượng khối lượng giao dịch
Bạn có thể thử các tổ hợp các thông số động trung bình khác nhau để tối ưu hóa chiến lược.
Chiến lược này tích hợp phân tích nhiều khung thời gian và quản lý dừng lỗ, đạt được giao dịch theo dõi xu hướng rủi ro thấp. Bằng cách điều chỉnh các tham số, nó có thể được áp dụng cho các giống khác nhau để đáp ứng nhu cầu của người theo xu hướng. Chiến lược này đưa ra quyết định giao dịch vững chắc hơn và tín hiệu hiệu quả hơn so với hệ thống khung thời gian đơn truyền thống. Nhìn chung, chiến lược có khả năng thích nghi thị trường và triển vọng phát triển tốt.
Chiến lược này sử dụng sự kết hợp của các đường trung bình động trên các khung thời gian để xác định xoay xu hướng trên biểu đồ hàng giờ, hàng ngày và hàng tuần. Nó cho phép xu hướng rủi ro thấp sau khi giao dịch. Chiến lược linh hoạt, đơn giản để thực hiện, hiệu quả vốn và phù hợp với các nhà giao dịch xu hướng trung hạn và dài hạn.
Chiến lược sử dụng trung bình động 5, 20 và 40 ngày để xác định sự liên kết của các xu hướng trên các khung thời gian khác nhau. Dựa trên sự nhất quán giữa các khung thời gian lớn hơn và nhỏ hơn, nó xác định chu kỳ tăng và giảm.
Cụ thể, việc vượt qua MA nhanh 5 ngày trên MA trung bình 20 ngày cho thấy xu hướng tăng trong ngắn hạn. Việc vượt qua MA trung bình 20 ngày trên MA chậm 40 ngày báo hiệu xu hướng tăng trong trung hạn. Khi các MA nhanh, trung bình và chậm được sắp xếp tích cực (5 ngày > 20 ngày > 40 ngày), đó là chu kỳ tăng. Khi chúng được sắp xếp tiêu cực (5 ngày < 20 ngày < 40 ngày), đó là chu kỳ gấu.
Bằng cách xác định hướng từ các chu kỳ lớn hơn và xác nhận sức mạnh trên các chu kỳ nhỏ hơn, chiến lược này chỉ mở các vị trí khi xu hướng chính và động lực nhỏ phù hợp.
Chiến lược cũng sử dụng các điểm dừng ATR để kiểm soát rủi ro thương mại duy nhất và tiếp tục cải thiện lợi nhuận.
Các cấu hình linh hoạt phù hợp với các công cụ và phong cách giao dịch khác nhau
Dễ dàng thực hiện ngay cả cho các nhà giao dịch mới bắt đầu
Hiệu quả vốn cao để tối đa hóa đòn bẩy
Kiểm soát rủi ro hiệu quả để tránh tổn thất đáng kể
Xu hướng mạnh mẽ sau khả năng lợi nhuận bền vững
Tỷ lệ thắng cao do tín hiệu mạnh mẽ và ít chém hơn
MA crossovers có thể bị chậm và gây ra phát hiện xu hướng muộn
Khám phá sức mạnh của một ngọn nến duy nhất có thể kích hoạt nhập cảnh sớm, trạng thái thư giãn
Thiết lập mất mát dừng ATR, tối ưu hóa đến dừng động
Xem xét thêm các bộ lọc bổ sung như khối lượng
Khám phá các thông số MA khác nhau để tối ưu hóa
Chiến lược này tích hợp nhiều phân tích khung thời gian và quản lý rủi ro cho xu hướng rủi ro thấp sau giao dịch. Bằng cách điều chỉnh các tham số, nó có thể được điều chỉnh cho các công cụ khác nhau để phù hợp với các nhà giao dịch xu hướng. So với các hệ thống khung thời gian duy nhất, nó đưa ra các quyết định giao dịch mạnh mẽ hơn và tạo ra các tín hiệu hiệu quả cao hơn.
/*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))