
تین برابر لائنوں والی گولڈ کراس ٹریڈنگ حکمت عملی ایک عام تکنیکی تجزیہ حکمت عملی ہے۔ یہ حکمت عملی ایک ہی وقت میں تین مختلف وقت کی لمبائی کی متحرک اوسط کا استعمال کرتی ہے تاکہ رجحان کو پکڑنے اور کم خطرہ کی تجارت کو ممکن بنایا جاسکے۔ جب قلیل مدتی متحرک اوسط پر درمیانی مدت کی متحرک اوسط سے تجاوز کی جائے اور درمیانی مدت کی متحرک اوسط طویل مدتی متحرک اوسط سے زیادہ ہو تو خریدنے کا اشارہ پیدا ہوتا ہے۔ جب قلیل مدتی متحرک اوسط درمیانی مدت کی متحرک اوسط سے نیچے کی طرف سے عبور کی جائے اور درمیانی مدت کی متحرک اوسط طویل مدتی متحرک اوسط سے کم ہو تو فروخت کا اشارہ پیدا ہوتا ہے۔
تین اوسط لکیری گولڈ کراس حکمت عملی بنیادی طور پر رجحان کی سمت کا تعین کرنے کے لئے تین متحرک اوسط پر انحصار کرتی ہے۔ قلیل مدتی متحرک اوسط قیمت کی تبدیلیوں کا حساس طور پر جواب دیتا ہے۔ درمیانی مدت کی متحرک اوسط زیادہ واضح رجحان کا فیصلہ فراہم کرتی ہے۔ طویل مدتی متحرک اوسط مارکیٹ کے شور کو فلٹر کرتی ہے ، طویل مدتی رجحان کی سمت کا تعین کرتی ہے۔
جب قلیل مدتی حرکت پذیری اوسط پر درمیانی مدت کی حرکت پذیری اوسط سے گزرتا ہے تو ، اس کی نشاندہی کرتا ہے کہ قیمت اوپر کی طرف بڑھنے لگی ہے۔ اس وقت اگر درمیانی مدت کی حرکت پذیری اوسط طویل مدتی حرکت پذیری اوسط سے زیادہ ہے تو ، اس کا مطلب یہ ہے کہ اس وقت عروج پر ہے ، لہذا اس وقت خریدنے کا اشارہ پیدا ہوتا ہے۔
اس کے برعکس ، جب قلیل مدتی حرکت پذیر اوسط کے نیچے درمیانی مدت کی حرکت پذیری اوسط سے گزرتا ہے تو ، اس کا مطلب یہ ہے کہ قیمت نیچے کی طرف بڑھنے لگی ہے۔ اگر درمیانی مدت کی حرکت پذیری اوسط طویل مدتی حرکت پذیری اوسط سے کم ہے تو ، اس کا مطلب یہ ہے کہ یہ فی الحال نیچے کی طرف ہے ، لہذا اس وقت فروخت کا اشارہ پیدا ہوتا ہے۔
اس حکمت عملی میں ایک ہی وقت میں اسٹاپ نقصان کی حد طے کی جاتی ہے۔ تجارت کے بعد ، اسٹاپ نقصان اور اسٹاپ قیمت کا حساب لگایا جاتا ہے ، اس کی بنیاد پر جو اسٹاپ نقصان کی حد طے کی گئی ہے۔ اگر قیمت اسٹاپ نقصان یا اسٹاپ نقصان کی حد کو چھوتی ہے تو ، اس کی پوزیشن کو ختم کردیا جاتا ہے۔
حل: غلط سگنل سے بچنے کے لئے منتقل اوسط پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کریں
حل: سٹاپ نقصان کے تناسب کو مناسب طریقے سے ایڈجسٹ کریں ، نہ تو بہت بڑا اور نہ ہی بہت چھوٹا
حل: مختلف پیرامیٹرز کی جانچ اور ان کا بہترین مجموعہ تلاش کریں
ٹرپل لائن گولڈ کراسنگ حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
بہترین ٹریڈنگ کے لئے مختلف لمبائی یا مختلف اقسام کے متحرک اوسط کے مجموعے کی جانچ کی جاسکتی ہے
دیگر اشارے جیسے کے ڈی جے ، ایم اے سی ڈی ، وغیرہ کو حکمت عملی میں شامل کیا جاسکتا ہے ، ملٹی فیکٹر توثیق ، فلٹر غلط سگنل
اعلی تعدد پرجاتیوں کے لئے منتقل اوسط سائیکل کو مختصر کیا جا سکتا ہے؛ کم تعدد پرجاتیوں کے لئے بڑھتی ہوئی منتقل اوسط سائیکل
الگورتھم کے ذریعہ خود کار طریقے سے پیرامیٹر اسپیس میں گھومتے ہوئے ، بہترین پیرامیٹرز کو تیزی سے تلاش کریں
تین یکساں گولڈ کراس حکمت عملی مجموعی طور پر ایک آسان اور عملی رجحان ٹریکنگ حکمت عملی ہے۔ یہ ایک ہی وقت میں رجحان کی سمت کو پکڑنے کے لئے تین چلتی اوسط کا استعمال کرتا ہے ، اور اسٹاپ نقصان کو روکنے کے لئے خطرہ کو روکتا ہے ، جس سے مستحکم منافع حاصل کیا جاسکتا ہے۔ پیرامیٹرز کو بہتر بنانے اور دیگر تکنیکی اشارے شامل کرنے سے حکمت عملی کی تاثیر کو مزید بڑھایا جاسکتا ہے۔ مجموعی طور پر ، یہ حکمت عملی مستحکم منافع کی تلاش میں سرمایہ کاروں کے لئے موزوں ہے۔
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Kozlod - 3 MA strategy with SL/PT", shorttitle="kozlod_3ma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)
//
// author: Kozlod
// date: 2018-03-25
//
////////////
// INPUTS //
////////////
ma_type = input(title = "MA Type", defval = "SMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
short_ma_len = input(title = "Short MA Length", defval = 5, minval = 1)
short_ma_src = input(title = "Short MA Source", defval = close)
medium_ma_len = input(title = "Medium MA Length", defval = 20, minval = 2)
medium_ma_src = input(title = "Medium MA Source", defval = close)
long_ma_len = input(title = "Long MA Length", defval = 100, minval = 3)
long_ma_src = input(title = "Long MA Source", defval = close)
sl_lev_perc = input(title = "SL Level % (0 - Off)", type = float, defval = 0, minval = 0, step = 0.01)
pt_lev_perc = input(title = "PT Level % (0 - Off)", type = float, defval = 0, minval = 0, step = 0.01)
// Set initial values to 0
short_ma = 0.0
long_ma = 0.0
medium_ma = 0.0
// Simple Moving Average (SMA)
if ma_type == 'SMA'
short_ma := sma(short_ma_src, short_ma_len)
medium_ma := sma(medium_ma_src, medium_ma_len)
long_ma := sma(long_ma_src, long_ma_len)
// Exponential Moving Average (EMA)
if ma_type == 'EMA'
short_ma := ema(short_ma_src, short_ma_len)
medium_ma := ema(medium_ma_src, medium_ma_len)
long_ma := ema(long_ma_src, long_ma_len)
// Weighted Moving Average (WMA)
if ma_type == 'WMA'
short_ma := wma(short_ma_src, short_ma_len)
medium_ma := wma(medium_ma_src, medium_ma_len)
long_ma := wma(long_ma_src, long_ma_len)
// Hull Moving Average (HMA)
if ma_type == 'HMA'
short_ma := wma(2*wma(short_ma_src, short_ma_len / 2) - wma(short_ma_src, short_ma_len), round(sqrt(short_ma_len)))
medium_ma := wma(2*wma(medium_ma_src, medium_ma_len / 2) - wma(medium_ma_src, medium_ma_len), round(sqrt(medium_ma_len)))
long_ma := wma(2*wma(long_ma_src, long_ma_len / 2) - wma(long_ma_src, long_ma_len), round(sqrt(long_ma_len)))
// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
short_ma := vwma(short_ma_src, short_ma_len)
medium_ma := vwma(medium_ma_src, medium_ma_len)
long_ma := vwma(long_ma_src, long_ma_len)
// Smoothed Moving Average (SMMA)
if ma_type == 'SMMA'
short_ma := na(short_ma[1]) ? sma(short_ma_src, short_ma_len) : (short_ma[1] * (short_ma_len - 1) + short_ma_src) / short_ma_len
medium_ma := na(medium_ma[1]) ? sma(medium_ma_src, medium_ma_len) : (medium_ma[1] * (medium_ma_len - 1) + medium_ma_src) / medium_ma_len
long_ma := na(long_ma[1]) ? sma(long_ma_src, long_ma_len) : (long_ma[1] * (long_ma_len - 1) + long_ma_src) / long_ma_len
// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
e1_short = ema(short_ma_src , short_ma_len)
e1_medium = ema(medium_ma_src, medium_ma_len)
e1_long = ema(long_ma_src, long_ma_len)
short_ma := 2 * e1_short - ema(e1_short, short_ma_len)
medium_ma := 2 * e1_medium - ema(e1_medium, medium_ma_len)
long_ma := 2 * e1_long - ema(e1_long, long_ma_len)
/////////////
// SIGNALS //
/////////////
long_signal = crossover( short_ma, medium_ma) and medium_ma > long_ma
short_signal = crossunder(short_ma, medium_ma) and medium_ma < long_ma
// Calculate PT/SL levels
// Initial values
last_signal = 0
prev_tr_price = 0.0
pt_level = 0.0
sl_level = 0.0
// Calculate previous trade price
prev_tr_price := (long_signal[1] and nz(last_signal[2]) != 1) or (short_signal[1] and nz(last_signal[2]) != -1) ? open : nz(last_signal[1]) != 0 ? prev_tr_price[1] : na
// Calculate SL/PT levels
pt_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 + pt_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 - pt_lev_perc / 100) : na
sl_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 - sl_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 + sl_lev_perc / 100) : na
// Calculate if price hit sl/pt
long_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) == 1 and close >= pt_level
long_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) == 1 and close <= sl_level
short_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) == -1 and close <= pt_level
short_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) == -1 and close >= sl_level
// What is last active trade?
last_signal := long_signal ? 1 : short_signal ? -1 : long_hit_pt or long_hit_sl or short_hit_pt or short_hit_sl ? 0 : nz(last_signal[1])
//////////////
// PLOTTING //
//////////////
// Plot MAs
plot(short_ma, color = red, linewidth = 2)
plot(medium_ma, color = green, linewidth = 2)
plot(long_ma, color = yellow, linewidth = 2)
// Plot Levels
plotshape(prev_tr_price, style = shape.cross, color = gray, location = location.absolute, size = size.small)
plotshape(sl_lev_perc > 0 ? sl_level : na, style = shape.cross, color = red, location = location.absolute, size = size.small)
plotshape(pt_lev_perc > 0 ? pt_level : na, style = shape.cross, color = green, location = location.absolute, size = size.small)
//////////////
// STRATEGY //
//////////////
strategy.entry("long", true, when = long_signal)
strategy.entry("short", false, when = short_signal)
strategy.close("long", when = long_hit_pt or long_hit_sl)
strategy.close("short", when = short_hit_pt or short_hit_sl)