यह रणनीति ट्रेंड निर्धारण के साथ पिनबार पैटर्न का उपयोग करके ट्रेंड की दिशा में ट्रेड ब्रेकआउट के लिए औसत को स्थानांतरित करती है। यह ट्रेडिंग सिग्नल उत्पन्न करती है जब कीमत पिनबार कैंडलस्टिक द्वारा गठित उच्च / निम्न से बाहर निकलती है। इसके अलावा, यह समग्र ट्रेंड दिशा निर्धारित करने के लिए तेजी से और धीमी गति से चलती औसत का उपयोग करता है, जो सीमा-बाउंड मूल्य कार्रवाई के दौरान गलत संकेतों से बचता है।
तेज (20-अवधि) और धीमी (50-अवधि) चलती औसत की गणना करें।
मोमबत्ती के आधार पर तेजी (बंद> खुला) और गिरावट (बंद< खुला) पिनबार की पहचान करें।
जांचें कि क्या पिनबार उच्च/निम्न पिछली मोमबत्ती के उच्च/निम्न को तोड़ता है। पिछले उच्च को तोड़ने वाला एक तेजी वाला पिनबार एक लंबा संकेत देता है। पिछले निम्न को तोड़ने वाला एक मंदी वाला पिनबार एक छोटा संकेत देता है।
यह भी जांचें कि तेजी से एमए धीमी एमए से ऊपर है या नहीं, एक अपट्रेंड निर्धारित करने के लिए, और इसके विपरीत एक डाउनट्रेंड के लिए।
लंबे संकेत तभी मान्य होते हैं जब तेज/धीमी एमए एक अपट्रेंड का संकेत देती है। छोटे संकेत तभी मान्य होते हैं जब तेज/धीमी एमए एक डाउनट्रेंड का संकेत देती है। इससे रेंज-बाउंड प्राइस एक्शन के दौरान गलत संकेतों से बचा जाता है।
वैध लॉन्ग सिग्नल पर, पूर्वनिर्धारित स्टॉपलॉस और टेकप्रॉफिट के साथ लॉन्ग जाएं। वैध शॉर्ट सिग्नल पर, पूर्वनिर्धारित स्टॉपलॉस और टेकप्रॉफिट के साथ शॉर्ट जाएं।
यदि तेज एमए धीमी एमए से नीचे जाता है, तो किसी भी मौजूदा स्थिति को बंद कर दें।
मजबूत गति का प्रतिनिधित्व करने वाले ब्रेकआउट स्तरों के रूप में पिनबार उच्च/निम्न का उपयोग करता है।
रेंज-बाउंड प्राइस एक्शन के दौरान गलत संकेतों से बचने के लिए ट्रेंड दिशा पर विचार करता है, जिससे सटीकता में सुधार होता है।
ट्रेंड और ब्रेकआउट को कैप्चर करता है, ट्रेंडिंग बाजारों में अच्छा प्रदर्शन करता है।
मापदंडों को विभिन्न उत्पादों और समय सीमाओं के लिए अनुकूलित किया जा सकता है।
असफल ब्रेकआउट जोखिम, व्यापक ब्रेकआउट स्तर और मजबूत गति का उपयोग करके कम किया जा सकता है।
अप्रमाणित रुझान पहचान जोखिम, एमए मापदंडों को संशोधित करके या अन्य रुझान संकेतकों को जोड़कर कम किया जा सकता है।
स्टॉपलॉस बहुत तंग है जिससे समय से पहले बाहर निकलना पड़ता है। उत्पाद और समय सीमा के आधार पर स्टॉपलॉस को गतिशील रूप से समायोजित कर सकता है।
लाभ लेने के लिए बहुत सख्त लाभ को सीमित करना। गतिशील रूप से लाभ लक्ष्य और जोखिम-लाभ अनुपात निर्धारित कर सकते हैं।
कुल मिलाकर, एमए, ब्रेकआउट, स्टॉपलॉस और टेकप्रॉफिट मापदंडों को एक अनुकूलित रणनीति के लिए उत्पादों और समय सीमाओं में अनुकूलित किया जा सकता है।
इष्टतम संकेतक का पता लगाने के लिए ईएमए, एसएमए आदि जैसे विभिन्न एमए का परीक्षण किया जा सकता है।
अतिरिक्त संकेतक जैसे गति प्रवृत्ति सटीकता में सुधार कर सकते हैं।
मशीन लर्निंग तकनीक का उपयोग करके पैरामीटर को गतिशील रूप से अनुकूलित किया जा सकता है।
स्टैटिस्टिकल लर्निंग के माध्यम से ब्रेकआउट सफलता दर में सुधार किया जा सकता है।
यह रणनीति सैद्धांतिक रूप से फ़िल्टर किए गए संकेतों के लिए प्रवृत्ति और गति को जोड़ती है। कुंजी अच्छे प्रदर्शन के लिए उत्पादों और समय सीमाओं में मजबूत पैरामीटर अनुकूलन है। इसके अलावा, सहायक संकेतक और मशीन लर्निंग तकनीक रणनीति को और बेहतर बना सकती है। निरंतर सुधार के साथ, यह एक मजबूत प्रवृत्ति-ब्रेकआउट ट्रेडिंग सिस्टम बन सकता है।
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Backtested Time Frame: H1 //Default Settings: Are meant to run successfully on all currency pairs to reduce over-fitting. //Risk Warning: This is a forex trading robot, backtest performance will not equal future performance, USE AT YOUR OWN RISK. //Code Warning: Although every effort has been made for robustness, this code has not been vetted by independent 3rd parties. strategy("Pin Bar Strategy v1", overlay=true) // User Input usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=3,confirm=false) atr_mult = input(title="Stop Loss (x*ATR, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=1.9,confirm=false) trd_rewd = input(title="Risk : Reward (1 : x*SL, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=3.1,confirm=false) sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false) sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=50,confirm=false) atr_valu = input(title="ATR (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false) use_slpe = input(title="Use MA Slope (Boolean)",type=input.bool,defval=true,confirm=false) slp_long = input(title="Bull Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=1,confirm=false) slp_shrt = input(title="Bear Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-1,confirm=false) emg_exit = input(title="Exit When MA Re-Cross (Boolean)",type=input.bool,defval=true,confirm=false) ent_canc = input(title="Cancel Entry After X Bars (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=3,confirm=false) // Create Indicators fastSMA = sma(close, sma_fast) slowSMA = sma(close, sma_slow) bullishPinBar = ((close > open) and ((open - low) > 0.66 * (high - low))) or ((close < open) and ((close - low) > 0.66 * (high - low))) bearishPinBar = ((close > open) and ((high - close) > 0.66 * (high - low))) or ((close < open) and ((high - open) > 0.66 * (high - low))) atr = atr(atr_valu) // Specify Trend Conditions smaUpTrend = (fastSMA > slowSMA) and (fastSMA[1] > slowSMA[1]) and (fastSMA[2] > slowSMA[2]) and (fastSMA[3] > slowSMA[3]) and (fastSMA[4] > slowSMA[4]) smaDnTrend = (fastSMA < slowSMA) and (fastSMA[1] < slowSMA[1]) and (fastSMA[2] < slowSMA[2]) and (fastSMA[3] < slowSMA[3]) and (fastSMA[4] < slowSMA[4]) candleUpTrend = (close[5] > fastSMA[5]) and (open[5] > fastSMA[5]) and (close[6] > fastSMA[6]) and (open[6] > fastSMA[6]) and (close[7] > fastSMA[7]) and (open[7] > fastSMA[7]) and (close[8] > fastSMA[8]) and (open[8] > fastSMA[8]) and (close[9] > fastSMA[9]) and (open[9] > fastSMA[9]) and (close[10] > fastSMA[10]) and (open[10] > fastSMA[10]) candleDnTrend = (close[5] < fastSMA[5]) and (open[5] < fastSMA[5]) and (close[6] < fastSMA[6]) and (open[6] < fastSMA[6]) and (close[7] < fastSMA[7]) and (open[7] < fastSMA[7]) and (close[8] < fastSMA[8]) and (open[8] < fastSMA[8]) and (close[9] < fastSMA[9]) and (open[9] < fastSMA[9]) and (close[10] < fastSMA[10]) and (open[10] < fastSMA[10]) // Specify Piercing Conditions bullPierce = ((low < fastSMA) and (open > fastSMA) and (close > fastSMA)) or ((low < slowSMA) and (open > slowSMA) and (close > slowSMA)) bearPierce = ((high > fastSMA) and (open < fastSMA) and (close < fastSMA)) or ((high > slowSMA) and (open < slowSMA) and (close < slowSMA)) // MA Slope Function angle(_source) => rad2degree=180/3.14159265359 ang=rad2degree*atan((_source[0] - _source[1])/atr(atr_valu)) // Calculate MA Slope fastSlope=angle(fastSMA) slowSlope=angle(slowSMA) slopingUp = fastSlope > slp_long slopingDn = fastSlope < slp_shrt // Specify Entry Conditions longEntry = smaUpTrend and bullishPinBar and bullPierce shortEntry = smaDnTrend and bearishPinBar and bearPierce longEntryWithSlope = smaUpTrend and bullishPinBar and bullPierce and slopingUp shortEntryWithSlope = smaDnTrend and bearishPinBar and bearPierce and slopingDn // Specify Secondary Exit Conditions longExit = crossunder(fastSMA, slowSMA) shortExit = crossover(fastSMA, slowSMA) // Long Entry Function enterlong() => risk = usr_risk * 0.01 * strategy.equity stopLoss = low[1] - atr[1] * atr_mult entryPrice = high[1] units = risk / (entryPrice - stopLoss) takeProfit = entryPrice + trd_rewd * (entryPrice - stopLoss) strategy.entry("long", strategy.long, units, stop=entryPrice) strategy.exit("exit long", "long", stop=stopLoss, limit=takeProfit) // Short Entry Function entershort() => risk = usr_risk * 0.01 * strategy.equity stopLoss = high[1] + atr[1] * atr_mult entryPrice = low[1] units = risk / (stopLoss - entryPrice) takeProfit = entryPrice - trd_rewd * (stopLoss - entryPrice) strategy.entry("short", strategy.short, units, stop=entryPrice) strategy.exit("exit short", "short", stop=stopLoss, limit=takeProfit) // Execute Long Entry w/o Slope if (longEntry and use_slpe == false) enterlong() // Execute Long Entry w/ Slope if (longEntryWithSlope and use_slpe == true) enterlong() // Exit Long Due to Re-Cross if(longExit and strategy.position_size > 0 and emg_exit) strategy.order("exit long, re-cross", strategy.short, abs(strategy.position_size)) // Cancel the Long Entry strategy.cancel("long", barssince(longEntry) > ent_canc) // Execute Short Entry w/o Slope if (shortEntry and use_slpe == false) entershort() // Execute Short Entry w/ Slope if (shortEntryWithSlope and use_slpe == true) entershort() // Exit Short Due to Re-Cross if(shortExit and strategy.position_size < 0 and emg_exit) strategy.order("exit short, re-cross", strategy.long, abs(strategy.position_size)) // Cancel the Short Entry strategy.cancel("short", barssince(shortEntry) > ent_canc) // Plot Moving Averages to Chart plot(fastSMA, color=color.red) plot(slowSMA, color=color.blue) // Plot Pin Bars to Chart plotshape(bullishPinBar, style=shape.arrowup, location=location.abovebar, color=#FF0000, text='') plotshape(bearishPinBar, style=shape.arrowdown, location=location.belowbar, color=#0000FF, text='')