
یہ حکمت عملی متعدد رجحاناتی اشارے کا حساب کتاب کرکے خرید و فروخت کا کام کرتی ہے جب ان میں الٹ ہوتا ہے۔ اہم رجحاناتی اشارے میں ٹی ڈی آئی ، ٹی سی ایف ، ٹی ٹی ایف اور ٹی آئی آئی شامل ہیں۔ حکمت عملی اس ترتیب میں منتخب کرتی ہے کہ تجارتی سگنل پیدا کرنے کے لئے کون سا اشارے استعمال کیا جائے۔
ٹی ڈی آئی اشارے قیمتوں میں تبدیلی کی رفتار پر مبنی ہے۔ جمع اور ہموار کرنے کی تکنیک کے ذریعہ تعمیر کیا گیا ہے۔ جب ٹی ڈی آئی سمت اشارے ٹی ڈی آئی وکر کو عبور کرتے ہیں تو زیادہ کریں اور جب نیچے جاتے ہیں تو صفائی کریں۔
ٹی سی ایف انڈیکس قیمتوں میں مثبت تبدیلی اور منفی تبدیلی کا حساب لگاتا ہے تاکہ کثیر اور خالی سر کی طاقت کا فیصلہ کیا جاسکے۔ جب مثبت تبدیلی کی طاقت منفی تبدیلی کی طاقت سے زیادہ ہو تو زیادہ کریں ، ورنہ انخلاء کریں۔
ٹی ٹی ایف اشارے اعلی اور کم کی طاقت کا موازنہ کرکے رجحان کا اندازہ لگاتا ہے۔ زیادہ کرنے کا اشارہ ٹی ٹی ایف اشارے پر 100 سے زیادہ ہے ، اس کے برعکس صفائی ہے۔
ٹی آئی آئی اشارے اوسط لائن اور قیمت کی حد کے ساتھ مل کر رجحان کی تبدیلی کا فیصلہ کرتا ہے۔ اس میں قلیل مدتی اور طویل مدتی رجحانات دونوں کو مدنظر رکھا جاتا ہے۔ زیادہ سگنل ٹی آئی آئی اشارے پر 80 کے قریب ہے اور 80 کے قریب ہے۔
زیادہ سے زیادہ امن پوزیشن میں داخل ہونے کی منطق ترتیب شدہ اشارے کے مطابق مناسب تجارتی سگنل کا انتخاب کریں۔
اس حکمت عملی میں کئی عام طور پر استعمال ہونے والے رجحان ٹریڈنگ اشارے شامل ہیں جو مارکیٹ کے حالات کے مطابق لچکدار ہوسکتے ہیں۔ اس کے کچھ خاص فوائد یہ ہیں:
اس حکمت عملی میں مندرجہ ذیل خطرات شامل ہیں:
خطرے کو کم کرنے کے لئے مندرجہ ذیل اقدامات کیے جاسکتے ہیں:
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
اس حکمت عملی میں متعدد رجحان الٹ اشارے کے فوائد شامل ہیں ، جو اشارے اور پیرامیٹرز کی تشکیل کے ذریعہ بہتر بنائے جاتے ہیں ، جو مختلف مارکیٹ کے حالات کے مطابق ڈھال سکتے ہیں ، اور رجحان الٹ پوائنٹس پر کارروائی کرسکتے ہیں۔ کلیدی بات یہ ہے کہ خطرہ کو کنٹرول کرتے ہوئے بہترین پیرامیٹرز اور اشارے کا مجموعہ تلاش کیا جائے۔ مسلسل اصلاح اور توثیق کے ذریعہ ، ایک مستحکم حکمت عملی تشکیل دی جاسکتی ہے جس میں الفا ہوتا ہے۔
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-15 03:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © kruskakli
//
// Here is a collection of Trend Indicators as defined by M.H Pee and presented
// in various articles of the "STOCKS & COMMODITIES Magazine"
//
// The actual implementation of the indicators here are made by: everget
//
// I have gather them here so that they easily can be tested.
//
// My own test was made using 15 companies from the OMXS30 list
// during the time period of 2016-2018, and I only went LONG.
//
// The result was as follows:
//
// Average Std.Dev
// profit
// TDI 3.04% 5.97
// TTF 1.22%. 5.73
// TII 1.07% 6.2
// TCF 0.32% 2.68
//
strategy("M.H Pee indicators", overlay=true)
use = input(defval="TDI", title="Use Indicator", type=input.string,
options=["TDI","TCF","TTF","TII"])
src = close
//
// TDI
//
length = input(title="Length", type=input.integer, defval=20)
mom = change(close, length)
tdi = abs(sum(mom, length)) - sum(abs(mom), length * 2) + sum(abs(mom), length)
// Direction Indicator
tdiDirection = sum(mom, length)
tdiLong = crossover(tdiDirection, tdi)
tdiXLong = crossunder(tdiDirection, tdi)
//
// TCF
//
tcflength = input(title="Length", type=input.integer, defval=35)
plusChange(src) =>
change_1 = change(src)
change(src) > 0 ? change_1 : 0.0
minusChange(src) =>
change_1 = change(src)
change(src) > 0 ? 0.0 : -change_1
plusCF = 0.0
plusChange__1 = plusChange(src)
plusCF := plusChange(src) == 0 ? 0.0 : plusChange__1 + nz(plusCF[1])
minusCF = 0.0
minusChange__1 = minusChange(src)
minusCF := minusChange(src) == 0 ? 0.0 : minusChange__1 + nz(minusCF[1])
plusTCF = sum(plusChange(src) - minusCF, tcflength)
minusTCF = sum(minusChange(src) - plusCF, tcflength)
tcfLong = plusTCF > 0
tcfXLong = plusTCF < 0
//
// TTF
//
ttflength = input(title="Lookback Length", type=input.integer, defval=15)
hh = highest(length)
ll = lowest(length)
buyPower = hh - nz(ll[length])
sellPower = nz(hh[length]) - ll
ttf = 200 * (buyPower - sellPower) / (buyPower + sellPower)
ttfLong = crossover(ttf, 100)
ttfXLong = crossunder(ttf, -100)
//
// TII
//
majorLength = input(title="Major Length", type=input.integer, defval=60)
minorLength = input(title="Minor Length", type=input.integer, defval=30)
upperLevel = input(title="Upper Level", type=input.integer, defval=80)
lowerLevel = input(title="Lower Level", type=input.integer, defval=20)
sma = sma(src, majorLength)
positiveSum = 0.0
negativeSum = 0.0
for i = 0 to minorLength - 1 by 1
price = nz(src[i])
avg = nz(sma[i])
positiveSum := positiveSum + (price > avg ? price - avg : 0)
negativeSum := negativeSum + (price > avg ? 0 : avg - price)
negativeSum
tii = 100 * positiveSum / (positiveSum + negativeSum)
tiiLong = crossover(tii, 80)
tiiXLong = crossunder(tii,80)
//
// LOGIC
//
enterLong = (use == "TDI" and tdiLong) or (use == "TCF" and tcfLong) or (use == "TTF" and ttfLong) or (use == "TII" and tiiLong)
exitLong = (use == "TDI" and tdiXLong) or (use == "TCF" and tcfXLong) or (use == "TTF" and ttfXLong) or (use == "TII" and tiiXLong)
// Time range for Back Testing
btStartYear = input(title="Back Testing Start Year", type=input.integer, defval=2016)
btStartMonth = input(title="Back Testing Start Month", type=input.integer, defval=1)
btStartDay = input(title="Back Testing Start Day", type=input.integer, defval=1)
startTime = timestamp(btStartYear, btStartMonth, btStartDay, 0, 0)
btStopYear = input(title="Back Testing Stop Year", type=input.integer, defval=2028)
btStopMonth = input(title="Back Testing Stop Month", type=input.integer, defval=12)
btStopDay = input(title="Back Testing Stop Day", type=input.integer, defval=31)
stopTime = timestamp(btStopYear, btStopMonth, btStopDay, 0, 0)
window() => time >= startTime and time <= stopTime ? true : false
riskPerc = input(title="Max Position %", type=input.float, defval=20, step=0.5)
maxLossPerc = input(title="Max Loss Risk %", type=input.float, defval=5, step=0.25)
// Average True Range (ATR) measures market volatility.
// We use it for calculating position sizes.
atrLen = input(title="ATR Length", type=input.integer, defval=14)
stopOffset = input(title="Stop Offset", type=input.float, defval=1.5, step=0.25)
limitOffset = input(title="Limit Offset", type=input.float, defval=1.0, step=0.25)
atrValue = atr(atrLen)
// Calculate position size
maxPos = floor((strategy.equity * (riskPerc/100)) / src)
// The position sizing algorithm is based on two parts:
// a certain percentage of the strategy's equity and
// the ATR in currency value.
riskEquity = (riskPerc / 100) * strategy.equity
// Translate the ATR into the instrument's currency value.
atrCurrency = (atrValue * syminfo.pointvalue)
posSize0 = min(floor(riskEquity / atrCurrency), maxPos)
posSize = posSize0 < 1 ? 1 : posSize0
if (window())
strategy.entry("Long", long=true, qty=posSize0, when=enterLong)
strategy.close_all(when=exitLong)