यह रणनीति प्रसिद्ध कछुआ व्यापार प्रणाली पर आधारित है और मूल नियमों का यथासंभव पालन करने का प्रयास करती है। यह एक प्रवृत्ति-अनुसरण प्रणाली है जो डबल चलती औसत का उपयोग करके प्रवेश और निकास संकेत उत्पन्न करती है।
इस रणनीति के फायदे:
कुछ जोखिम भी हैं:
जोखिमों को निम्न द्वारा कम किया जा सकता हैः
इस रणनीति में निम्नलिखित तरीकों से सुधार किया जा सकता हैः
रणनीति प्रवृत्ति का पालन करके लाभ प्राप्त करती है और इसके अच्छे बैकटेस्ट परिणाम होते हैं। लेकिन वास्तविक प्रदर्शन को मान्य करने की आवश्यकता है। लाइव ट्रेडिंग में इसे लागू करने से पहले पैरामीटर मजबूती, स्टॉप लॉस और स्थिति आकार पर आगे अनुकूलन की आवश्यकता होती है। कुल मिलाकर इसमें ध्वनि तर्क और सुधार की बहुत संभावना है।
/*backtest start: 2022-10-30 00:00:00 end: 2023-11-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Turtle", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=5) stopInput = input(2.0, "Stop N", step=.5) pyramidInput = input(1, "Pyramid N", step=.5) l1LongInput = input(20, "L1 Long", minval=5) l2LongInput = input(55, "L2 Long", minval=5) l1LongExitInput = input (10, "L1 Long Exit", minval=5) l2LongExitInput = input (20, "L2 Long Exit", minval=5) FromYear = input(2000, "From Year", minval=1900), FromMonth = input(1, "From Month", minval=1, maxval=12), FromDay = input(1, "From Day", minval=1, maxval=31) ToYear = input(9999, "To Year", minval=1900), ToMonth = input(1, "To Month", minval=1, maxval=12), ToDay = input(1, "To Day", minval=1, maxval=31) FromDate = timestamp(FromYear, FromMonth, FromDay, 00, 00), ToDate = timestamp(ToYear, ToMonth, ToDay, 23, 59) TradeDateIsAllowed() => time >= FromDate and time <= ToDate l1Long = highest(l1LongInput) l1LongExit = lowest(l1LongExitInput) l2Long = highest(l2LongInput) l2LongExit = lowest(l2LongExitInput) // // ADX, +-DI // https://www.tradingview.com/script/rlMJ05yl-ADX-and-DI-pine-script-3-0/ // len = 14 th = 20 TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus SmoothedDirectionalMovementMinus = 0.0 SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100 ADX = sma(DX, len) // Back to Turtle filter = true // not (DIPlus < ADX and DIMinus < ADX) and DIPlus > DIMinus var win = false var totalPrice = 0.0 var buyPrice = 0.0 var avgPrice = 0.0 var nextBuyPrice = 0.0 var stopPrice = 0.0 var totalBuys = 0 var bool inBuy = false var float l1LongPlot = highest(l1LongInput) var float l2LongPlot = highest(l2LongInput) n = atr(14) var mode = 'L1' string longLevel = na if not inBuy l1LongPlot := highest(l1LongInput)[1] l2LongPlot := highest(l2LongInput)[1] if (close > l2Long[1] and filter) mode := 'L2' if TradeDateIsAllowed() strategy.close_all() strategy.entry("long", strategy.long, comment="L2") longLevel := 'L2' win := false buyPrice := close totalBuys := 1 totalPrice := buyPrice avgPrice := buyPrice stopPrice := close-(stopInput*n) nextBuyPrice := high+(pyramidInput*n) inBuy := true else if (close > l1Long[1] and filter) mode := 'L1' if not win if TradeDateIsAllowed() strategy.close_all() strategy.entry("long", strategy.long, comment="L1") longLevel := 'L1' win := false buyPrice := close totalBuys := 1 totalPrice := buyPrice avgPrice := buyPrice stopPrice := close-(stopInput*n) nextBuyPrice := high+(pyramidInput*n) inBuy := true else inBuy := false else l1LongPlot := l1LongPlot[1] l2LongPlot := l2LongPlot[1] if close > nextBuyPrice and TradeDateIsAllowed() and totalBuys < 6 strategy.entry("long", strategy.long, comment="LP") longLevel := 'P' stopPrice := close-(stopInput*n) nextBuyPrice := high+(pyramidInput*n) totalBuys := totalBuys + 1 totalPrice := totalPrice + buyPrice avgPrice := totalPrice / totalBuys if (close < stopPrice) inBuy := false if TradeDateIsAllowed() if (close >= avgPrice) longLevel := 'SG' else longLevel := 'SR' strategy.close("long", strategy.long) win := false buyPrice := 0 avgPrice := 0 else if (mode == 'L1' and close > l2Long[1] and filter) if win inBuy := true win := false mode := 'L2' if TradeDateIsAllowed() strategy.close_all() longLevel := 'L2' strategy.entry("long", strategy.long, comment="L2") buyPrice := close totalBuys := 1 totalPrice := buyPrice avgPrice := buyPrice stopPrice := close-(stopInput*n) nextBuyPrice := close+(pyramidInput*n) else if (close < l1LongExit[1] or close < l2LongExit[1]) inBuy := false if TradeDateIsAllowed() strategy.close("long", strategy.long) if close < avgPrice longLevel := 'SR' win := false else longLevel := 'SG' win := true buyPrice := 0 plot(l1LongPlot, title="l1 long", linewidth=3, style=plot.style_stepline, color=color.green) plot(l1LongExit[1], title="l1 exit", linewidth=3, style=plot.style_stepline, color=color.red) plot(l2LongPlot, title="l2 long", linewidth=2, style=plot.style_stepline, color=color.green) plot(l2LongExit[1], title="l2 exit", linewidth=2, style=plot.style_stepline, color=color.red) plot(stopPrice, title="stop", linewidth=2, style=plot.style_stepline, color=color.purple) plotarrow(longLevel == 'L1' ? 1 : 0, colordown=color.black, colorup=color.green, transp=40) plotarrow(longLevel == 'L2' ? 1 : 0, colordown=color.black, colorup=color.purple, transp=40) plotarrow(longLevel == 'SR' ? -1 : 0, colordown=color.red, colorup=color.purple, transp=40) plotarrow(longLevel == 'SG' ? -1 : 0, colordown=color.green, colorup=color.purple, transp=40)