यह रणनीति चुनिंदा शेयरों या क्रिप्टोकरेंसी में संभावित ब्रेकआउट अवसरों की पहचान करने के लिए एक दोहरी चलती औसत प्रणाली का उपयोग करती है। मूल सिद्धांत यह है कि जब अल्पकालिक चलती औसत लंबी अवधि के चलती औसत से नीचे से वापस उछलती है और जब कीमतें लंबी अवधि के चलती औसत का पुनः परीक्षण करती हैं तो खरीदना।
यह रणनीति दो सरल चलती औसत (एसएमए) का उपयोग करती है जिनकी अवधि अलग-अलग होती है। पहला एसएमए एक लंबी अवधि का होता है जो समग्र प्रवृत्ति की दिशा का प्रतिनिधित्व करता है। दूसरा एसएमए अल्पकालिक मूल्य उतार-चढ़ाव को पकड़ने के लिए एक छोटी अवधि का होता है।
जब अल्पकालिक एसएमए नीचे से दीर्घकालिक एसएमए के ऊपर से पार करता है, तो यह कीमतों में समग्र वृद्धि का संकेत देता है, इसलिए रणनीति एक लंबी स्थिति खोलती है। जब कीमतें दीर्घकालिक एसएमए को फिर से परीक्षण करने के लिए वापस खींचती हैं, तो यह इंगित करती है कि अल्पकालिक पुलबैक समाप्त हो गया है और रणनीति स्थिति को रोकने या लाभ लेने पर विचार करती है।
इसके अतिरिक्त, चरम परिस्थितियों में व्यापार से बचने के लिए रणनीति में
इस रणनीति को अनुकूलित करने के लिए और अधिक जगह हैः
यह रणनीति ट्रेडिंग के अवसरों का पता लगाने के लिए एक दोहरी चलती औसत प्रणाली का उपयोग करके प्रवृत्ति के बाद और पुलबैक ट्रेडिंग की ताकतों को जोड़ती है। साथ ही, एम्बेडेड ओवरबॉट / ओवरसोल्ड स्थितियां अनावश्यक स्थिति खोलने से बचती हैं। यह गहन शोध और अनुकूलन के लायक एक बहुत ही व्यावहारिक क्वांट ट्रेडिंग रणनीति है।
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA') ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA') sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters") too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') // Calculations ma1 = ta.sma(close,ma_length1) ma2 = ta.sma(close,ma_length2) too_deep2 = (ma2/ma1-1) < too_deep too_thin2 = (ma2/ma1-1) > too_thin // Entry and close condtions var float buy_price = 0 buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2 close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1]) stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na close_condition2 = strategy.position_size > 0 and stop_distance > sl stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na // Entry and close orders if buy_condition strategy.entry('Long',strategy.long) if buy_condition[1] buy_price := open if close_condition1 or close_condition2 strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : "")) buy_price := na plot(ma1,color = color.blue) plot(ma2,color = color.orange)