راک ٹرتل کی حکمت عملی کے طور پر ثابت قدمی ایک مقداری تجارتی حکمت عملی ہے جو بریڈی ٹرتل ٹریڈنگ کے طریقہ کار کے قواعد پر عمل کرتی ہے۔ یہ پوزیشنوں میں داخل ہونے کے لئے قیمت کے وقفے کا استعمال کرتی ہے اور باہر نکلنے کے لئے ٹریک اسٹاپ کو روکتی ہے۔ یہ حقیقی اتار چڑھاؤ کی بنیاد پر پوزیشن سائزنگ کا حساب لگاتی ہے اور ہر تجارت پر نقصانات کو سختی سے کنٹرول کرتی ہے۔ اس حکمت عملی میں آپریشن میں طویل مدتی استحکام اور مضبوط برداشت ہے ، جس طرح ثابت قدمی کی چٹانوں کی طرح۔
راک ٹرتل کی طرح ثابت قدم حکمت عملی بریک آؤٹ پر داخل ہوتی ہے۔ خاص طور پر ، یہ مخصوص نظرثانی کی مدت میں سب سے زیادہ اعلی اور کم سے کم کم کا حساب لگاتا ہے۔ جب قیمت سب سے زیادہ اعلی سے اوپر ٹوٹ جاتی ہے تو ، یہ لمبا ہوجاتا ہے۔ جب قیمت سب سے کم کم سے نیچے ٹوٹ جاتی ہے تو ، یہ مختصر ہوجاتی ہے۔
مثال کے طور پر ، داخلہ کی مدت 20 بار پر طے کی گئی ہے ، حکمت عملی پچھلے 20 باروں میں سب سے زیادہ اعلی اور سب سے کم کم نکالتی ہے۔ اگر موجودہ بار کی بندش پچھلے 20 باروں کی سب سے زیادہ اونچائی سے تجاوز کرتی ہے تو ، حکمت عملی اس قریب قیمت پر طویل اسٹاپ آرڈر رکھے گی تاکہ سب سے زیادہ اونچائی سے اوپر توڑنے کی تیاری کی جاسکے۔
اسٹیڈسٹ بطور راک ٹرپل حکمت عملی اسٹاپس ٹریکنگ اسٹاپس کے ساتھ باہر نکلتی ہے۔ یہ متحرک طور پر مخصوص باہر نکلنے کی مدت میں سب سے زیادہ اونچی اور کم سے کم کم کا حساب لگاتا ہے اور ان کا استعمال باہر نکلنے کے چینل کا تعین کرنے کے لئے کرتا ہے۔
اگر لانگ ہولڈنگ کی جائے تو ایک بار جب قیمت ایگزٹ چینل کی سب سے کم سطح سے نیچے آجائے گی تو پوزیشن بند ہو جائے گی۔ مختصر پوزیشن کے لئے اس کے برعکس۔
اس کے علاوہ ، حکمت عملی حقیقی اتار چڑھاؤ کی بنیاد پر اسٹاپ نقصان کی سطح کا حساب لگاتی ہے ، جو آخری اسٹاپ کی حیثیت سے کام کرتی ہے۔ جب تک قیمت ایگزٹ چینل سے اوپر رہتی ہے ، اسٹاپ نقصان ٹریک اور ایڈجسٹ ہوتا رہے گا ، اس بات کو یقینی بناتا ہے کہ اسٹاپ مناسب فاصلے پر مقرر کیے جائیں۔ غیر ضروری اسٹاپ آؤٹ کے لئے بہت تنگ نہیں ، خطرے کے کنٹرول کے لئے بہت ڈھیلا نہیں ہے۔
اسٹیڈفسٹ بطور راک ٹرٹل حکمت عملی اپنی پوزیشنوں کو حقیقی اتار چڑھاؤ کی بنیاد پر سائز کرتی ہے۔ خاص طور پر ، یہ پہلے اندراج کی قیمت کے قریب ممکنہ نقصان کا فیصد تخمینہ لگاتا ہے ، پھر متوقع رسک پیرامیٹر سے پوزیشن کے سائز کا الٹ حساب لگاتا ہے۔ اس سے فی تجارت زیادہ سے زیادہ نقصان کو مؤثر طریقے سے کنٹرول کیا جاتا ہے۔
ایک راک ٹرپل کی طرح ثابت قدم حکمت عملی کسی بھی طرح کی تبدیلیوں کے بغیر داخلے اور باہر نکلنے پر کلاسیکی ٹرپل ٹریڈنگ کے قواعد پر سختی سے عمل کرتی ہے۔ اس سے عارضی خراب فیصلے کی وجہ سے نظام کی ناکامی کے بغیر طویل فاصلے تک مستقل طور پر چلنے کی حکمت عملی کی اجازت ملتی ہے۔
بریکآؤٹس پر داخل ہونے سے ، حکمت عملی مؤثر طریقے سے زیادہ قیمت والے اندراجات سے بچتی ہے ، نظام کے نقصانات کے امکان کو کم کرتی ہے۔ اور اسٹاپس ٹریکنگ اسٹاپس کے ساتھ باہر نکلنے سے ، یہ یقینی بناتا ہے کہ ہر تجارت میں زیادہ سے زیادہ نقصان کو کنٹرول کیا جائے تاکہ بڑے پیمانے پر مسلسل نقصانات سے بچنے کے ل.
حقیقی اتار چڑھاؤ کی بنیاد پر سائزنگ کرکے، حکمت عملی سختی سے رواداری کے اندر ہر تجارت کے زیادہ سے زیادہ نقصان کو کنٹرول کرتی ہے۔ اور اسٹاپ فاصلے کو ٹریک کرکے، یہ مؤثر طریقے سے خطرات کو روکنے کے لئے وقت میں نقصانات کو کم کر سکتی ہے۔
اگر قیمت کم رفتار کے ساتھ ٹوٹ جاتی ہے تو ، یہ غلط سگنل ثابت ہوسکتا ہے جس کی وجہ سے غلط اندراج کے نقصانات ہوتے ہیں۔ غیر موثر بریک آؤٹ شور سے بچنے کے لئے زیادہ اندراج کی تصدیق کے قواعد کے ساتھ پیرامیٹرز کو ایڈجسٹ کرنے کی ضرورت ہوگی۔
جامد حکمت عملی کے پیرامیٹرز جیسے انٹری / ایگزٹ پیریڈ غیر قانونی ہوسکتے ہیں اگر مارکیٹ کا نظام ڈرامائی طور پر بدل جائے۔ ان پیرامیٹرز کو اپنانے کے لئے دوبارہ تشخیص اور دوبارہ اصلاح کی ضرورت ہوگی۔
قیمتوں میں خرابی کے پرچم کی طرح استعمال ہونے والے اشارے ناکام ہوسکتے ہیں جب رجحان یا اتار چڑھاؤ میں نمایاں تبدیلی آتی ہے۔ حکمت عملی کی وشوسنییتا کو بہتر بنانے کے لئے مزید تکنیکوں کو انضمام کی ضرورت ہوگی۔
عام رجحان کے اشارے جیسے ایم اے ، ایم اے سی ڈی شامل کیے جاسکتے ہیں۔ صرف اپ ٹرینڈ میں لمبا اور صرف ڈاؤن ٹرینڈ میں مختصر ہوجائیں تاکہ انسداد رجحان کے وِپساؤ سے بچ سکیں۔
اعلی ٹائم فریم اشارے ، جیسے روزانہ ایم اے کی سطح ، کم ٹائم فریم سگنلوں کی تکمیل کے لئے مجموعی سمت کی تصدیق میں مدد کرسکتے ہیں۔
مشین لرننگ مارکیٹ کی متحرک تبدیلیوں میں افادیت کو برقرار رکھنے کے لئے تازہ ترین اعداد و شمار کی بنیاد پر مسلسل حکمت عملی پیرامیٹرز کو خودکار طور پر اپ ڈیٹ کرسکتی ہے۔
راک ٹرپل کی حکمت عملی کے طور پر ثابت قدمی کلاسیکی کچھی ٹریڈنگ طریقہ کار پر سختی سے عمل کرتی ہے۔ سخت رسک کنٹرول کے ساتھ بریک آؤٹ انٹری اور ٹریکنگ اسٹاپ ایگزٹ۔ اس سے مضبوط ڈرا ڈاؤن لچک کے ساتھ طویل مدتی مستحکم کارروائیوں کی اجازت ملتی ہے۔ غلط بریک آؤٹ ، پیرامیٹر کی ناکامی وغیرہ جیسے خطرات کے باوجود ، ان کو ٹرینڈ فلٹر ، ٹائم فریم ترکیب ، متحرک ٹیوننگ وغیرہ جیسے اضافوں کے ذریعہ مؤثر طریقے سے کم کیا جاسکتا ہے تاکہ حکمت عملی کے استحکام کو نمایاں طور پر بہتر بنایا جاسکے۔ مجموعی طور پر ایک بہترین مضبوط حکمت عملی جس پر اعتماد اور برقرار رکھنے کے قابل ہے۔
/*backtest start: 2024-01-18 00:00:00 end: 2024-02-17 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Real Turtle", shorttitle = "Real Turtle", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075) ////////////////////////////////////////////////////////////////////// // Testing Start dates testStartYear = input(2016, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) //Stop date if you want to use a specific range of dates testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period // Use if using a specific date range testPeriodBackground = input(title="Color Background?", type=bool, defval=false) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop ////////////////////////////////////////////////////////////////////// //How many candles we want to determine our position entry enterTrade = input(20, minval=1, title="Entry Channel Length") //How many candles we want ot determine our position exit exitTrade = input(10, minval=1, title="Exit Channel Length") //True Range EMA Length trLength = input(13, minval=1, title="True Range Length") //Go all in on every trade allIn = input(false, title="Use whole position on every trade") dRisk = input(2, "Use Desired Risk %") //How much of emaTR to use for TS offset multiEmaTR = input(2, "Desired multiple of ema Tr (N)") //absolute value (highest high of of this many candles - lowest high of this many candles) . This is used if we want to change our timeframe to a higher timeframe otherwise just works like grabbing high o r low of a candle //True range is calculated as just high - low. Technically this should be a little more complicated but with 24/7 nature of crypto markets high-low is fine. trueRange = max(high - low, max(high - close[1], close[1] - low)) //Creates an EMA of the true range by our custom length emaTR = ema(trueRange, trLength) //Highest high of how many candles back we want to look as specified in entry channel for long longEntry = highest(enterTrade) //loweest low of how many candles back we want to look as specified in exit channel for long exitLong = lowest(exitTrade) //lowest low of how many candles back want to look as specified in entry channel for short shortEntry = lowest(enterTrade) //lowest low of how many candles back want to look as specified in exit channel for short exitShort = highest(exitTrade) //plots the longEntry as a green line plot(longEntry[1], title="Long Entry",color=green) //plots the short entry as a purple line plot(shortEntry[1], title="Short Entry",color=purple) howFar = barssince(strategy.position_size == 0) actualLExit = strategy.position_size > 0 ? strategy.position_avg_price - (emaTR[howFar] * multiEmaTR) : longEntry - (emaTR * multiEmaTR) actualLExit2 = actualLExit > exitLong ? actualLExit : exitLong actualSExit = strategy.position_size < 0 ? strategy.position_avg_price + (emaTR[howFar] * multiEmaTR) : shortEntry + (emaTR * multiEmaTR) actualSExit2 = actualSExit < exitShort ? actualSExit : exitShort //plots the long exit as a red line plot(actualLExit2[1], title="Long Exit",color=red) //plots the short exit as a blue line plot(actualSExit2[1], title="Short Exit",color=yellow) //Stop loss in ticks SLLong =(emaTR * multiEmaTR)/ syminfo.mintick SLShort = (emaTR * multiEmaTR)/ syminfo.mintick //Calculate our potential loss as a whole percentage number. Example 1 instead of 0.01 for 1% loss. We have to convert back from ticks to whole value, then divided by close PLLong = ((SLLong * syminfo.mintick) * 100) / longEntry PLShort = ((SLShort * syminfo.mintick) * 100) / shortEntry //Calculate our risk by taking our desired risk / potential loss. Then multiple by our equity to get position size. we divide by close because we are using percentage size of equity for quantity in this script as not actual size. //we then floor the value. which is just to say we round down so instead of say 201.54 we would just input 201 as TV only supports whole integers for quantity. qtyLong = floor(((dRisk / PLLong) * strategy.equity) /longEntry ) qtyShort = floor(((dRisk / PLShort) * strategy.equity) /shortEntry ) qtyLong2 = allIn ? 100 : qtyLong qtyShort2 = allIn ? 100 : qtyShort //Only open long or short positions if we are inside the test period specified earlier if testPeriod() //Open a stop market order at our long entry price and keep it there at the quantity specified. This order is updated/changed on each new candlestick until a position is opened strategy.entry("long", strategy.long, stop = longEntry, qty = qtyLong2) //sets up or stop loss order by price specified in our actualLExit2 variable strategy.exit("Stoploss-Long", "long", stop=actualLExit2) //Open a stop market order at our short entry price and keep it there at the quantity specified. This order is updated/changed on each new candlestick until a position is opened strategy.entry("short", strategy.short, stop = shortEntry, qty = qtyShort2) //sets up or stop loss order by price specified in our actualLExit2 variable strategy.exit("Stoploss-Short", "short", stop=actualSExit2)