Chiến lược này được đặt tên là
Chiến lược dựa chủ yếu trên hai chỉ số kỹ thuật:
Chỉ số xu hướng: Chỉ số STC để xác định hướng xu hướng. STC bao gồm đường chỉ số MACD, Stochastic và STC. Một sự đột phá tăng từ vùng 0-25 báo hiệu xu hướng tăng, trong khi một sự đột phá giảm từ vùng 75-100 báo hiệu xu hướng giảm.
Moving average crossover: Đường trung bình di chuyển đơn giản nhanh (thời gian mặc định 35) vượt trên/dưới SMA chậm (thời gian mặc định 200). Một tín hiệu tăng được kích hoạt khi SMA nhanh vượt trên SMA chậm. Một tín hiệu giảm được kích hoạt trên giao diện đối diện.
Logic tín hiệu giao dịch được định nghĩa như sau:
Tín hiệu dài: STC phá vỡ trên đường 25, SMA nhanh nằm trên SMA chậm và giá đóng ở trên SMA nhanh.
Tín hiệu ngắn: STC phá vỡ dưới đường 75, SMA nhanh dưới SMA chậm và giá đóng dưới SMA nhanh.
Những lợi thế của chiến lược này bao gồm:
Các tín hiệu giao dịch đáng tin cậy từ sự kết hợp các chỉ số xu hướng và trung bình động.
Thời gian trung bình động có thể tùy chỉnh. Thời gian MA có thể được tối ưu hóa cho các điều kiện thị trường khác nhau.
Rủi ro có thể kiểm soát được. STC xác định mức mua quá mức / bán quá mức để tránh mua đỉnh và bán đáy. Các điểm dừng mục tiêu đặt phạm vi lợi nhuận / lỗ 400 điểm.
Có một số rủi ro cần xem xét:
Có khả năng STC sẽ phá vỡ, cần phải được xác nhận bằng giá.
Có nhiều tín hiệu sai từ các đường chéo MA, đòi hỏi phải điều chỉnh thời gian MA.
Chỉ giao dịch theo một hướng tại một thời điểm giới hạn không gian cho các vị trí mở xem xét cho phép giao dịch hai hướng
Không xử lý rủi ro chênh lệch trong giao dịch ngoại hối ký quỹ.
Các con đường tối ưu hóa có thể bao gồm:
Điều chỉnh các thông số STC mua quá mức / bán quá mức.
Tối ưu hóa thời gian MA để cải thiện độ tin cậy tín hiệu chéo.
Thêm các bộ lọc bổ sung như Bollinger Bands để giảm các giao dịch breakout sai.
Thực hiện logic giao dịch hai hướng để tăng năng lực.
Thêm logic dừng lỗ để kiểm soát lỗ cho mỗi giao dịch.
Tóm lại, chiến lược này kết hợp các chỉ số chéo xu hướng và trung bình động để xác định hướng xu hướng và thời gian nhập. Với kiểm soát rủi ro thích hợp, nó có thể đạt được lợi nhuận tốt.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Shaff Trend Cycle coded by Alex Orekhov (everget) // Strategy and its additional conditions provided by greenmask // Schaff Trend Cycle script may be freely distributed under the MIT license. strategy("STC", shorttitle="STC") fastLength = input(title="MACD Fast Length", type=input.integer, defval=23) slowLength = input(title="MACD Slow Length", type=input.integer, defval=50) cycleLength = input(title="Cycle Length", type=input.integer, defval=10) d1Length = input(title="1st %D Length", type=input.integer, defval=3) d2Length = input(title="2nd %D Length", type=input.integer, defval=3) src = close highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true) macd = ema(src, fastLength) - ema(src, slowLength) k = nz(fixnan(stoch(macd, macd, macd, cycleLength))) d = ema(k, d1Length) kd = nz(fixnan(stoch(d, d, d, cycleLength))) stc = ema(kd, d2Length) stc := stc > 100 ? 100 : stc < 0 ? 0 : stc stcColor = not highlightBreakouts ? (stc > stc[1] ? color.green : color.red) : #ff3013 stcPlot = plot(stc, title="STC", color=stcColor, transp=0) upper = 75 lower = 25 transparent = color.new(color.white, 100) upperLevel = plot(upper, title="Upper", color=color.gray) hline(50, title="Middle", linestyle=hline.style_dotted) lowerLevel = plot(lower, title="Lower", color=color.gray) fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90) upperFillColor = stc > upper and highlightBreakouts ? color.green : transparent lowerFillColor = stc < lower and highlightBreakouts ? color.red : transparent fill(upperLevel, stcPlot, color=upperFillColor, transp=80) fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80) strategy.initial_capital = 50000 ordersize=floor(strategy.initial_capital/close) targetvalue = input(title="Target/stop", type=input.integer, defval=400) ma1length = input(title="SMA1", type=input.integer, defval=35) ma2length = input(title="SMA2", type=input.integer, defval=200) ma1 = ema(close,ma1length) ma2 = ema(close,ma2length) bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1 bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1 if (bullbuy) strategy.entry("Riposte", strategy.long, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) if (bearsell) strategy.entry("Riposte", strategy.short, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) //plotshape(bullbuy, title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte") //plotshape(bearsell, title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")