رفتار منتقل اوسط کراس اوور حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-21 21:29:22
ٹیگز:

جائزہ

یہ حکمت عملی مارکیٹ کے رجحان کی سمتوں کا تعین کرنے اور خرید و فروخت کے سگنل پیدا کرنے کے لئے تیز رفتار اور سست رفتار اوسط کے مابین کراس اوور اصولوں کا استعمال کرتی ہے۔ حکمت عملی سادہ اور لاگو کرنے میں آسان ہے ، جو درمیانی مدت کی تجارت کے لئے موزوں ہے۔

حکمت عملی منطق

اس حکمت عملی میں دو حرکت پذیر اوسط ، ایک تیز لائن اور ایک سست لائن استعمال ہوتی ہے۔ تیز لائن 3 دن کی ای ایم اے اور سست لائن 15 دن کی ای ایم اے استعمال کرتی ہے۔ جب تیز لائن نیچے سے سست لائن سے اوپر کی طرف بڑھتی ہے تو ، یہ ایک اوپر کا رجحان ظاہر کرتی ہے اور خرید کا اشارہ دیتی ہے۔ اس کے برعکس ، جب تیز لائن اوپر سے سست لائن سے نیچے کی طرف بڑھتی ہے تو ، یہ نیچے کا رجحان ظاہر کرتی ہے اور فروخت کا اشارہ دیتی ہے۔

اسٹریٹجی میں تیزی سے باہر نکلنے کی لائن کے طور پر تیز تر 3 دن کا ای ایم اے بھی مقرر کیا گیا ہے۔ جب قیمت اس تیز رفتار باہر نکلنے کی لائن سے نیچے ٹوٹ جاتی ہے تو ، اس کا فیصلہ ہوتا ہے کہ رجحان الٹ گیا ہے اور اسے موجودہ طویل پوزیشن سے باہر نکلنا چاہئے۔ اسی طرح ، جب قیمت باہر نکلنے کی لائن سے اوپر ٹوٹ جاتی ہے تو ، یہ ایک تجدید شدہ اپ ٹرینڈ کی نشاندہی کرتی ہے اور طویل مدت میں دوبارہ داخل ہونے کا اشارہ دیتی ہے۔

مخصوص آپریشن سگنلز کو مقرر کیا جاتا ہے:

  1. تیز لائن نیچے سے سست لائن کے اوپر سے گزرتا ہے، طویل ہو جاتا ہے

  2. تیز رفتار لائن نیچے سے گزرتی ہے سست لائن اوپر سے، مختصر ہو جاتی ہے

  3. قیمت تیزی سے باہر نکلنے کی لائن سے نیچے ٹوٹ جاتی ہے ، طویل پوزیشن بند کردی جاتی ہے

  4. قیمت تیزی سے باہر نکلنے کی لکیر سے اوپر واپس آتی ہے، طویل عرصے تک دوبارہ داخل ہوتی ہے

فوائد

  • استعمال کرنے کے لئے آسان، صرف دو چلتی اوسط پیرامیٹرز کو ترتیب دینے کی ضرورت ہے، لاگو کرنے کے لئے آسان

  • کافی بیک ٹسٹنگ ڈیٹا، قابل عمل کا اندازہ کرنے کے لئے مشترکہ اشارے کا استعمال کرتا ہے

  • اصلاح کے لئے بہت سے ترتیب دینے کے پیرامیٹرز

  • خطرہ کو بہتر طور پر کنٹرول کرنے کے لئے اسٹاپ نقصان کے طور پر فوری باہر نکلنے کی لائن کو اپناتا ہے

  • واضح حکمت عملی منطق، واضح خرید اور فروخت سگنل

  • مناسب آپریشن کی تعدد، زیادہ تجارت سے بچنے

