Chiến lược này sử dụng Bollinger Bands, EMA và mô hình nến cho giao dịch cờ bạc hai dòng, thuộc về các chiến lược giao dịch ngắn hạn.
Chiến lược bao gồm các phần sau:
Bollinger Bands Tạo ra đường ray trên và dưới dựa trên giá đóng cửa và độ lệch chuẩn. Đi ngắn khi giá tiếp cận đường ray trên, đi dài khi tiếp cận đường ray dưới.
EMA Tính toán đường trung bình động theo hàm số 21 ngày và tạo ra tín hiệu giao dịch khi giá vượt qua đường EMA.
Mô hình nến Xác định các điểm đảo ngược giá như lớp mây tối dưới cùng và mô hình xuyên thủng trên cùng để kích hoạt giao dịch.
Cờ bạc hai dòng Đi dài và ngắn đồng thời dựa trên các tín hiệu từ Bollinger, EMA crossover và mô hình nến.
Lý do là:
Sử dụng Bollinger Bands để xác định các điểm đảo ngược tiềm năng, đi ngắn ở đường ray phía trên và dài ở đường ray phía dưới. Tính toán EMA 21 ngày và đi dài trên thập tự vàng, đi ngắn trên thập tự chết. Ngoài ra, sử dụng các mẫu nến để xác định sự đảo ngược, đi dài trên mây tối phía dưới và ngắn trên lỗ thủng phía trên. Kết hợp cả ba tín hiệu để đưa ra quyết định giao dịch hai hướng cuối cùng.
Chiến lược tích hợp nhiều tín hiệu xác nhận để cải thiện hiệu quả các quyết định giao dịch.
Những lợi thế chính của chiến lược này là:
Sử dụng Bollinger, EMA và nến cùng nhau làm tăng độ chính xác bằng cách xác nhận tín hiệu. Điều này giúp tránh các tín hiệu sai và giao dịch sai.
Các tín hiệu kết hợp nhanh chóng xác định các điểm đảo ngược tiềm năng để giao dịch kịp thời trước khi đảo ngược mở rộng.
Giữ cả hai vị trí dài và ngắn lợi nhuận từ các động thái lớn theo cả hai hướng. Điều này làm giảm rủi ro trong thị trường một chiều.
Bollinger ngắn hạn và EMA cho phép nắm bắt các động thái ngắn hạn, phù hợp với giao dịch thường xuyên và phản ứng với biến động tần số cao.
Mã chiến lược hoàn chỉnh làm cho nó trực tiếp có thể sử dụng cho giao dịch trực tiếp.
Những rủi ro tiềm ẩn là:
Whipsaw của tín hiệu Bollinger, EMA và candlestick có thể gây ra stop loss liên tiếp. Điều chỉnh các tham số để đảm bảo stop loss hợp lý.
Bắt cả dài và ngắn có thể khuếch đại tổn thất.
Việc giao dịch ngắn hạn thường xuyên đòi hỏi phải theo dõi chặt chẽ thị trường.
Bollinger và EMA có không gian tối ưu hóa tương đối nhỏ.
Một phần của chiến lược dựa trên các tín hiệu nến có thể không rõ ràng đôi khi.
Chiến lược có thể được cải thiện trong các khía cạnh sau:
Thêm các chỉ số khác như KD, MACD đa dạng hóa các nguồn tín hiệu và cải thiện độ chính xác quyết định.
Sử dụng các thuật toán ML để phân tích dữ liệu lịch sử và tăng hoặc thay thế một số tín hiệu chỉ số để giảm can thiệp thủ công.
Đưa ra stop profit thích nghi dựa trên hiệu suất và stop loss để giảm rủi ro.
Tối ưu hóa phân bổ vốn, kích thước vị trí và chiến lược kiểm soát rủi ro theo điều kiện thị trường.
Sử dụng backtesting và giao dịch giấy để lặp đi lặp lại tối ưu hóa các thông số và hỗ trợ các quyết định giao dịch trực tiếp.
Parameterize chiến lược dựa trên kết quả backtest và kết hợp vào hệ thống giao dịch tự động để thực hiện tự do.
Chiến lược này tích hợp các tín hiệu Bollinger, EMA và candlestick để xác thực nhiều lần. Giao dịch hai đường dẫn tiếp tục cải thiện lợi nhuận. Với phản ứng nhanh, nó phù hợp với giao dịch thường xuyên ngắn hạn. Ngừng lợi nhuận / lỗ hiệu quả và tối ưu hóa tham số có thể tăng hiệu suất trong khi giảm rủi ro. Nhìn chung, chiến lược đơn giản và thực tế này có giá trị thực tế mạnh.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Design by MrPhu in August,10,2018 strategy("TrumpShipper_Long_Short V26", overlay=true) filterFractals = input(true, title=" Follow Code #Trump On/Off") dt = 0.0001 confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1]) prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1] if (prediction) strategy.exit("Close", "Short ") strategy.entry("Long ", strategy.long) if (not prediction) strategy.exit("Close", "Long ") strategy.entry("Short ", strategy.short) ///////////Bollinger Band/////////////// length = 20 crc = close, title="Source" mult = 2.0 basis = sma(crc, length) dev = mult * stdev(crc, length) upper = basis + dev lower = basis - dev spanColor = prediction ? green : red, transp=90 p1 = plot(upper, title="Short", style=line, linewidth=1, color=spanColor) p2 = plot(lower, title="Long", style=line, linewidth=1, color=spanColor) fill(p1, p2, color=spanColor, transp=90, title="Fill") ///////////// Optional_TimeFrame = 'D' M_HIGH = request.security(syminfo.tickerid, Optional_TimeFrame, high) M_OPEN = request.security(syminfo.tickerid, Optional_TimeFrame, open) M_LOW = request.security(syminfo.tickerid, Optional_TimeFrame, low) H_RANGE = M_HIGH-M_OPEN L_RANGE = M_OPEN-M_LOW H_236 = M_HIGH - H_RANGE * 0.236 H_382 = M_HIGH - H_RANGE * 0.382 H_500 = M_HIGH - H_RANGE * 0.500 H_618 = M_HIGH - H_RANGE * 0.618 H_764 = M_HIGH - H_RANGE * 0.764 L_236 = M_LOW + L_RANGE * 0.236 L_382 = M_LOW + L_RANGE * 0.382 L_500 = M_LOW + L_RANGE * 0.500 L_618 = M_LOW + L_RANGE * 0.618 L_764 = M_LOW + L_RANGE * 0.764 pl1=plot(M_HIGH, color=M_HIGH != M_HIGH[1] ?na:black, style=line, linewidth=1, transp=80) pl2=plot(H_236, color=H_236 != H_236[1] ?na:gray, style=line, linewidth=1, transp=80) pl3=plot(H_382, color=H_382 != H_382[1] ?na:black, style=line, linewidth=1, transp=80) pl4=plot(H_500, color=H_500 != H_500[1] ?na:red, style=line, linewidth=1, transp=80) pl5=plot(H_618, color=H_618 != H_618[1] ?na:gray, style=line, linewidth=1, transp=80) pl6=plot(H_764, color=H_764 != H_764[1] ?na:gray, style=line, linewidth=1, transp=80) pl7=plot(M_OPEN, color=M_OPEN != M_OPEN[1] ?na:blue, style=line, linewidth=2) pl8=plot(L_236, color=L_236 != L_236[1] ?na:gray, style=line, linewidth=1, transp=80) pl9=plot(L_382, color=L_382 != L_382[1] ?na:black, style=line, linewidth=1, transp=80) pl10=plot(L_500, color=L_500 != L_500[1] ?na:red, style=line, linewidth=1, transp=80) pl11=plot(L_618, color=L_618 != L_618[1] ?na:black, style=line, linewidth=1, transp=80) pl12=plot(L_764, color=L_764 != L_764[1] ?na:gray, style=line, linewidth=1, transp=80) pl13=plot(M_LOW, color=M_LOW != M_LOW[1] ?na:black, style=line, linewidth=1, transp=80) SHOW_MA = false MA_SRC = hlc3 MA_LENGTH = 21 _MA = ema(MA_SRC, MA_LENGTH) pl14=plot(not SHOW_MA ? na : _MA, color=teal, linewidth=2) SHOW_SIGNALS = true BUYX(_F) => cross(_F, MA_SRC) and rising(_MA, 1) SELX(_F) => cross(_F, MA_SRC) and falling(_MA, 1) SEL_SIGNAL = SELX(H_236) or SELX(H_382) or SELX(H_500) or SELX(H_618) or SELX(H_764) or SELX(L_236) or SELX(L_382) or SELX(L_500) or SELX(L_618) or SELX(H_764) BUY_SIGNAL = BUYX(H_236) or BUYX(H_382) or BUYX(H_500) or BUYX(H_618) or BUYX(H_764) or BUYX(L_236) or BUYX(L_382) or BUYX(L_500) or BUYX(L_618) or BUYX(H_764) //================= Chart 30m =================///// //Jurij h_left = 10 h_right = 10 //barCount = nz(barCount[1]) + 1 //check history and realtime PTZ h_left_low = lowest(h_left) h_left_high = highest(h_left) newlow = low <= h_left_low newhigh = high >= h_left_high central_bar_low = low[h_right + 1] central_bar_high = high[h_right + 1] full_zone_low = lowest(h_left + h_right + 1) full_zone_high = highest(h_left + h_right + 1) central_bar_is_highest = central_bar_high >= full_zone_high central_bar_is_lowest = central_bar_low <= full_zone_low plotchar(central_bar_is_highest ? -1 : 0, offset=-h_right-1 ,color=red, text="Top") plotchar(central_bar_is_lowest ? 1 : 0, offset=-h_right-1 ,location=location.belowbar, color=green, text="Bottom")