اس حکمت عملی کو
حکمت عملی پچھلے rocLength ادوار میں ہیکن آشی کی ROC بند قیمتوں کا حساب لگاتی ہے۔ اس کے بعد پچھلے 50 ادوار میں ROC کی سب سے زیادہ rocHigh اور سب سے کم rocLow اقدار کا حساب لگاتی ہے۔ اوپری ریل اوپریKillLine اور نچلی ریل نچلیKillLine کو rocHigh اور rocLow کے کچھ فیصد کی بنیاد پر تیار کیا جاتا ہے۔ جب ROC نچلیKillLine سے تجاوز کرتا ہے تو ، ایک لمبی پوزیشن کھولی جاتی ہے۔ جب ROC اوپریKillLine سے نیچے عبور کرتا ہے تو ، لمبی پوزیشن بند ہوجاتی ہے۔ اس کے برعکس ، جب ROC اوپریKillLine سے نیچے عبور کرتا ہے تو ، ایک مختصر پوزیشن کھولی جاتی ہے۔ جب ROC نچلیKillLine سے اوپر عبور کرتا ہے تو ، پوزیشن بند ہوجاتی ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ آر او سی اشارے کی مضبوط رجحان سے باخبر رہنے کی صلاحیت کا استعمال ، ہائکن ایشی کی قیمت کی معلومات کو ہموار کرنے کی خصوصیت کے ساتھ مل کر کیا جاتا ہے۔ اس سے حکمت عملی کو مؤثر طریقے سے رجحان کی تبدیلیوں کی نشاندہی کرنے اور بروقت انداز میں تجارت میں داخل ہونے کی اجازت ملتی ہے۔ سادہ حرکت پذیر اوسط کے مقابلے میں ، آر او سی قیمتوں میں تبدیلیوں کا زیادہ حساس ردعمل ظاہر کرتا ہے۔ اس کے علاوہ ، فیصد سے پیدا ہونے والی اوپری اور نچلی ریلیں مؤثر طریقے سے استحکام کو فلٹر کرسکتی ہیں اور جعلی بریک آؤٹ سے غیر ضروری تجارت سے بچ سکتی ہیں۔ مجموعی طور پر ، یہ حکمت عملی بڑے رجحانات میں اچھے رسک-انعام تناسب کو حاصل کرنے کے لئے رجحان کی پیروی اور نوسٹالیشن فلٹرنگ دونوں کو جوڑتی ہے۔
اس حکمت عملی کا بنیادی خطرہ یہ ہے کہ ناقص پیرامیٹر کی ترتیبات سے زیادہ تجارت یا ناکافی حساسیت کا سبب بن سکتی ہے۔ rocLength اور فیصد نظرثانی کے ادوار کو محتاط انداز میں طے کرنے کی ضرورت ہے ، ورنہ ریلیں بہت سست یا سخت ہوسکتی ہیں ، جس سے چھوٹی تجارت یا غیر ضروری نقصانات کا سبب بن سکتی ہیں۔ اس کے علاوہ ، بہترین مجموعے تلاش کرنے کے لئے مختلف منڈیوں کے لئے فیصد کی ترتیبات کو بار بار بیک ٹسٹ کرنے اور ایڈجسٹ کرنے کی ضرورت ہے۔ یہ حکمت عملی رجحانات کے الٹ جانے پر بھی کچھ نقصانات کا شکار ہوتی ہے ، کیونکہ اس کا انحصار رجحانات کے مطابق اشارے پر ہوتا ہے۔ پوزیشنوں کو بروقت بند کیا جانا چاہئے ، یا خطرات کو کنٹرول کرنے کے لئے نقصانات کو روکنا چاہئے۔
حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے: 1) آر ایس آئی جیسے دوسرے اشارے کے ساتھ فلٹرز شامل کریں؛ 2) مشین لرننگ کے ساتھ پیرامیٹرز کو متحرک طور پر بہتر بنائیں؛ 3) خودکار رسک مینجمنٹ کے لئے اسٹاپ نقصان اور منافع حاصل کریں؛ 4) خطرات کو متوازن کرنے کے لئے غیر رجحاناتی حکمت عملیوں کے ساتھ جوڑیں۔
خلاصہ یہ ہے کہ ، یہ حکمت عملی رجحان کی نشاندہی اور پیروی کے لئے ہائکن آشی کے ساتھ مل کر آر او سی اشارے کی طاقتور رجحان سے باخبر رہنے کی صلاحیت کا استعمال کرتی ہے۔ آر او سی فیصد سے پیدا ہونے والی اوپری اور نچلی ریلیں نقصان کی موثر فلٹرنگ کی اجازت دیتی ہیں۔ اس سے اچھی رجحان سے باخبر رہنے کی کارکردگی حاصل ہوتی ہے۔ اس کے فوائد اس کی بروقت نشاندہی میں ہیں رجحان کی تبدیلیوں اور اہم رجحانات کی پیروی ، جبکہ ریلوں کے ساتھ استحکام کو فلٹر کرنا۔ تاہم ، پیرامیٹر کی غلط ترتیبات کارکردگی کو متاثر کرسکتی ہیں ، اور رجحان کے الٹ جانے کے خطرات باقی رہ سکتے ہیں۔ پیرامیٹر کے انتخاب اور اسٹاپ کی مزید اصلاح سے زیادہ مستقل نتائج حاصل کرنے میں مدد مل سکتی ہے۔
/*backtest start: 2023-09-22 00:00:00 end: 2023-10-22 00:00:00 period: 1h 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/ // © jensenvilhelm //@version=5 strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false) // User Inputs zerohLine = input(0, title="Midline") // Zero line, baseline for ROC (customer can modify this to adjust midline) rocLength = input(100, title="roc Length") // Lookback period for SMA and ROC (customer can modify this to adjust lookback period) stopLossLevel = input(2, title="Stop Loss (%)") // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level) startDate = timestamp("2015 03 03") // Start date for the strategy (customer can modify this to adjust start date) // Heikin Ashi values var float haClose = na // Define Heikin Ashi close price var float haOpen = na // Define Heikin Ashi open price haClose := ohlc4 // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here) haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 // Calculate Heikin Ashi open price (no customer modification needed here) // ROC Calculation roc = ta.roc(ta.sma(haClose, rocLength), rocLength) // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs) rocHigh = ta.highest(roc, 50) // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period) rocLow = ta.lowest(roc, 50) // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period) upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75) // Calculate upper kill line (customer can modify parameters to adjust this line) lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25) // Calculate lower kill line (customer can modify parameters to adjust this line) // Trade conditions enterLong = ta.crossover(roc, lowerKillLine) // Define when to enter long positions (customer can modify conditions to adjust entry points) exitLong = ta.crossunder(roc, upperKillLine) // Define when to exit long positions (customer can modify conditions to adjust exit points) enterShort = ta.crossunder(roc, upperKillLine) // Define when to enter short positions (customer can modify conditions to adjust entry points) exitShort = ta.crossover(roc, lowerKillLine ) // Define when to exit short positions (customer can modify conditions to adjust exit points) // Strategy execution if(time >= startDate) // Start strategy from specified start date if (enterLong) strategy.entry("Long", strategy.long) // Execute long trades if (exitLong) strategy.close("Long") // Close long trades if (enterShort) strategy.entry("Short", strategy.short) // Execute short trades if (exitShort) strategy.close("Short") // Close short trades // Plotting plot(zerohLine,title="Zeroline") // Plot zero line plot(roc, "RSI", color=color.rgb(248, 248, 248)) // Plot ROC plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76)) // Plot highest ROC plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76)) // Plot lowest ROC plot(upperKillLine, "Upper Kill Line", color = color.aqua) // Plot upper kill line plot(lowerKillLine, "Lower Kill Line", color = color.aqua) // Plot lower kill line