خطرات

  • جب رجحان واضح نہیں ہوتا ہے تو زیادہ غلط سگنل کا شکار ہوتا ہے کیونکہ رجحان کی پیروی کرنے والی حکمت عملی

  • چلتی اوسط کی نوعیت میں تاخیر ہوتی ہے، موڑ کے مقامات کو یاد کر سکتے ہیں

  • مقررہ پیرامیٹرز مارکیٹ کی تبدیلیوں کے مطابق نہیں کر سکتے، اصلاح کی ضرورت ہے

  • سٹاپ نقصان بہت نرم ہو سکتا ہے، وقت میں نقصان کو روکنے کے قابل نہیں

  • بار بار سگنلز کی وجہ سے تجارتی اخراجات میں اضافہ ہوسکتا ہے

  • سگنل مختلف ہوسکتے ہیں اور دوسرے اشارے کے ساتھ تصدیق کی ضرورت ہوتی ہے

خطرات کو پیرامیٹر کی اصلاح، فلٹرز کا اضافہ، سٹاپ نقصان کو آرام دہ اور پرسکون، پیرامیٹرز کو بروقت اپ ڈیٹ کرنے وغیرہ کے ذریعے منظم کیا جا سکتا ہے.

بہتری

  • مارکیٹ کے حالات کو بہتر بنانے کے لئے پیرامیٹرز کی جانچ اور اصلاح

  • ایک مضبوط نظام بنانے کے لئے مزید اشارے متعارف کروائیں

  • ریئل ٹائم مارکیٹ کی بنیاد پر انکولی پیرامیٹر کی ترتیبات بنائیں

  • زیادہ ذہین اصلاح کے لئے مشین لرننگ ماڈلز کا اطلاق کریں

  • بہتر رسک کنٹرول کے لیے متحرک یا ٹریلنگ اسٹاپ نقصان مقرر کریں

  • فرق سے بچنے کے لئے حجم کے اشارے کو یکجا کریں

نتیجہ

یہ ایک نسبتا simple آسان دوہری حرکت پذیر اوسط کراس اوور حکمت عملی ہے۔ یہ تیز اور سست حرکت پذیر اوسط کے مابین تعامل کی بنیاد پر مارکیٹ کے رجحان اور تجارتی سگنل کا تعین کرتی ہے۔ حکمت عملی کو نافذ کرنا آسان ہے اور اسے اصلاح کے ذریعے اپنانا ممکن ہے۔ لیکن اس میں کچھ خطرات بھی ہیں۔ سگنل کی تصدیق اور خطرات کا انتظام کرنے کے لئے مزید فلٹرز کی ضرورت ہے۔ جب مناسب طریقے سے بہتر بنایا جاتا ہے اور درمیانی مدتی تجارت پر لاگو ہوتا ہے تو ، یہ ایک بہت ہی عملی مقداری تجارتی نظام بن سکتا ہے۔


