यह एसएसएल चैनल संकेतक पर आधारित बैकटेस्टिंग रणनीति है, जो एसएसएल चैनल रणनीति पर अधिक व्यापक परीक्षण की सुविधा के लिए एटीआर स्टॉप लॉस, एटीआर टेक प्रॉफिट और मनी मैनेजमेंट जैसे कार्यों के साथ एकीकृत है।
एसएसएल चैनल संकेतक में चैनल मिडलाइन और चैनल बैंड होते हैं। चैनल मिडलाइन में एक ऊपरी ट्रैक और एक निचला ट्रैक होता है, जो आमतौर पर एक लुकबैक अवधि में उच्च और निम्न कीमतों के सरल चलती औसत होते हैं। चैनल बैंड ऊपरी और निचले ट्रैक के बीच बनते हैं।
जब कीमत ऊपरी बैंड के करीब आती है, तो यह ओवरबॉट स्थितियों का संकेत देती है; जब कीमत निचले बैंड के करीब आती है, तो यह ओवरसोल्ड स्थितियों का संकेत देती है। चैनल बैंड का ब्रेकआउट एक रुझान उलट का संकेत देता है।
एसएसएल चैनल पैरामीटर पर सेट हैssl_period=16
इस रणनीति में।
औसत सच्ची सीमा (एटीआर) बाजार की अस्थिरता को मापती है और इसका उपयोग स्टॉप लॉस और लाभ स्तर निर्धारित करने के लिए किया जा सकता है।
यह रणनीति 14 अवधि के एटीआर का उपयोग करती है (atr_period=14
) और गतिशील गुणकोंatr_stop_factor=1.5
औरatr_target_factor=1.0
अस्थिरता के आधार पर अनुकूलित स्टॉप लॉस और लाभ लेने के लिए।
यह यह भी जांचता है कि उपकरण की 2-दशमलव सटीकता है (two_digit
) सोने और JPY जैसी जोड़ी के लिए स्टॉप और टारगेट को तदनुसार समायोजित करने के लिए।
धन प्रबंधन के माध्यम से प्राप्त होता हैposition_size
(फिक्स्ड पोजीशन साइजिंग) औरrisk
धन प्रबंधन मॉड्यूल को सक्षम किया जाएगा जबuse_mm=true
.
लक्ष्य प्रत्येक व्यापार के लिए इष्टतम स्थिति आकार निर्धारित करना है। प्रत्येक व्यापार पर निश्चित जोखिम प्रतिशत का उपयोग करके, प्रत्येक व्यापार पर नुकसान को सीमित करने के लिए खाता इक्विटी के आधार पर गतिशील रूप से अनुमत स्थिति आकार की गणना की जाएगी।
इन जोखिमों को निम्न द्वारा कम किया जा सकता हैः
इस रणनीति में निम्नलिखित पहलुओं में सुधार किया जा सकता हैः
व्यवस्थित अनुकूलन के साथ, यह रणनीति एक मजबूत एल्गोरिथम ट्रेडिंग प्रणाली बन सकती है।
यह रणनीति ट्रेंड के लिए एसएसएल चैनल, जोखिम नियंत्रण के लिए एटीआर और स्थिति आकार के लिए मनी मैनेजमेंट को जोड़ती है। व्यापक बैकटेस्टिंग एक स्वचालित ट्रेडिंग सिस्टम में रणनीति का मूल्यांकन और सुधार करने में सुविधा प्रदान करती है। फ़िल्टर जोड़ने, मापदंडों को अनुकूलित करने और कार्यक्षमता का विस्तार करने जैसे सुधारों के लिए भी जगह है। कुल मिलाकर, यह एल्गोरिदमिक ट्रेडिंग रणनीतियों के निर्माण के लिए एक ठोस नींव बनाता है।
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 00:00:00 period: 2h 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/ // © comiclysm //@version=4 strategy("SSL Backtester", overlay=false) //--This strategy will simply test the effectiveness of the SSL using //--money management and an ATR-derived stop loss //--USER INPUTS two_digit = input(false, "Check this for 2-digit pairs (JPY, Gold, Etc)") ssl_period = input(16, "SSL Period") atr_period = input(14, "ATR Period") atr_stop_factor = input(1.5, "ATR Stop Loss Factor") atr_target_factor = input(1.0, "ATR Target Factor") use_mm = input(true, "Check this to use Money Management") position_size = input(1000, "Position size (for Fixed Risk)") risk = input(0.01, "Risk % in Decimal Form") //--INDICATORS------------------------------------------------------------ //--SSL sma_high = sma(high, ssl_period) sma_low = sma(low, ssl_period) ssl_value = 0 ssl_value := close > sma_high ? 1 : close < sma_low ? -1 : ssl_value[1] ssl_low = ssl_value < 0 ? sma_high : sma_low ssl_high = ssl_value < 0 ? sma_low : sma_high //--Average True Range atr = atr(atr_period) //--TRADE LOGIC---------------------------------------------------------- signal_long = ssl_value > 0 and ssl_value[1] < 0 signal_short = ssl_value < 0 and ssl_value[1] > 0 //--RISK MANAGMENT------------------------------------------------------- strategy.initial_capital = 50000 balance = strategy.netprofit + strategy.initial_capital risk_pips = atr*10000*atr_stop_factor if(two_digit) risk_pips := risk_pips / 100 risk_in_value = balance * risk point_value = syminfo.pointvalue risk_lots = risk_in_value / point_value / risk_pips final_risk = use_mm ? risk_lots * 10000 : position_size //--TRADE EXECUTION----------------------------------------------------- if (signal_long) stop_loss = close - atr * atr_stop_factor target = close + atr * atr_target_factor strategy.entry("Long", strategy.long, final_risk) strategy.exit("X", "Long", stop=stop_loss, limit=target) if (signal_short) stop_loss = close + atr * atr_stop_factor target = close - atr * atr_target_factor strategy.entry("Short", strategy.short, final_risk) strategy.exit("X", "Short", stop=stop_loss, limit=target) //--PLOTTING----------------------------------------------------------- plot(ssl_low, "SSL", color.red, linewidth=1) plot(ssl_high, "SSL", color.lime, linewidth=1)