یہ حکمت عملی خرید و فروخت کے اشارے کے طور پر تیز رفتار اور سست رفتار اوسط لائن کی کراسنگ پر مبنی ہے۔ یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے۔ متحرک اوسط پیرامیٹرز کو خود بخود ایڈجسٹ کرکے ، مارکیٹ کے رجحانات کو متحرک طور پر اپنانے کے لئے منافع کو زیادہ سے زیادہ کریں۔
تیز رفتار حرکت پذیر اوسط اور سست رفتار حرکت پذیر اوسط کا حساب لگائیں۔ تیز رفتار حرکت پذیر اوسط پیرامیٹر ڈیفالٹ 21 ہے ، سست رفتار حرکت پذیر اوسط پیرامیٹر ڈیفالٹ 34 ہے۔
جب تیز رفتار حرکت پذیر اوسط لائن پر سست رفتار حرکت پذیر اوسط لائن کو عبور کیا جاتا ہے تو ، اس کا مطلب ہے کہ اس میں اضافہ ہوا ہے ، جس سے خریدنے کا اشارہ ملتا ہے۔
جب تیزی سے چلنے والی اوسط لائن کے نیچے سست رفتار سے چلنے والی اوسط لائن سے گزرتا ہے تو ، اس کا مطلب ہے کہ مارکیٹ نیچے کی طرف ہے ، اور فروخت کا اشارہ دیا گیا ہے۔
متحرک اوسط کی لمبائی کے پیرامیٹرز کو خود بخود ایڈجسٹ کرکے مارکیٹ کے رجحانات کے مطابق متحرک طور پر اس کا پیچھا کریں اور اس رجحان سے فائدہ اٹھائیں۔
حکمت عملی سادہ اور واضح ہے اور اس پر عملدرآمد کو سمجھنا آسان ہے۔
مارکیٹ کے رجحانات کو مؤثر طریقے سے ٹریک کرنے کے قابل، منافع بخش صلاحیت کے ساتھ.
پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرکے ، آپ کو حالات کی تبدیلیوں کے مطابق ڈھالنا ہوگا۔
ترتیب دینے کے قابل موبائل اوسط لکیری الگورتھم ، حکمت عملی میں زیادہ لچکدار۔
اس کے علاوہ ، یہ ایک بہت ہی آسان اور آسان ایپلی کیشن ہے ، جس میں آپ کو خریدنے اور فروخت کرنے کے لئے آزادانہ طور پر تشکیل دیا جاسکتا ہے۔
ایک متحرک اوسط حکمت عملی کے نتیجے میں اکثر تجارت ہوتی ہے اور اس کی لاگت زیادہ ہوتی ہے۔
جب تجارت میں شدید اتار چڑھاؤ ہوتا ہے تو ، متحرک اوسط پیچھے رہ جاتا ہے ، جس سے بہترین خرید و فروخت کا وقت ضائع ہوسکتا ہے۔
آپ کو متحرک اوسط لائن پیرامیٹرز کو بہتر بنانے اور تعدد کو ایڈجسٹ کرنے کی ضرورت ہے۔ غلط ترتیب سے حکمت عملی ناکام ہوجاتی ہے۔
نقصانات کو بڑھانے سے روکنے کے لئے سخت کنٹرول کی ضرورت ہے.
اس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس طرح کی تبدیلیوں کے نتیجے میں بڑے پیمانے پر نقصانات کا سامنا کرنا پڑتا ہے۔
اس کے علاوہ ، اس میں ٹریڈنگ کے رجحانات کو پکڑنے کے لئے متحرک اوسط پیرامیٹرز کو بہتر بنایا گیا ہے۔
اسٹاپ نقصان کی منطق میں اضافہ ، ایک نقصان پر سخت کنٹرول۔
رجحانات کو سمجھنے کے لئے اشارے میں اضافہ کریں اور رجحانات کو تبدیل کرنے سے بچنے سے بچنے کے لئے.
موبائل میڈین لائن ایڈجسٹمنٹ کی حکمت عملی کو بہتر بنانا تاکہ اسے زیادہ ذہین اور خودکار بنایا جاسکے۔
پیرامیٹرز کو بہتر بنانے کے لئے ماڈیول شامل کریں ، مشین لرننگ کے طریقوں کا استعمال کرتے ہوئے خود کار طریقے سے بہتر بنائیں۔
اس حکمت عملی کا مجموعی نظریہ واضح اور سمجھنے میں آسان ہے ، مختلف لمبائی کی تیز رفتار حرکت پذیر اوسط کو ترتیب دے کر خرید و فروخت کو مکمل کیا جاتا ہے۔ یہ ایک عام رجحان سے باخبر رہنے کی حکمت عملی ہے۔ حکمت عملی کا فائدہ یہ ہے کہ تجارتی قواعد آسان ، آسانی سے قابل عمل ہیں ، اور اس رجحان کو مؤثر طریقے سے پکڑ سکتے ہیں۔ لیکن اس میں کچھ خطرہ بھی ہے ، اس حکمت عملی کو زیادہ مستحکم اور قابل اعتماد بنانے کے لئے پیرامیٹرز کی ترتیب ، اسٹاپ نقصان کی منطق کو مستقل طور پر بہتر بنانے کی ضرورت ہے۔ مجموعی طور پر ، اس حکمت عملی میں بہتری کی بڑی صلاحیت ہے ، جس میں گہری تحقیق اور اطلاق کی ضرورت ہے۔
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//
// @version=4
// © Ehsan Haghpanah, (ehsanha)
// Algorithmic Trading Research
//
// eha Moving Averages Strategy,
// A simple strategy based on crossing Moving Averages of
// different lengths (a fast moving average and slow one)
//
strategy(title = "eha Moving Averages Strategy", shorttitle = "eha MA Strategy", overlay = true)
//
// -- strategy parameter(s)
// moving averages parameter(s)
var _fastMA_len = input(title = "Fast MA Length", defval = 21, type = input.integer, minval = 1, step = 1)
var _slowMA_len = input(title = "Slow MA Length", defval = 34, type = input.integer, minval = 1, step = 1)
var _ma_algo_id = input(title = "MA Algorithm", defval = "SMA", options = ["SMA", "EMA", "WMA"])
// backtesting date and time range parameter(s)
var _startYear = input(defval = 2020, title = "Start Year", type = input.integer, minval = 1976)
var _startMonth = input(defval = 1, title = "Start Month", type = input.integer, minval = 1, maxval = 12)
var _startDay = input(defval = 1, title = "Start Day", type = input.integer, minval = 1, maxval = 31)
var _closeYear = input(defval = 2020, title = "Close Year", type = input.integer, minval = 1984)
var _closeMonth = input(defval = 9, title = "Close Month", type = input.integer, minval = 1, maxval = 12)
var _closeDay = input(defval = 1, title = "Close Day", type = input.integer, minval = 1, maxval = 31)
//
// -- function(s) and calculation(s)
// checks whether current time is in backtesting time range
start_t = timestamp(_startYear, _startMonth, _startDay, 00, 00) // backtesting range start time, (00, 00); (hour, minute)
close_t = timestamp(_closeYear, _closeMonth, _closeDay, 23, 59) // backtesting range close time, (23, 59); (hour, minute)
isInRange() => true
//
// calculates moving average based on provided algorithm, source and length
// alg : moving average algorithm
// len : length
// ser : series
calcMA(alg, len, ser) =>
(len == 0) ? ser : ((alg == "SMA") ? sma(ser, len) : ((alg == "EMA") ? ema(ser, len) : (alg == "WMA" ? wma(ser, len) : na)))
//
// -- strategy logic and calculation(s)
ma_fast = calcMA(_ma_algo_id, _fastMA_len, close)
ma_slow = calcMA(_ma_algo_id, _slowMA_len, close)
cross_ov = crossover (ma_fast, ma_slow) // returns true if fastMA crosses over slowMA
cross_un = crossunder(ma_fast, ma_slow) // returns true if slowMA crosses over fastMA
//
// -- strategy execution logic
// opens a long position whenever the time is in range and crosses over
strategy.entry("ID", comment = "-", long = strategy.long, when = isInRange() and cross_ov)
// closes the position whenever the time is in range and crosses under
strategy.close("ID", comment = "-", when = isInRange() and cross_un)
//
// -- drawing and visualization
co_fast = color.new(color.gray, 25)
co_slow = color.new(color.gray, 75)
// drawing moving average(s)
plot(ma_fast, color = co_fast, linewidth = 2, style = plot.style_line)
plot(ma_slow, color = co_slow, linewidth = 3, style = plot.style_line)