/*backtest
start: 2023-01-01 00:00:00
end: 2023-02-03 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/
// © ehaarjee, ECHKAY, JackBauer007

//@version=4
//study(title="Tale_indicators", overlay=true)
strategy("Tale Indicators Strategy", overlay=true, precision=8, max_bars_back=200, pyramiding=0, initial_capital=20000, commission_type="percent", commission_value=0.1)

len_fast = input(3, minval=1, title="FAST EMA")
src_fast = input(close, title="Source for Fast")
fastMA = ema(src_fast, len_fast)
plot(fastMA, title="Slow EMA", color=color.orange)

len_slow = input(15, minval=1, title="SLOW EMA")
src_slow = input(close, title="Source for Slow")
slowMA = ema(src_slow, len_slow)
plot(slowMA, title="Fast EMA", color=color.blue)

len_fast_exit = input(3, minval=1, title="FAST EMA Exit")
src_fast_exit = input(close, title="Source for Fast Exit")
fastMAE = ema(src_fast_exit, len_fast_exit)
plot(fastMAE, title="Fast EMA Ex", color=color.red)


src_slow_enter_short = input(low, title="Source for Short Entry")
slowMASEn = ema(src_slow_enter_short, len_slow)

src_slow_enter_long = input(high, title="Source for Long Entry")
slowMALEn = ema(src_slow_enter_long, len_slow)

src_slow_exit_short = input(low, title="Source for Short Exit")
slowMASEx = ema(src_slow_enter_short, len_slow)

src_slow_exit_long = input(high, title="Source for Long Exit")
slowMALEx = ema(src_slow_enter_long, len_slow)

enter_long = crossover(fastMA, slowMALEn)
enter_short = crossunder(fastMA, slowMASEn)
exit_long = crossunder(fastMAE, slowMALEx)
exit_short = crossover(fastMAE, slowMALEx)

out_enter = iff(enter_long == true, 1, iff(enter_short == true, -1, 0))
plotarrow(out_enter, "Plot Enter Points", colorup=color.green, colordown=color.red, maxheight = 30)

bull = fastMA > slowMALEn
bear = fastMA < slowMASEn

c = bull ? color.green : bear ? color.red  : color.white
bgcolor(c)

exit_tuner = input(0.005, title="Exit Tuner to touch slowEMA")

bull_exit = (bull and (low>(fastMAE*(1+exit_tuner)))) or exit_long or (not(bear) and (fastMAE>high))
bear_exit = (bear and ((fastMAE*(1-exit_tuner))>high)) or exit_short or (not(bull) and (low>fastMAE))

bull_r = (bull and ((bull_exit[1]) or (bull_exit[2] and bull_exit[1])) and (low<=fastMAE))
bear_r = (bear and ((bear_exit[1]) or (bull_exit[2] and bull_exit[1])) and (fastMAE<=high))

bull_re = (bull and (low<slowMALEn)) and not(enter_long)
bear_re = (bear and (high>slowMASEn)) and not(enter_short)

bull_ree = (bull and ((low<slowMALEn) and not(bull_re[1] or enter_long[1]))) 
bear_ree = (bear and ((high>slowMASEn) and not(bear_re[1] or enter_short[1])))

bull_reenter =  (bull_r) and not(enter_long)
bear_reenter =  (bear_r) and not(enter_short)

plotshape(bull_exit, "Plot Bull Exit", style = shape.arrowdown, color=color.green, size=size.small, text="ExL", location=location.abovebar)
plotshape(bear_exit, "Plot Bear Exit", style = shape.arrowup, color=color.red, size=size.small, text="ExS", location=location.belowbar)

plotshape(bull_reenter, "Plot Bull ReEnter", style = shape.arrowup, color=color.green, size=size.small, text="ReL", location=location.belowbar)
plotshape(bear_reenter, "Plot Bear ReEnter", style = shape.arrowdown, color=color.red, size=size.small, text="ReS", location=location.abovebar)

run_strategy = input(true, title="Run Strategy")
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 2000)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2100, title = "Thru Year",       type = input.integer, minval = 2000)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

var long_position_open = false
var short_position_open = false


if (enter_long and not(bull_exit) and not(long_position_open))
//    strategy.entry("LO", strategy.long, qty=4)
    long_position_open := true
    if (short_position_open)
//        strategy.close("SO")
        short_position_open := false

if (bull_reenter and not(long_position_open))  
//    strategy.entry("LO", strategy.long, qty=1)
    long_position_open := true

if (bull_exit and long_position_open)
//  strategy.close("LO")
    long_position_open := false
    
if (enter_short and not(bear_exit) and not(short_position_open))
//    strategy.entry("SO", strategy.short, qty=4)
    short_position_open := true
    if(long_position_open)
//        strategy.close("LO")
        long_position_open := false

if (bear_reenter and not(short_position_open))  
//    strategy.entry("SO", strategy.long, qty=1)
    long_position_open := true

if (bear_exit and short_position_open)
//    strategy.close("SO")
    short_position_open := false

if(run_strategy)
    strategy.entry("LO", strategy.long, when=(window() and enter_long), qty=4)
    strategy.entry("LO", strategy.long, when=(window() and bull_reenter and not(long_position_open)), qty=1)
    strategy.close("LO", when=(window() and bull_exit and long_position_open))
    strategy.entry("SO", strategy.short, when=(window() and enter_short), qty=4)
    strategy.entry("SO", strategy.short, when=(window() and bear_reenter and not(short_position_open)), qty=1)
    strategy.close("SO", when=(window() and bear_exit and short_position_open))


مزید