
اس حکمت عملی میں کثیر ٹائم فریم متحرک پیچھے ہٹنے کا طریقہ کار استعمال کیا گیا ہے تاکہ قیمتوں کے رجحانات کا اندازہ لگایا جاسکے اور مختلف وقت کی مدت کی اعلی ترین اور کم ترین قیمتوں کا موازنہ کرکے کم خطرہ اراریج حاصل کیا جاسکے۔
یہ حکمت عملی اپنی مرضی کے مطابق فنکشن کو کال کرکے حاصل کرتی ہے f_get_htfHighLow، مختلف ٹائم پیریڈ کی اعلی ترین قیمت nhigh اور کم از کم قیمت nlow۔ خاص طور پر ، صارف کی طرف سے مقرر کردہ ٹائم پیریڈ کی قرارداد ، ٹائم پیریڈ کا ضرب HTFMultiplier ، لوک ہیڈ اور گیپس کے پیچھے جانے والے پیرامیٹرز ، اور آفسیٹ آف آفسیٹ ، سیکیورٹی فنکشن کو کال کرکے مختلف ٹائم پیریڈ کی اعلی ترین اور کم از کم قیمت حاصل کریں۔
مثال کے طور پر ، جب آفسیٹ 0 ہوتا ہے تو ، موجودہ K لائن کی اعلی ترین اور کم ترین قیمت حاصل کی جاتی ہے۔ جب آفسیٹ 1 ہوتا ہے تو ، پچھلی K لائن کی اعلی ترین اور کم ترین قیمت حاصل کی جاتی ہے۔ دو K لائنوں کے مابین قیمت میں تبدیلی کا موازنہ کرکے ، رجحان کی سمت کا فیصلہ کریں۔
اگر اعلی قیمت میں اضافہ ہوا اور کم قیمت میں اضافہ ہوا ، تو اسے بیز رجحان سمجھا جاتا ہے۔ اگر اعلی قیمت میں کمی ہوئی اور کم قیمت میں کمی ہوئی تو ، اسے گرنے کا رجحان سمجھا جاتا ہے۔ رجحان کی سمت کے مطابق طویل یا مختصر تجارت ، بیعانہ تجارت کو انجام دیں۔
حل:
اس حکمت عملی کی مجموعی سوچ واضح ہے ، جو اسٹاک کی قیمتوں کے رجحانات کا تعین کرنے کے لئے متعدد ٹائم فریموں کے متحرک رجحانات کا استعمال کرتی ہے ، اور انسانی غلطیوں کو کم سے کم کرتی ہے ، یہ ایک عام پروگرام کی تجارت کی حکمت عملی ہے۔ پیرامیٹرز کو بہتر بنانے اور افعال کو بڑھانے کے ذریعہ ، حکمت عملی کی استحکام اور منافع بخش جگہ کو مزید بڑھا سکتا ہے ، جس کا گہرائی سے مطالعہ اور نگرانی کے قابل ہے۔
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 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/
// © HeWhoMustNotBeNamed
//@version=4
strategy("HTF High/Low Repaint Strategy", overlay=true, initial_capital = 20000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01)
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true
resolution = input("3M", type=input.resolution)
HTFMultiplier = input(22, minval=1, step=1)
offset = input(0, minval=0, step=1)
lookahead = input(true)
gaps = false
f_secureSecurity_on_on(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on, gaps=barmerge.gaps_on)
f_secureSecurity_on_off(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on, gaps=barmerge.gaps_off)
f_secureSecurity_off_on(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_off, gaps=barmerge.gaps_on)
f_secureSecurity_off_off(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_off, gaps=barmerge.gaps_off)
f_multiple_resolution(HTFMultiplier) =>
target_Res_In_Min = timeframe.multiplier * HTFMultiplier * (
timeframe.isseconds ? 1. / 60. :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 1440. :
timeframe.isweekly ? 7. * 24. * 60. :
timeframe.ismonthly ? 30.417 * 24. * 60. : na)
target_Res_In_Min <= 0.0417 ? "1S" :
target_Res_In_Min <= 0.167 ? "5S" :
target_Res_In_Min <= 0.376 ? "15S" :
target_Res_In_Min <= 0.751 ? "30S" :
target_Res_In_Min <= 1440 ? tostring(round(target_Res_In_Min)) :
tostring(round(min(target_Res_In_Min / 1440, 365))) + "D"
f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset)=>
derivedResolution = resolution == ""?f_multiple_resolution(HTFMultiplier):resolution
nhigh_on_on = f_secureSecurity_on_on(syminfo.tickerid, derivedResolution, high, offset)
nlow_on_on = f_secureSecurity_on_on(syminfo.tickerid, derivedResolution, low, offset)
nhigh_on_off = f_secureSecurity_on_off(syminfo.tickerid, derivedResolution, high, offset)
nlow_on_off = f_secureSecurity_on_off(syminfo.tickerid, derivedResolution, low, offset)
nhigh_off_on = f_secureSecurity_off_on(syminfo.tickerid, derivedResolution, high, offset)
nlow_off_on = f_secureSecurity_off_on(syminfo.tickerid, derivedResolution, low, offset)
nhigh_off_off = f_secureSecurity_off_off(syminfo.tickerid, derivedResolution, high, offset)
nlow_off_off = f_secureSecurity_off_off(syminfo.tickerid, derivedResolution, low, offset)
nhigh = lookahead and gaps ? nhigh_on_on :
lookahead and not gaps ? nhigh_on_off :
not lookahead and gaps ? nhigh_off_on :
not lookahead and not gaps ? nhigh_off_off : na
nlow = lookahead and gaps ? nlow_on_on :
lookahead and not gaps ? nlow_on_off :
not lookahead and gaps ? nlow_off_on :
not lookahead and not gaps ? nlow_off_off : na
[nhigh, nlow]
[nhigh, nlow] = f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset)
[nhighlast, nlowlast] = f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset+1)
plot(nhigh , title="HTF High",style=plot.style_circles, color=color.green, linewidth=1)
plot(nlow , title="HTF Low",style=plot.style_circles, color=color.red, linewidth=1)
buyCondition = nhigh > nhighlast and nlow > nlowlast
sellCondition = nhigh < nhighlast and nlow < nlowlast
strategy.entry("Buy", strategy.long, when= buyCondition and inDateRange, oca_name="oca_buy")
strategy.entry("Sell", strategy.short, when= sellCondition and inDateRange, oca_name="oca_sell")