
یہ حکمت عملی وال اسٹریٹ کیچنگ گولا اشارے پر مبنی ہے ، جس میں بیس بیس کریپٹوکرنسی مارکیٹ میں اتار چڑھاؤ کی موازنہ کی گئی ہے ، جس میں ہدف کی کریپٹوکرنسی کے لئے بیعانہ اور اتار چڑھاؤ کی کارروائی کرنے کے لئے خود کار طریقے سے تجارت کی حکمت عملی ہے۔ حکمت عملی مختلف کریپٹوکرنسیوں کے مطابق معاونت کے اشارے کے پیرامیٹرز کو ترتیب دے سکتی ہے ، جس میں متعدد کریپٹوکرنسیوں کے لئے ٹریکنگ کی اجازت دی گئی ہے۔
بیس لائن کریپٹو کرنسیوں کے لئے وال اسٹریٹ ماؤس گلو انڈیکس اوسط لائن کا حساب لگائیں ، اوسط لائن کی لمبائی 200 ادوار طے کریں۔
اوسط لائن کی گرتی ہوئی حالت کا تعین کریں: جب اوسط لائن بڑھتی ہے تو ، حکمت عملی میں بیعانہ آپریشن ہوتا ہے۔ جب اوسط لائن گرتی ہے تو ، حکمت عملی میں بیعانہ آپریشن ہوتا ہے۔
حکمت عملی جو میڈین لائن کے نیچے اور نیچے کی حالت کے ساتھ ساتھ موجودہ پوزیشن کی صورتحال کے مطابق خود بخود پوزیشن کھولنے اور پوزیشن پر عمل درآمد کرتی ہے:
جب اوسط لائن اونچی ہوتی ہے اور اس وقت کوئی پوزیشن نہیں ہوتی ہے تو حکمت عملی کی مارکیٹ کی قیمت خود بخود زیادہ پوزیشن کھولتی ہے۔
جب اوسط نیچے جاتا ہے اور اس وقت کوئی پوزیشن نہیں ہے تو حکمت عملی کی مارکیٹ کی قیمت خود بخود خالی ہوجاتی ہے۔
حکمت عملی کی مارکیٹ کی قیمت خود بخود زیادہ سے زیادہ آرڈر کے لئے مساوی ہوجاتی ہے جب کثیر پوزیشن منافع کی حد مقرر کی جاتی ہے۔
حکمت عملی کی مارکیٹ کی قیمت خود بخود فاریکس آرڈر کو ختم کردیتی ہے جب فاریکس پوزیشن کی منافع کی حد مقررہ رکاوٹ کی حد تک پہنچ جاتی ہے۔
حکمت عملی کی مارکیٹ کی قیمت خود بخود زیادہ سے زیادہ آرڈر کے طور پر ختم ہوجاتی ہے جب زیادہ سے زیادہ نقصانات کی حد مقرر کی جاتی ہے.
جب فاریکس پوزیشن کا نقصان مقررہ اسٹاپ نقصان کی شرح تک پہنچ جاتا ہے تو ، حکمت عملی کی مارکیٹ کی قیمت خود بخود فاریکس کو ختم کردیتی ہے۔
اسٹریٹجک اسٹاپ اور نقصان کی قیمت کو ریئل ٹائم میں اپ ڈیٹ کریں ، بیس کرنسی کی مارکیٹ کی تبدیلیوں کے مطابق۔
اس حکمت عملی میں اعلی موافقت پذیری ہے ، جس میں مختلف کریپٹو کارنسیس کے لئے مختلف پیرامیٹرز کی ترتیب دی جاسکتی ہے ، جس سے متعدد کریپٹو کارنسیس پر ٹریکنگ کی جاسکتی ہے۔
مارکیٹ کے رجحانات کا اندازہ لگانے کے لئے وال اسٹریٹ ماؤس کیپنگ گلاس انڈیکس کا استعمال کرتے ہوئے ، شور کی وجہ سے غلط تجارت سے بچا جاسکتا ہے۔ اس اشارے میں ٹریک اپ اور ڈاون ٹریک کو توڑنے کے لئے کچھ تاخیر ہے ، جس سے جعلی توڑ سے ہونے والے نقصان کو کم کیا جاسکتا ہے۔
اسٹریٹجی میں سٹاپ اسٹاپ نقصان کا طریقہ کار شامل ہے ، جس سے رجحانات کو پکڑنے اور گرنے کو روکنے میں مدد ملتی ہے ، اور انفرادی نقصانات پر قابو پایا جاسکتا ہے۔
حکمت عملی مکمل طور پر خود کار طریقے سے تجارت کرتی ہے ، بغیر کسی انسانی مداخلت کی ضرورت ہوتی ہے ، جو 24 گھنٹے چل سکتی ہے۔
کچھ کریپٹوکرنسی کی قیمتوں میں بیس کریپٹوکرنسیوں سے بے قاعدگی کا امکان موجود ہے ، جس سے حکمت عملی کے ساتھ تجارت کرنے میں ناکامی کا خطرہ ہوتا ہے۔ متعدد بیس کریپٹوکرنسیوں کے حساب سے متعلقہ فیکٹر کو اپنانے کے لئے بہتر بنایا جاسکتا ہے ، اور سب سے زیادہ وابستگی والے بیس کریپٹوکرنسی کا انتخاب کیا جاسکتا ہے۔
مارکیٹ میں غیر معمولی اتار چڑھاؤ کی وجہ سے اسٹاپ نقصان کے خلاف ورزی کا خطرہ ہے۔ آپ اسٹاپ نقصان کی تناسب کو مناسب طریقے سے ایڈجسٹ کرسکتے ہیں یا اسٹاپ ٹریکنگ میں شامل ہوسکتے ہیں۔
اس خطرے کا خطرہ ہے کہ اسٹاپ تناسب کی ترتیب بہت چھوٹی ہے جس کے نتیجے میں کافی حد تک رجحانات کو حاصل کرنے میں ناکامی ہوتی ہے۔ رجحانات کی پیروی یا متحرک اسٹاپ شامل کیا جاسکتا ہے۔
جعلی توڑنے کا خطرہ ہے جس کی وجہ سے پوزیشنوں کو روکنا پڑتا ہے۔ آپ اشارے کے پیرامیٹرز ، شناخت کی ترتیبات کو مناسب طریقے سے ایڈجسٹ کرسکتے ہیں یا دوبارہ داخلے کے طریقہ کار میں شامل ہوسکتے ہیں۔
وابستگی کے تجزیہ کا استعمال کرتے ہوئے متعدد بیس کریپٹو کرنسیوں کا انتخاب کریں ، اشارے کا حساب کتاب کریں ، اور ایک ہی بیس کرنسی کے خطرات کو کم کریں۔
ٹرینڈ ٹریکنگ میکانزم کو شامل کریں اور اسٹاپ اور نقصان کو متحرک طور پر اتار چڑھاؤ کی شرح کے مطابق ایڈجسٹ کریں۔
اس کے علاوہ ، اس میں ایک اعلی سطح کا نقصان بھی شامل ہے ، جس کی وجہ سے اس سے زیادہ حد تک نقصان نہیں ہوتا ہے۔
دوبارہ داخلے کے طریقہ کار کو بڑھانا تاکہ نقصانات کو روکنے کے بعد اس کی پیروی نہ کی جاسکے۔
اشارے کے پیرامیٹرز کو بہتر بنائیں ، شناخت کی ترتیبات ، اشارے کے اثر کو بہتر بنائیں۔
مختلف کریپٹو کرنسیوں کے لئے الگ الگ اصلاحی پیرامیٹرز ، حکمت عملی کی موافقت کو بہتر بنانا۔
پوزیشن مینجمنٹ کو بہتر بنانا ، فنڈز کے سائز کے مطابق پوزیشنوں کو متحرک کرنا۔
یہ حکمت عملی مجموعی طور پر ایک عام رجحان سے باخبر رہنے کی حکمت عملی ہے۔ اس کا بنیادی خیال یہ ہے کہ وال سٹریٹ کے چوہے کی گلی کے اشارے کے مطابق بیس کریپٹو کرنسی کی رجحان کی سمت کا فیصلہ کیا جائے ، تاکہ ہدف کی کریپٹو کرنسی کی تجارت کی سمت کا تعین کیا جاسکے۔ اس حکمت عملی میں کچھ فوائد ہیں ، لیکن کچھ خطرات بھی ہیں جن پر دھیان دینے کی ضرورت ہے۔ پیرامیٹرز کو مستقل طور پر بہتر بنانے اور رجحان سے باخبر رہنے ، رسک کنٹرول وغیرہ جیسے میکانزم میں اضافہ کرکے حکمت عملی کی استحکام اور منافع کو مزید بڑھایا جاسکتا ہے۔ مجموعی طور پر ، یہ حکمت عملی خود کار طریقے سے کریپٹوکرنسی ٹریڈنگ کے عمل کے لئے نظریہ اور حوالہ فراہم کرتی ہے۔
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
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/
// © levieux
//@version=5
strategy(title='Correlation Strategy', shorttitle='Correlation Strategy', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
supportLength = input.int(200, minval=1, title='Support Length')
supportSymbol = input('BTC_USDT:swap', title='Correlated Symbol')
supportSource = input(hlc3, title='Price Source')
takeprofitLong = input.float(0.2, 'Take Profit Long', step=0.01)
takeprofitShort = input.float(0.15, 'Take Profit Short', step=0.01)
stoplossLong = input.float(0.1, 'Stop Loss Long', step=0.01)
stoplossShort = input.float(0.04, 'Stop Loss Short', step=0.01)
start = input(defval = timestamp("01 Jan 2016 00:00 +0000"), title = "Start Time")
end = input(defval = timestamp("31 Dec 2050 23:59 +0000"), title = "End Time")
supportTicker = request.security(supportSymbol, timeframe.period, supportSource, lookahead=barmerge.lookahead_off) //input(close, title="Source")
supportLine = ta.wma(supportTicker, supportLength)
window() => true
if not window()
strategy.cancel_all()
supportLongPrice = close
supportShortPrice = close
if strategy.position_size > 0
supportLongPrice := supportLongPrice[1]
if strategy.position_size < 0
supportShortPrice := supportShortPrice[1]
longCondition = ta.rising(supportLine, 5) and window() and strategy.position_size <= 0
shortCondition = ta.falling(supportLine, 5) and window() and window() and strategy.position_size > 0
takeprofitLongCondition = takeprofitLong > 0 and window() and strategy.position_size > 0 and supportTicker > supportLongPrice * (1 + takeprofitLong)
stoplossLongCondition = stoplossLong > 0 and window() and strategy.position_size > 0 and supportTicker < supportLongPrice * (1 - stoplossLong)
takeprofitShortCondition = takeprofitShort > 0 and window() and strategy.position_size < 0 and supportTicker > supportShortPrice * (1 + takeprofitShort)
stoplossShortCondition = stoplossShort > 0 and window() and strategy.position_size < 0 and supportTicker < supportShortPrice * (1 - stoplossShort)
if longCondition
strategy.entry('Long', strategy.long)
supportLongPrice := supportTicker
if shortCondition
strategy.entry('Short', strategy.short)
supportShortPrice := supportTicker
if takeprofitLongCondition
strategy.close('Long')
if stoplossLongCondition
strategy.close('Long')
if takeprofitShortCondition
strategy.close('Short')
if stoplossShortCondition
strategy.close('Short')
///////////////////
// MONTHLY TABLE //
new_month = month(time) != month(time[1])
new_year = year(time) != year(time[1])
eq = strategy.equity
bar_pnl = eq / eq[1] - 1
bar_bh = (close-close[1])/close[1]
cur_month_pnl = 0.0
cur_year_pnl = 0.0
cur_month_bh = 0.0
cur_year_bh = 0.0
// Current Monthly P&L
cur_month_pnl := new_month ? 0.0 :
(1 + cur_month_pnl[1]) * (1 + bar_pnl) - 1
cur_month_bh := new_month ? 0.0 :
(1 + cur_month_bh[1]) * (1 + bar_bh) - 1
// Current Yearly P&L
cur_year_pnl := new_year ? 0.0 :
(1 + cur_year_pnl[1]) * (1 + bar_pnl) - 1
cur_year_bh := new_year ? 0.0 :
(1 + cur_year_bh[1]) * (1 + bar_bh) - 1
// Arrays to store Yearly and Monthly P&Ls
var month_pnl = array.new_float(0)
var month_time = array.new_int(0)
var month_bh = array.new_float(0)
var year_pnl = array.new_float(0)
var year_time = array.new_int(0)
var year_bh = array.new_float(0)
end_time = false
end_time:= time_close + (time_close - time_close[1]) > timenow or barstate.islastconfirmedhistory
if (not na(cur_month_pnl[1]) and (new_month or end_time))
if (end_time[1])
array.pop(month_pnl)
array.pop(month_time)
array.push(month_pnl , cur_month_pnl[1])
array.push(month_time, time[1])
array.push(month_bh , cur_month_bh[1])
if (not na(cur_year_pnl[1]) and (new_year or end_time))
if (end_time[1])
array.pop(year_pnl)
array.pop(year_time)
array.push(year_pnl , cur_year_pnl[1])
array.push(year_time, time[1])
array.push(year_bh , cur_year_bh[1])
// Monthly P&L Table
var monthly_table = table(na)
getCellColor(pnl, bh) =>
if pnl > 0
if bh < 0 or pnl > 2 * bh
color.new(color.green, transp = 20)
else if pnl > bh
color.new(color.green, transp = 50)
else
color.new(color.green, transp = 80)
else
if bh > 0 or pnl < 2 * bh
color.new(color.red, transp = 20)
else if pnl < bh
color.new(color.red, transp = 50)
else
color.new(color.red, transp = 80)
if end_time
monthly_table := table.new(position.bottom_right, columns = 14, rows = array.size(year_pnl) + 1, border_width = 1)
table.cell(monthly_table, 0, 0, "", bgcolor = #cccccc)
table.cell(monthly_table, 1, 0, "Jan", bgcolor = #cccccc)
table.cell(monthly_table, 2, 0, "Feb", bgcolor = #cccccc)
table.cell(monthly_table, 3, 0, "Mar", bgcolor = #cccccc)
table.cell(monthly_table, 4, 0, "Apr", bgcolor = #cccccc)
table.cell(monthly_table, 5, 0, "May", bgcolor = #cccccc)
table.cell(monthly_table, 6, 0, "Jun", bgcolor = #cccccc)
table.cell(monthly_table, 7, 0, "Jul", bgcolor = #cccccc)
table.cell(monthly_table, 8, 0, "Aug", bgcolor = #cccccc)
table.cell(monthly_table, 9, 0, "Sep", bgcolor = #cccccc)
table.cell(monthly_table, 10, 0, "Oct", bgcolor = #cccccc)
table.cell(monthly_table, 11, 0, "Nov", bgcolor = #cccccc)
table.cell(monthly_table, 12, 0, "Dec", bgcolor = #cccccc)
table.cell(monthly_table, 13, 0, "Year", bgcolor = #999999)
for yi = 0 to array.size(year_pnl) - 1
table.cell(monthly_table, 0, yi + 1, str.tostring(year(array.get(year_time, yi))), bgcolor = #cccccc)
y_color = getCellColor(array.get(year_pnl, yi), array.get(year_bh, yi))
table.cell(monthly_table, 13, yi + 1, str.tostring(math.round(array.get(year_pnl, yi) * 100)) + " (" + str.tostring(math.round(array.get(year_bh, yi) * 100)) + ")", bgcolor = y_color)
for mi = 0 to array.size(month_time) - 1
m_row = year(array.get(month_time, mi)) - year(array.get(year_time, 0)) + 1
m_col = month(array.get(month_time, mi))
m_color = getCellColor(array.get(month_pnl, mi), array.get(month_bh, mi))
table.cell(monthly_table, m_col, m_row, str.tostring(math.round(array.get(month_pnl, mi) * 100)) + " (" + str.tostring(math.round(array.get(month_bh, mi) * 100)) +")", bgcolor = m_color)