مومنٹم برک کی حکمت عملی


تخلیق کی تاریخ: 2024-02-19 15:32:17 آخر میں ترمیم کریں: 2024-02-19 15:32:17
کاپی: 1 کلکس کی تعداد: 577
1
پر توجہ دیں
1617
پیروکار

مومنٹم برک کی حکمت عملی

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

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

اس حکمت عملی کا بنیادی اصول یہ ہے کہ اے ٹی آر اور اختتامی قیمتوں کے تعلقات کا حساب کتاب کرکے بریک کی تشکیل کی تقلید کی جائے۔ خاص طور پر ، دو متغیرات Brick1 اور Brick2 کی وضاحت کریں۔

Brick1 کا حساب کتاب اس طرح کیا جاتا ہے: اگر بریک 1 کی کل قیمت کل قیمت + اے ٹی آر سے زیادہ ہے تو ، Brick1 کل قیمت + اے ٹی آر ہے۔ اگر بریک 1 کی کل قیمت کل قیمت - اے ٹی آر سے کم ہے تو ، Brick1 کل قیمت - اے ٹی آر ہے۔ بصورت دیگر ، Brick1 کل قیمت Brick1 کی وارث ہے۔

Brick2 کا حساب اس طرح کیا جاتا ہے: اگر Brick1 کی قدر Brick1 کی کل کی قدر کے برابر نہ ہو تو Brick2 Brick1 کی کل کی قدر ہے؛ ورنہ Brick2 کی کل کی قدر کی وراثت کریں۔

اس طرح ایک بریک کی تشکیل کی نقالی کی جاتی ہے۔ جب Brick1 اوپر ایک ATR سے زیادہ بڑھتا ہے تو ، ایک اوپر کی طرف بڑھتا ہے۔ جب Brick1 نیچے ایک ATR سے زیادہ گرتا ہے تو ، ایک نیچے کی طرف بڑھتا ہے۔ Brick2 ایک بریک کی پوزیشن کو ریکارڈ کرتا ہے۔

جب Brick1 اور Brick2 اوپر کی طرف سے کراسنگ کرتے ہیں تو ، اس کا مطلب یہ ہے کہ سرنی اوپر کی طرف بڑھتی ہے ، اور اسے کثیر سر کہا جاتا ہے۔ جب Brick1 اور Brick2 نیچے کی طرف سے کراسنگ کرتے ہیں تو ، اس کا مطلب یہ ہے کہ سرنی نیچے کی طرف سکیڑ جاتی ہے ، اور اسے خالی سر کہا جاتا ہے۔

اسٹریٹجک فوائد

  1. اے ٹی آر کا استعمال کر کے فاریکس ٹریڈنگ میں کس طرح تجارت کی جائے اور کس طرح تجارت کی جائے ، فاریکس ٹریڈنگ میں کس طرح تجارت کی جائے اور فاریکس ٹریڈنگ میں کس طرح تجارت کی جائے ، فاریکس ٹریڈنگ میں کس طرح تجارت کی جائے اور فاریکس ٹریڈنگ میں کس طرح تجارت کی جائے۔
  2. کثیر جہتی سمت کا تعین کرنے کے لئے کالم کے کراسنگ کی طرف سے ، حرکیات میں تبدیلی کی شناخت کریں
  3. مارکیٹ کی نقل و حرکت کے فیصلے کے لئے حساسیت کو مختلف اے ٹی آر سائیکلوں کے ذریعہ ایڈجسٹ کیا جاسکتا ہے
  4. مرجان کی تشکیل اور کراسنگ کی صورت حال کو دیکھنے کے لئے ، مارکیٹ کے رجحانات کا تعین کرنے کے لئے

اسٹریٹجک رسک

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

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4


///Component Code Start
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(2025, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)



/// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
/// Component Code Stop


//Zack_the_Lego (original AUTHOR) made into strategy by mkonsap
strategy("Flex Renko Emulator", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
margin = input(true, title="Margin?")
Margin = margin ? margin : false
res = input(type=input.resolution, defval="D", title="Resolution of ATR")
xATR = atr(14)
//TF = x78tf ? "78" : "39"
BrickSize = security(syminfo.tickerid, res, xATR)

//Brick1 =  close >  nz(Brick1[1]) + BrickSize ? nz(Brick1[1]) + BrickSize : close <
                    //nz(Brick1[1]) - BrickSize ?
                        //nz(Brick1[1]) - BrickSize
                            //: nz(Brick1[1]))


Brick1() =>
    s1 = 0.0
    s1 := close > nz(s1[1]) + BrickSize ? nz(s1[1]) + BrickSize : 
       close < nz(s1[1]) - BrickSize ? nz(s1[1]) - BrickSize : nz(s1[1])
    s1


Brick2() =>
    s2 = 0.0
    Brick1_1 = Brick1()
    s2 := Brick1() != Brick1()[1] ? Brick1_1[1] : nz(s2[1])
    s2

colorer = Brick1() > Brick2() ? color.green : color.red
p1 = plot(Brick1(), color=colorer, linewidth=4, title="Renko")
p2 = plot(Brick2(), color=colorer, linewidth=4, title="Renko")
fill(p1, p2, color=color.purple, transp=50)




mylong = crossover(Brick1(), Brick2())
myshort = crossunder(Brick1(), Brick2())

last_long = float(na)
last_short = float(na)
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(Brick1(), Brick2())
myshort2 = crossunder(Brick1(), Brick2())

last_long2 = float(na)
last_short2 = float(na)
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0


condlongx = in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx = in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossunder(condshortx, 1.9)


// === STRATEGY - LONG POSITION EXECUTION WITH CLOSE ORDERS ===
//enterLong() => crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
//exitLong()  => crossunder(condlongx, 1.9) and testPeriod() and strategy.position_size > 0
//strategy.entry(id = "Long", long = true, when = enterLong())
//strategy.close(id = "Long", when = exitLong())
// === STRATEGY - SHORT POSITION EXECUTION WITH CLOSE ORDER===
//enterShort() => crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0 and Margin
//exitShort() => crossunder(condshortx, 1.9)  and testPeriod() and strategy.position_size < 0
//strategy.entry(id = "Short", long = false, when = enterShort())
//strategy.close(id = "Short", when = exitShort())   
//END


///STRATEGY ONLY LONG AND SHORT/////
if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.close("Long", when=not Margin)

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when=Margin)

/////// END ////