यह एक दोहरी गति ब्रेकआउट रणनीति है। यह अलग-अलग पैरामीटर सेटिंग्स के साथ दो गति संकेतक का उपयोग करता है और जब दोनों गति संकेतक शून्य रेखा को तोड़ते हैं तो ट्रेडिंग संकेत उत्पन्न करता है। रणनीति केवल लंबी प्रविष्टियों को लेती है और शॉर्ट्स का उपयोग केवल पदों से बाहर निकलने के लिए किया जाता है।
कोड पहले रणनीति गुणों जैसे आदेश प्रकार, कमीशन योजना आदि को निर्धारित करता है। फिर यह दो गति संकेतक की गणना करता हैः
// Momentum settings
****
i_len = input(defval = 12, title = "Length", minval = 1)
i_src = input(defval = close, title = "Source")
i_percent = input(defval = true, title = "Percent?")
i_mom = input(defval = "MOM2", title = "MOM Choice", options = ["MOM1", "MOM2"])
// Momentum code
mom0 = momentum(i_src, i_len, i_percent)
mom1 = momentum(mom0, 1, i_percent)
mom2 = momentum(i_src, 1, i_percent)
momX = mom1
if i_mom == "MOM2"
momX := mom2
mom0 लंबाई i_len के साथ आधार गति संकेतक है, डेटा स्रोत i_src, प्रतिशत की गणना करने का निर्णय i_percent द्वारा किया जाता है।
mom1 गति संकेतक है mom0 डेटा स्रोत के रूप में और लंबाई 1 के साथ
mom2 मूल डेटा i_src के स्रोत और लंबाई 1 के साथ गति संकेतक है।
अंतिम गति संकेतक momX mom1 के लिए डिफ़ॉल्ट है, यह भी mom2 चुन सकते हैं।
जब mom0 और momX दोनों 0 रेखा से ऊपर तोड़ते हैं, लंबे समय तक जाते हैं। जब mom0 और momX दोनों 0 रेखा से नीचे तोड़ते हैं, बंद स्थिति।
विभिन्न सेटिंग्स के साथ दोहरी गति संकेतक का उपयोग दोहरी पुष्टि और कम झूठे संकेतों के साथ सिग्नल विश्वसनीयता में सुधार करता है।
केवल लंबी प्रविष्टियों को लेना और बाहर निकलने के लिए शॉर्ट्स का उपयोग करना व्यापार आवृत्ति को कम करता है और लेनदेन की लागत को कम करता है।
विभिन्न बाजार परिवेशों के अनुकूल लचीले गति मापदंड समायोजन।
स्वच्छ कोड संरचना, समझने और संशोधित करने में आसान।
ट्रेड संदेश सक्षम, ऑटो ट्रेडिंग सिस्टम के साथ अच्छी तरह से एकीकृत करता है।
दोहरी गति कमजोरी के संकेतों को मिस कर सकती है जबकि झूठे संकेतों को कम कर सकती है।
केवल लंबी प्रविष्टियों के साथ लघु व्यापार के अवसरों को याद करना।
गति मापदंडों की अनुचित सेटिंग्स से ओवर-ट्रेडिंग या विलंबित संकेत होते हैं।
अपर्याप्त बैकटेस्ट डेटा पैरामीटर ओवरफिटिंग का कारण बनता है।
डबल कन्फर्मेशन से झूठे सिग्नल कम होते हैं, लेकिन समाप्त नहीं होते हैं, लाइव ट्रेडिंग में वैधता की निगरानी करने की आवश्यकता होती है।
इष्टतम खोजने के लिए लंबाई और प्रतिशत मापदंडों के संयोजनों का परीक्षण करें।
अधिक ट्रेडों को पकड़ने के लिए प्रवृत्ति की पुष्टि के बाद शॉर्ट ट्रेड सिग्नल जोड़ने पर विचार करें।
बेहतर परिणामों के लिए आरओसी, आरएसआई आदि जैसे विभिन्न गति गणनाओं का परीक्षण करें।
वाइपसा बाजारों से बचने के लिए ट्रेंड फ़िल्टरिंग जोड़ें।
जोखिम सीमाओं के भीतर अधिकतम लाभप्रदता के लिए स्टॉप लॉस को अनुकूलित करें।
यह एक विशिष्ट दोहरी गति ब्रेकआउट रणनीति है। यह झूठे संकेतों को कम करने के लिए डबल पुष्टिकरण का उपयोग करता है और कम व्यापार आवृत्ति के लिए केवल लंबी प्रविष्टियों का उपयोग करता है। इसके फायदे सादगी और कार्यान्वयन की आसानी हैं, जिसमें पैरामीटर अनुकूलन और जोखिम नियंत्रण में सुधार के लिए बहुत जगह है। कुल मिलाकर यह एक उचित गति ब्रेकआउट ढांचे के रूप में कार्य करता है लेकिन लाभदायक लाइव ट्रेडिंग के लिए बाजार-विशिष्ट ट्यूनिंग और अनुकूलन की आवश्यकता होती है।
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum Long Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true) // There will be no short entries, only exits from long. strategy.risk.allow_entry_in(strategy.direction.long) // Calculate start/end date and time condition startDate = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time) finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time) time_cond =true // Momentum settings i_len = input(defval = 12, title = "Length", minval = 1) i_src = input(defval = close, title = "Source") i_percent = input(defval = true, title = "Percent?") i_mom = input(defval = "MOM2", title = "MOM Choice", options = ["MOM1", "MOM2"]) // Messages for buy and sell message_buy = input("{{strategy.order.alert_message}}", title="Buy message") message_sell = input("{{strategy.order.alert_message}}", title="Sell message") // Momentum code momentum(seria, length, percent) => _mom = percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length] _mom mom0 = momentum(i_src, i_len, i_percent) mom1 = momentum(mom0, 1, i_percent) mom2 = momentum(i_src, 1, i_percent) momX = mom1 if i_mom == "MOM2" momX := mom2 // Strategy Alerts if (mom0 > 0 and momX > 0 and time_cond) strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE", alert_message = message_buy) else strategy.cancel("MomLE") if (mom0 < 0 and momX < 0 and time_cond) strategy.entry("MomExit", strategy.short, stop = low - syminfo.mintick, comment = "MomSE", alert_message = message_sell) else strategy.cancel("MomExit") // Plotting plot(0, color = #5d606b, title = "ZERO") plot(mom0, color = #00bcd4, title = "MOM") plot(mom1, color = #00FF00, title = "MOM1", display = display.none) plot(mom2, color = #00FF00, title = "MOM2")