
چٹان کی طرح مضبوط ساحل کی حکمت عملی ایک مقداری تجارتی حکمت عملی ہے جو بریڈی ساحل ٹریڈنگ کے اصول پر عمل کرتی ہے۔ اس میں قیمتوں میں توڑ پھوڑ کا اندراج ، اسٹاپ نقصانات کا سراغ لگانے کا راستہ ، پوزیشن کا سائز اصل طول موج کے مطابق حساب کتاب کرنا ، اور ایک ہی نقصان کو سختی سے کنٹرول کرنا ہے۔ یہ حکمت عملی طویل عرصے تک مستحکم کام کرتی ہے ، اور اس میں سخت چٹان کی طرح اتار چڑھاؤ کی مزاحمت ہوتی ہے۔
چٹان کی طرح مضبوط سمندری طوفان کی حکمت عملی توڑنے میں داخل ہوتی ہے۔ خاص طور پر ، یہ ان پٹ کے توڑنے کے دورانیے کے پیرامیٹرز کے مطابق ، ایک خاص دورانیے میں سب سے زیادہ قیمت اور کم قیمت کا حساب لگاتا ہے۔ جب قیمت سب سے زیادہ قیمت کو توڑتی ہے تو ، زیادہ داخل ہوتا ہے۔ جب قیمت کم سے کم قیمت کو توڑتی ہے تو ، خالی داخل ہوتا ہے۔
مثال کے طور پر ، اگر انٹری سائیکل پیرامیٹرز کو 20 K لائنوں پر سیٹ کیا گیا ہے تو ، حکمت عملی حالیہ 20 K لائنوں کی اعلی ترین اور کم ترین قیمتوں کو نکالتی ہے۔ اگر موجودہ K لائن کی اختتامی قیمت پچھلی 20 K لائنوں کی اعلی ترین قیمت سے زیادہ ہے تو ، حکمت عملی اس اختتامی قیمت کی پوزیشن پر ایک سے زیادہ اسٹاپ آرڈر جاری کرے گی ، جب تک کہ اعلی ترین قیمت کو توڑنے کا انتظار نہ کیا جائے۔
پتھر کی طرح مضبوط سمندری طوفان کی حکمت عملی اسٹاپ نقصان سے باخبر رہتی ہے۔ یہ ان پٹ آؤٹ پٹ سائیکل پیرامیٹرز کے مطابق ، متحرک طور پر ایک خاص دورانیے میں اعلی ترین اور کم ترین قیمتوں کا حساب لگاتا ہے۔ یہ حکمت عملی کے باہر نکلنے کا راستہ بن جاتا ہے۔
جب ایک سے زیادہ پوزیشن پر قبضہ کیا جاتا ہے تو ، اگر قیمت چینل سے باہر نکلنے کی کم سے کم قیمت سے نیچے آجاتی ہے تو ، پوزیشن کا نقصان ختم ہوجاتا ہے۔ اس کے برعکس ، جب ایک خالی پوزیشن پر قبضہ کیا جاتا ہے تو ، اگر قیمت چینل سے باہر نکلنے کی زیادہ سے زیادہ قیمت سے نیچے آجاتی ہے تو ، پوزیشن کا نقصان ختم ہوجاتا ہے۔
اس کے علاوہ ، حکمت عملی اسٹاپ نقصان کی گنتی بھی کرتی ہے ، جس کی اصل طول و عرض پر مبنی ہوتی ہے ، اور یہ آخری اسٹاپ لائن ہے۔ جب تک کہ قیمت باہر نکلنے کے راستے کو توڑ نہیں دیتی ہے ، اسٹاپ نقصانات اس بات کو یقینی بناتے ہیں کہ اسٹاپ نقصانات کا فاصلہ مناسب ہے ، نہ ہی یہ کہ اس سے زیادہ شدت پسندی کی وجہ سے غیر ضروری اسٹاپ نقصان ہوتا ہے ، اور نہ ہی یہ کہ اس سے زیادہ فاصلہ ہوتا ہے جس سے نقصان کو مؤثر طریقے سے کنٹرول نہیں کیا جاسکتا ہے۔
چٹان کی طرح مضبوط سمندری طوفان کی حکمت عملی ایک ہی پوزیشن کے سائز کا حساب کتاب کرے گی جو حقیقی طول و عرض پر مبنی ہے۔ خاص طور پر ، یہ پہلے داخلے کی قیمت کے قریب ممکنہ نقصان کی فیصد کی پیمائش کرے گا ، اور پھر پوزیشن کے سائز کو متوقع خطرے کے پیرامیٹرز کے مطابق پیش کرے گا۔ اس طرح ہر تجارت پر زیادہ سے زیادہ نقصان کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔
چٹان کی طرح مضبوط ساحل سمندر کی حکمت عملی بریڈی ساحل سمندر کے ٹریڈنگ قوانین پر عمل پیرا ہے ، داخلہ اور باہر نکلنے کے قواعد پر سختی سے عمل پیرا ہے ، اور اس میں بے ترتیب تبدیلی نہیں آتی ہے۔ اس سے حکمت عملی کو طویل مدتی مستحکم کام کرنے کی اجازت ملتی ہے ، جس سے عارضی طور پر غلط فیصلے کی وجہ سے نظام کی ناکامی نہیں ہوتی ہے۔
حکمت عملی قیمت توڑنے کے داخلے کا طریقہ اپناتی ہے ، جو اعلی سطح پر غلطی کے داخلے کے خطرے سے بچنے کے لئے موثر ہے ، جس سے سسٹم کے نقصانات کا امکان کم ہوتا ہے۔ اس کے ساتھ ہی ، اسٹاپ ٹریکنگ اسٹاپ کا طریقہ اپنایا گیا ہے تاکہ انفرادی نقصان پر قابو پایا جاسکے ، جس سے لگاتار نقصانات کی وجہ سے ہونے والی کمی اور واپسی کو زیادہ سے زیادہ حد تک روک دیا جاسکے۔
حکمت عملی حقیقی طول و عرض کے حساب سے پوزیشن ، ہر تجارت میں زیادہ سے زیادہ نقصان کو سختی سے کنٹرول کرنے کے لئے ، ایک ہی بڑے نقصان سے ہونے والے خطرے سے بچنے کے لئے۔ اس کے ساتھ ہی ، اسٹاپ نقصان کا سراغ لگانے کا طریقہ یہ یقینی بناتا ہے کہ اسٹاپ نقصان کا فاصلہ مناسب ہے ، نقصان کو بروقت روک سکتا ہے ، اور خطرے کو مؤثر طریقے سے کنٹرول کرسکتا ہے۔
اگر کوئی ہلکا پھلکا جھٹکا ہوتا ہے تو ، غلط سگنل بننے کا خطرہ ہوتا ہے جس کے نتیجے میں نظام کی غلط اندراج میں نقصان ہوتا ہے۔ اس وقت پیرامیٹرز کو ایڈجسٹ کرنے ، اندراج کی تصدیق کی شرائط میں اضافہ کرنے کی ضرورت ہوتی ہے ، تاکہ ناکارہ توڑنے والے شور کی مداخلت سے بچا جاسکے۔
حکمت عملی کے پیرامیٹرز جیسے انٹری سائیکل ، آؤٹ سائیکل ، وغیرہ جامد ہیں۔ اگر مارکیٹ کے حالات میں بڑی تبدیلی آتی ہے تو ، ان پیرامیٹرز کی ترتیبات کو غیر فعال کردیا جاسکتا ہے۔ اس وقت پیرامیٹرز کی ترتیبات کا دوبارہ جائزہ لینے اور مارکیٹ کی نئی حالت کے مطابق پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔
اس حکمت عملی میں تکنیکی اشارے جیسے قیمتوں میں خرابی کا تعین کرنے کے لئے جھنڈے استعمال کیے جاتے ہیں۔ جب مارکیٹ کے رجحانات اور اتار چڑھاؤ کے نمونے میں اہم تبدیلی آتی ہے تو یہ تکنیکی اشارے ضائع ہوسکتے ہیں۔ اس وقت مزید تکنیکی اشارے کے فیصلے متعارف کرانے کی ضرورت ہوتی ہے ، اور مجموعی طور پر حکمت عملی کی وشوسنییتا کو بہتر بنانا ہوتا ہے۔
حکمت عملی میں عام طور پر استعمال ہونے والے رجحانات کا فیصلہ کرنے والے اشارے شامل کیے جاسکتے ہیں ، جیسے MA ، MACD وغیرہ۔ جب آپ زیادہ کرتے ہیں تو بڑھتے ہوئے رجحان کا فیصلہ کرتے ہیں ، اور جب آپ کم کرتے ہیں تو گرنے والے رجحان کا فیصلہ کرتے ہیں ، آپ کو الٹا کام کرنے والے نقصانات کو کم کرنے میں مدد مل سکتی ہے۔
اعلی سطحی ٹائم فریم کے تکنیکی اشارے متعارف کروائے جاسکتے ہیں ، تاکہ جامع فیصلہ کیا جاسکے۔ مثال کے طور پر 86400 کی سطح پر ایم اے لائن کی پوزیشن مجموعی طور پر چلنے کی سمت کا فیصلہ کرسکتی ہے ، اور ٹائم چارٹ پر آپریشنل سگنل کی مزید تصدیق کرسکتی ہے۔
مشین لرننگ جیسے ذرائع کے ذریعہ ، تاریخی اعداد و شمار کے مطابق پیرامیٹرز کو خود بخود بہتر بنایا جاسکتا ہے ، اور مارکیٹ کے ماحول میں تبدیلی کے مطابق پیرامیٹرز کو حقیقی وقت میں ایڈجسٹ کیا جاسکتا ہے۔ اس سے حکمت عملی کو زیادہ لچکدار اور مستحکم بنایا جاسکتا ہے۔
چٹان کی طرح مضبوط ساحل سمندر کی حکمت عملی کلاسیکی ساحل سمندر کے ٹریڈنگ کے اصولوں پر عمل پیرا ہے ، قیمتوں میں توڑنے والی انٹری اور اسٹاپ نقصان سے باخبر رہنے والی اسٹاپ آؤٹ پٹ ، خطرے پر سختی سے قابو پانے کے لئے ، طویل مدتی مستحکم آپریشن اور بہترین مخالف پوزیشن کی واپسی کی صلاحیت رکھتی ہے۔ اگرچہ کچھ خطرات جیسے توڑنے کی ناکامی ، پیرامیٹرز کی ناکامی سے بچنے کی ضرورت ہے ، لیکن رجحان کا فیصلہ ، وقت کا فریم فیصلہ ، متحرک پیرامیٹرز کی اصلاح جیسے ذرائع کو متعارف کرانے سے ان خطرات کو مؤثر طریقے سے کم کیا جاسکتا ہے ، اور حکمت عملی کی مستحکم آپریشن کی صلاحیت میں نمایاں اضافہ کیا جاسکتا ہے۔ مجموعی طور پر ، اس حکمت عملی میں بہت عمدہ استحکام اور مخالف پوزیشن کی واپسی کی صلاحیت ہے ، جس پر اعتماد کیا جاسکتا ہے۔
/*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)