
یہ حکمت عملی مارکیٹ کی حرکیات میں تبدیلیوں کا اندازہ لگانے کے لئے ایک جھونپڑی کی تخلیق کی مشابہت کرتی ہے ، جس میں جھونپڑی کی سمت کے مطابق زیادہ سے زیادہ خلائی کام کیا جاتا ہے۔
اس حکمت عملی کا بنیادی اصول یہ ہے کہ اے ٹی آر اور اختتامی قیمتوں کے تعلقات کا حساب کتاب کرکے بریک کی تشکیل کی تقلید کی جائے۔ خاص طور پر ، دو متغیرات Brick1 اور Brick2 کی وضاحت کریں۔
Brick1 کا حساب کتاب اس طرح کیا جاتا ہے: اگر بریک 1 کی کل قیمت کل قیمت + اے ٹی آر سے زیادہ ہے تو ، Brick1 کل قیمت + اے ٹی آر ہے۔ اگر بریک 1 کی کل قیمت کل قیمت - اے ٹی آر سے کم ہے تو ، Brick1 کل قیمت - اے ٹی آر ہے۔ بصورت دیگر ، Brick1 کل قیمت Brick1 کی وارث ہے۔
Brick2 کا حساب اس طرح کیا جاتا ہے: اگر Brick1 کی قدر Brick1 کی کل کی قدر کے برابر نہ ہو تو Brick2 Brick1 کی کل کی قدر ہے؛ ورنہ Brick2 کی کل کی قدر کی وراثت کریں۔
اس طرح ایک بریک کی تشکیل کی نقالی کی جاتی ہے۔ جب Brick1 اوپر ایک ATR سے زیادہ بڑھتا ہے تو ، ایک اوپر کی طرف بڑھتا ہے۔ جب Brick1 نیچے ایک ATR سے زیادہ گرتا ہے تو ، ایک نیچے کی طرف بڑھتا ہے۔ Brick2 ایک بریک کی پوزیشن کو ریکارڈ کرتا ہے۔
جب Brick1 اور Brick2 اوپر کی طرف سے کراسنگ کرتے ہیں تو ، اس کا مطلب یہ ہے کہ سرنی اوپر کی طرف بڑھتی ہے ، اور اسے کثیر سر کہا جاتا ہے۔ جب Brick1 اور Brick2 نیچے کی طرف سے کراسنگ کرتے ہیں تو ، اس کا مطلب یہ ہے کہ سرنی نیچے کی طرف سکیڑ جاتی ہے ، اور اسے خالی سر کہا جاتا ہے۔
پیرامیٹرز کو بہتر بنانے کے ذریعے بہترین اے ٹی آر کا دورانیہ تلاش کیا جاسکتا ہے۔ غیر موثر سگنل سے ہونے والے نقصان کو کم کرنے کے لئے اسٹاپ اسٹاپ اسٹریٹجی کو ایڈجسٹ کریں۔ منافع پر لاگت کے اثرات کو کم کرنے کے لئے تجارتی قسم کو مناسب طریقے سے بڑھانا۔
یہ حکمت عملی مارکیٹ میں مختصر مدت کے رجحانات اور حرکیات کا اندازہ لگانے کے لئے متحرک ماڈلنگ فکسچر کے ایک کراس کے ذریعہ تیار کی گئی ہے۔ حکمت عملی کو بہتر بنانے کی گنجائش زیادہ ہے ، پیرامیٹرز کی اصلاح اور سگنل فلٹرنگ سے استحکام میں مزید اضافہ ہوسکتا ہے۔
/*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 ////