
यह रणनीति एक ईटीएफ स्वचालित ट्रेडिंग रणनीति है, जो औसत वास्तविक लहर (एटीआर) और मूल्य के ब्रेकआउट पर आधारित है। यह एटीआर का उपयोग स्टॉपलॉस और स्टॉपओवर की गणना करने के लिए करता है, और जब कीमत एक निश्चित अवधि के उच्चतम या निम्नतम मूल्य को तोड़ती है तो अधिक या कम हो जाती है।
यह रणनीति मुख्य रूप से निम्नलिखित सिद्धांतों पर आधारित हैः
मूल्य आंदोलन और दिशा का आकलन करने के लिए एक निश्चित चक्र के उच्चतम और निम्नतम मूल्य का उपयोग करें (जैसे 20 के लाइन) । जब कीमत चक्र के उच्चतम मूल्य को तोड़ती है, तो अधिक करें; जब कीमत चक्र के निम्नतम मूल्य को तोड़ती है, तो शून्य करें।
एटीआर का उपयोग गतिशील रूप से स्टॉप लॉस की गणना करने के लिए किया जाता है। स्टॉप लॉस की दूरी एटीआर के एटीआर मान से एटीआर चक्र के लिए गुणांक से होती है (जैसे 2) ।
एटीआर का उपयोग रोकथाम की गणना के लिए करें। रोकथाम की दूरी प्रवेश मूल्य एक एटीआर चक्र के लिए एटीआर मूल्य गुणांक ((जैसे 1) ।
ATRtrailer मल्टीफैक्टर का उपयोग करके स्टॉप को ट्रैक करें। जब कीमत ट्रेलर स्टॉप को तोड़ती है, तो स्टॉप को बंद करें।
यह रणनीति सरल और विश्वसनीय है, जो मूल्य प्रवृत्ति की दिशा को ध्यान में रखती है, मूल्य प्रवृत्ति को समय पर पकड़ने के लिए फायदेमंद है; और रोक और रोक की स्थिति स्थापित करना, लाभ के अवसरों को पकड़ने और जोखिम को नियंत्रित करने के लिए फायदेमंद है।
इस रणनीति के निम्नलिखित फायदे हैं:
रणनीति सरल, स्पष्ट और समझने और लागू करने में आसान है।
एटीआर का उपयोग स्टॉप स्टॉप लॉस की गणना करने के लिए किया जाता है, जिससे स्थिति को गतिशील रूप से समायोजित किया जा सकता है, और जोखिम को लचीले ढंग से नियंत्रित किया जा सकता है।
चक्रीय तोड़-फोड़ निर्णय रणनीति मूल्य प्रवृत्ति को पकड़ने में आसान है, बेहतर रिटर्न।
ट्रेलर क्षति को समय पर रोक दिया जा सकता है ताकि बहुत अधिक जोखिम से बचा जा सके।
ईटीएफ, स्टॉक आदि जैसे अधिक स्पष्ट प्रवृत्ति वाले प्रकारों के लिए उपयुक्त।
इस रणनीति के साथ निम्नलिखित जोखिम भी हैं:
जब कीमतों में उतार-चढ़ाव होता है, तो अधिक गलत संकेत और रिवर्स ओपनिंग की संभावना होती है।
अनुचित चक्र पैरामीटर सेटिंग्स मूल्य प्रवृत्ति को याद कर सकते हैं या बहुत अधिक ट्रेडों को रोक सकते हैं।
निर्देशांक मापदंडों को गलत तरीके से सेट किया गया है, जिससे स्टॉप लॉस या स्टॉप लॉस बहुत ही कट्टरपंथी या रूढ़िवादी हो सकते हैं, जिससे लाभप्रदता प्रभावित होती है।
नीतिगत जोखिम, प्रीमियम जोखिम आदि जैसे ईटीएफ के स्वयं के जोखिम भी रणनीति पर प्रभाव डालते हैं।
समाधान के लिएः
इस रणनीति को और अधिक अनुकूलित किया जा सकता हैः
चलती औसत जैसे संकेतकों के साथ झूठे संकेतों को फ़िल्टर करें।
अनुकूलन पैरामीटर अनुकूलन मॉड्यूल जोड़ा गया है, जो विभिन्न चक्रों और किस्मों के अनुसार पैरामीटर को स्वचालित रूप से अनुकूलित करता है
एक मशीन लर्निंग मॉडल जो अगले K लाइन के उच्च और निम्न बिंदुओं की भविष्यवाणी करता है, एक ब्रेकआउट सिग्नल का आकलन करने के लिए जोड़ा गया
व्यापार की मात्रा में वृद्धि जैसे संकेतकों को ध्यान में रखते हुए, नकली तोड़फोड़ की रोकथाम।
स्टॉक खोलने की स्थिति के आकार और अनुपात को अनुकूलित करें, विभिन्न किस्मों और बाजार की परिस्थितियों के लिए अनुकूलित स्टॉक खोलें।
इस रणनीति की समग्र सोच स्पष्ट और संक्षिप्त है, मुख्य तंत्र को तोड़ने और एटीआर गतिशील स्टॉपलॉस को रोकना जोखिम को प्रभावी ढंग से नियंत्रित करने और मुनाफे को लॉक करने के लिए है। पैरामीटर अनुकूलन और अधिक फ़िल्टरिंग संकेतकों के संयोजन के माध्यम से, रणनीति को और बढ़ाया जा सकता है। लाभ कारक और जोखिम नियंत्रण क्षमता, एक मात्रात्मक रणनीति है जो शुरू करने और लगातार अनुकूलन के लायक है।
/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-21 03:00:00
period: 1m
basePeriod: 1m
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/
// © FX_minds
//@version=4
strategy("ETF tradedr", overlay=true, pyramiding=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//------------------------------ get user input
lookback = input(title="HH LL lookback", type=input.integer, defval=20)
ATR_periode = input(title="ATR period", type=input.integer, defval=14)
ATR_SL_multiplier = input(title="ATR SL multiplier", type=input.float, defval=2)
ATR_TP_multiplier = input(title="ATR TP multiplier", type=input.float, defval=1)
trailing_SL_ATR_multiplier = input(title="ATR trailing SL multiplier", type=input.float, defval=3.5)
lookback_trailing_SL = input(title="trailing SL lookback", type=input.integer, defval=4)
max_sequel_trades = input(title="max sequel trades", type=input.float, defval=1)
trade_long = input(title= "trade long ?", type=input.bool, defval=true)
trade_short = input(title= "trade short ?", type=input.bool, defval=false)
//------------------------------ determine entry conditions
long_condition = barstate.isconfirmed and crossover(high, highest(high, lookback)[1])
short_condition = barstate.isconfirmed and crossunder(low, lowest(low, lookback)[1])
//------------------------------ count open long trades
count_open_longs = 0
count_open_longs := nz(count_open_longs[1])
if (long_condition)
count_open_longs := count_open_longs +1
//label.new(bar_index, low, tostring(count_open_longs, "#"), xloc.bar_index, yloc.belowbar, color.green, label.style_none, color.green, size.large)
if (short_condition)
count_open_longs := 0
//------------------------------ count open short trades
count_open_shorts = 0
count_open_shorts := nz(count_open_shorts[1])
if (short_condition)
count_open_shorts := count_open_shorts +1
//label.new(bar_index, low, tostring(count_open_shorts, "#"), xloc.bar_index, yloc.belowbar, color.red, label.style_none, color.red, size.large)
if (long_condition)
count_open_shorts := 0
//------------------------------ calculate entryprice
entryprice_long = long_condition ? close : na
entryprice_short = short_condition ? close : na
//------------------------------ calculate SL & TP
SL_distance = atr(ATR_periode) * ATR_SL_multiplier
TP_distance = atr(ATR_periode) * ATR_TP_multiplier
trailing_SL_distance = atr(ATR_periode) * trailing_SL_ATR_multiplier
SL_long = entryprice_long - SL_distance
SL_short = entryprice_short + SL_distance
trailing_SL_short = lowest(close, lookback_trailing_SL) + trailing_SL_distance
trailing_SL_long = highest(close, lookback_trailing_SL) - trailing_SL_distance
trailing_SL_short_signal = crossover(high, trailing_SL_short[1])
trailing_SL_long_signal = crossunder(low, trailing_SL_long[1])
//------------------------------ plot entry price & SL
plot(entryprice_long, style=plot.style_linebr, color=color.white)
plot(SL_long, style=plot.style_linebr, color=color.red)
plot(SL_short, style=plot.style_linebr, color=color.green)
plot(trailing_SL_short, style=plot.style_linebr, color=color.red)
plot(trailing_SL_long, style=plot.style_linebr, color=color.green)
//------------------------------ submit entry orders
if (long_condition) and (count_open_longs <= max_sequel_trades) and (trade_long == true)
strategy.entry("Long" + tostring(count_open_longs, "#"), strategy.long)
strategy.exit("SL Long"+ tostring(count_open_longs, "#"),
from_entry="Long" + tostring(count_open_longs, "#"), stop=SL_long)
if (short_condition) and (count_open_shorts <= max_sequel_trades) and (trade_short == true)
strategy.entry("Short" + tostring(count_open_shorts, "#"), strategy.short)
strategy.exit("SL Short" + tostring(count_open_shorts, "#"),
from_entry="Short" + tostring(count_open_shorts, "#"), stop=SL_short)
//------------------------------ submit exit conditions
if (trailing_SL_long_signal)
strategy.close("Long" + tostring(count_open_longs, "#"))
strategy.close("Long" + tostring(count_open_longs-1, "#"))
strategy.close("Long" + tostring(count_open_longs-2, "#"))
strategy.close("Long" + tostring(count_open_longs-4, "#"))
strategy.close("Long" + tostring(count_open_longs-5, "#"))
strategy.close("Long" + tostring(count_open_longs-6, "#"))
strategy.close("Long" + tostring(count_open_longs-7, "#"))
strategy.close("Long" + tostring(count_open_longs-8, "#"))
strategy.close("Long" + tostring(count_open_longs-9, "#"))
if (trailing_SL_short_signal)
strategy.close("Short" + tostring(count_open_shorts, "#"))
strategy.close("Short" + tostring(count_open_shorts-1, "#"))
strategy.close("Short" + tostring(count_open_shorts-2, "#"))
strategy.close("Short" + tostring(count_open_shorts-3, "#"))
strategy.close("Short" + tostring(count_open_shorts-4, "#"))
strategy.close("Short" + tostring(count_open_shorts-5, "#"))
strategy.close("Short" + tostring(count_open_shorts-6, "#"))
strategy.close("Short" + tostring(count_open_shorts-7, "#"))
strategy.close("Short" + tostring(count_open_shorts-8, "#"))
strategy.close("Short" + tostring(count_open_shorts-9, "#"))