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

مصنف:چاؤ ژانگ، تاریخ: 2024-02-19 15:32:17
ٹیگز:

img

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

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

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

Brick1 کا حساب اس طرح کیا جاتا ہے: اگر بندش کی قیمت Brick1 کی پچھلی قیمت + ATR سے زیادہ ہے تو ، Brick1 = Brick1 کی پچھلی قیمت + ATR۔ اگر بندش کی قیمت Brick1 کی پچھلی قیمت سے کم ہے - ATR ، Brick1 Brick1 کی پچھلی قیمت ہے - ATR؛ بصورت دیگر ، Brick1 Brick1 کی پچھلی قیمت کا وارث ہے۔

Brick2 کا حساب اس طرح کیا جاتا ہے: اگر Brick1 Brick1 کی پچھلی قیمت کے برابر نہیں ہے تو ، Brick2 = Brick1 کی پچھلی قیمت۔ بصورت دیگر ، Brick2 کی پچھلی قیمت وراثت میں لے لو۔

یہ اینٹوں کی تشکیل کی نقالی کرتا ہے۔ جب اینٹوں 1 ایک اے ٹی آر سے زیادہ بڑھتا ہے تو ، ایک اوپر کی اینٹوں کی تشکیل ہوتی ہے۔ جب اینٹوں 1 ایک اے ٹی آر سے زیادہ گرتا ہے تو ، ایک نیچے کی اینٹوں کی تشکیل ہوتی ہے۔ اینٹوں 2 صرف پچھلی اینٹوں کی پوزیشن کو ریکارڈ کرتا ہے۔

جب 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 ////


مزید