مقداری حرکت اوسط پر مبنی رجحان سے باخبر رہنے کی حکمت عملی


تخلیق کی تاریخ: 2023-09-18 13:23:52 آخر میں ترمیم کریں: 2023-09-18 13:23:52
کاپی: 0 کلکس کی تعداد: 637
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

حکمت عملی کا اصول

  1. حساب کتاب تیز لائن اور سست لائن تیز لائن صارف کی وضاحت کی تیز لائن کی مدت پر مبنی ایک مقداری منتقل اوسط ہے ، اور سست لائن ایک مقداری منتقل اوسط ہے جو سست لائن کی مدت پر مبنی ہے

  2. دو لائنوں کے درمیان فرق کا حساب لگائیں۔ فاسٹ لائن کو سست لائن سے کم کرکے فرق کی منحنی خطوط حاصل کریں۔

  3. رجحان کی سمت کا تعین کریں۔ جب تیز لائن پر سست لائن سے گزرے تو پائیڈ سگنل کے لئے زیادہ کریں؛ جب تیز لائن کے نیچے سست لائن سے گزرے تو پائیڈ سگنل کے لئے خالی کریں۔

  4. ٹریڈنگ سگنل جاری کرنا bullish کے وقت ایک سے زیادہ سگنل جاری کرنا؛ bearish کے وقت ایک خالی سگنل جاری کرنا

  5. سٹاپ کا تعین کریں۔ صارف کی وضاحت شدہ فکسڈ اسٹاپ فیصد یا اے ٹی آر پر مبنی متحرک اسٹاپ کے ذریعے اسٹاپ پوزیشن کا تعین کریں۔

  6. روانگی کی شرائط اگر پوزیشن رکھنے کے دوران اسٹاپ نقصان یا ریورس سگنل کو متحرک کیا جاتا ہے تو ، پوزیشن کو چھوڑ دیا جائے گا۔

طاقت کا تجزیہ

  1. کوانٹیکٹیو اشارے کا استعمال کرتے ہوئے رجحانات کی نشاندہی کریں ، جعلی کامیابیوں سے گمراہ نہ ہوں۔

  2. تیز اور سست لائنیں مارکیٹ کے شور کو فلٹر کرتی ہیں اور بار بار تجارت سے بچتی ہیں۔

  3. اسٹاپ نقصان کی ترتیب نقصان کے خطرے کو مؤثر طریقے سے کنٹرول کرتی ہے۔

  4. حکمت عملی کی منطق سادہ اور واضح ہے اور اس پر عملدرآمد کو سمجھنے میں آسان ہے۔

  5. اپنی مرضی کے مطابق پیرامیٹرز مختلف نسلوں اور وقت کی مدت کی ضروریات کو پورا کرنے کے لئے.

خطرے کا تجزیہ

  1. پیرامیٹرز کی غلط ترتیب سے ٹریڈنگ کی زیادہ تعدد یا رجحانات سے محروم ہوسکتا ہے۔

  2. فکسڈ اسٹاپ نقصان بہت زیادہ میکانیک ہوسکتا ہے اور مارکیٹ میں تبدیلیوں کو اپنانے میں ناکام ہوسکتا ہے۔

  3. پیمائش کے اشارے کی تاثیر کو پیمائش کے تناسب میں تبدیلی سے متاثر کیا جاسکتا ہے۔

  • خطرہ 1 آپٹمائزنگ پیرامیٹرز کے ذریعہ بہترین مجموعہ تلاش کرسکتا ہے۔

  • خطرے 2 میں متحرک اے ٹی آر اسٹاپ نقصان کو فکسڈ اسٹاپ نقصان کے متبادل کے طور پر استعمال کیا جاسکتا ہے۔

  • خطرے 3 میں حکمت عملی پر حجم میں تبدیلی کے اثرات پر توجہ دینے کی ضرورت ہے۔

اصلاح کی سمت

  1. مختلف فاسٹ لائن اور سست لائن پیرامیٹرز کے مجموعے کی جانچ پڑتال کریں.

  2. دیگر پیمائش کی پیمائش کی کوشش کریں، جیسے OBV، ولیم پیمائش، وغیرہ

  3. بڑھتی ہوئی اتار چڑھاؤ کی بنیاد پر روکنے کا نقصان

  4. دوسرے اشارے کے مجموعے کے ساتھ استعمال کے اثر کا اندازہ لگائیں۔

  5. مختلف ٹرانزیکشن اقسام میں اثر انداز ہونے کا اندازہ لگائیں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EVWMA 6HR", overlay=false, precision=2, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
// Credit to QuantNomad for the main idea behind this code
/////////////// Time Frame ///////////////
_1 = input(false,  "════════ Test Period ═══════")
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// EVWMA /////////////
_2 = input(false,  "════════ EVMA ═══════")

fast_sum_length = input(5, title = "Fast Sum Length",  type = input.integer)
slow_sum_length = input(11, title = "Slow Sum Length",  type = input.integer)

fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)

fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)

diff = fast_evwma - slow_evwma

///////////////  Strategy  /////////////// 
long = fast_evwma > slow_evwma 
short = fast_evwma < slow_evwma 

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

/////////////// Dynamic ATR Stop Losses ///////////////
_4 = input(false,  "════════ Stop Loss ═══════")
SL_type = input("Fixed", options=["Fixed", "ATR Derived"], title="Stop Loss Type")
sl_inp = input(9.0, title='Fixed Stop Loss %') / 100
atrLkb = input(20, minval=1, title='ATR Stop Period')
atrMult = input(1.5, step=0.25, title='ATR Stop Multiplier') 
atr1 = atr(atrLkb)

longStop1 = 0.0
longStop1 :=  short_signal ? na : long_signal ? close - (atr1 * atrMult) : longStop1[1]
shortStop1 = 0.0
shortStop1 := long_signal ? na : short_signal ? close + (atr1 * atrMult) : shortStop1[1]

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

_5 = input(false,  "══════ Longs or Shorts ═════")
useLongs = input(true, title="Use Longs")
useShorts = input(true, title="Use Shorts")

/////////////// Execution ///////////////
if testPeriod()
    if useLongs
        strategy.entry("L", strategy.long, when=long)
        strategy.exit("L SL", "L", stop = SL_type == "Fixed" ? long_sl : longStop1, when=since_longEntry > -1)
    if useShorts
        strategy.exit("S SL", "S", stop = SL_type == "Fixed" ? short_sl : shortStop1, when=since_shortEntry > -1)
        strategy.entry("S", strategy.short, when=short)
    if not useShorts
        strategy.close("L", when=short)
    if not useLongs
        strategy.close("S", when=long)

/////////////// Plotting /////////////// 
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)
p1 = plot(diff, title = "Delta", color = long ? color.lime : short ? color.red : na, transp=0)
p2 = plot(0, color = color.white)
fill(p1, p2, color = long ? color.lime : short ? color.red : na, transp=60)