رجحان اوسط پر مبنی متعدد الٹ حکمت عملی


تخلیق کی تاریخ: 2023-11-21 14:53:48 آخر میں ترمیم کریں: 2023-11-21 14:53:48
کاپی: 0 کلکس کی تعداد: 600
1
پر توجہ دیں
1617
پیروکار

رجحان اوسط پر مبنی متعدد الٹ حکمت عملی

جائزہ

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

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

  • ### TDI اشارے

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

  • ### ٹی سی ایف اشارے

ٹی سی ایف انڈیکس قیمتوں میں مثبت تبدیلی اور منفی تبدیلی کا حساب لگاتا ہے تاکہ کثیر اور خالی سر کی طاقت کا فیصلہ کیا جاسکے۔ جب مثبت تبدیلی کی طاقت منفی تبدیلی کی طاقت سے زیادہ ہو تو زیادہ کریں ، ورنہ انخلاء کریں۔

  • ### TTF اشارے

ٹی ٹی ایف اشارے اعلی اور کم کی طاقت کا موازنہ کرکے رجحان کا اندازہ لگاتا ہے۔ زیادہ کرنے کا اشارہ ٹی ٹی ایف اشارے پر 100 سے زیادہ ہے ، اس کے برعکس صفائی ہے۔

  • ### TII اشارے

ٹی آئی آئی اشارے اوسط لائن اور قیمت کی حد کے ساتھ مل کر رجحان کی تبدیلی کا فیصلہ کرتا ہے۔ اس میں قلیل مدتی اور طویل مدتی رجحانات دونوں کو مدنظر رکھا جاتا ہے۔ زیادہ سگنل ٹی آئی آئی اشارے پر 80 کے قریب ہے اور 80 کے قریب ہے۔

زیادہ سے زیادہ امن پوزیشن میں داخل ہونے کی منطق ترتیب شدہ اشارے کے مطابق مناسب تجارتی سگنل کا انتخاب کریں۔

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

اس حکمت عملی میں کئی عام طور پر استعمال ہونے والے رجحان ٹریڈنگ اشارے شامل ہیں جو مارکیٹ کے حالات کے مطابق لچکدار ہوسکتے ہیں۔ اس کے کچھ خاص فوائد یہ ہیں:

  1. ٹرینڈ ریورس سگنل کا استعمال کرتے ہوئے ، ٹرینڈ ٹرانسفر کے مواقع کو بروقت پکڑیں۔
  2. مختلف میٹرکس کو ترتیب دیں اور ان کو بہتر بنائیں
  3. اشارے کا ایک امیر مجموعہ، سگنل کی تصدیق کے لئے استعمال کیا جا سکتا ہے

اسٹریٹجک رسک

اس حکمت عملی میں مندرجہ ذیل خطرات شامل ہیں:

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

خطرے کو کم کرنے کے لئے مندرجہ ذیل اقدامات کیے جاسکتے ہیں:

  1. اشارے کے پیرامیٹرز کو بہتر بنائیں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں
  2. سگنل کے معیار کو بہتر بنانے کے لئے ایک سے زیادہ اشارے سگنل کا مجموعہ
  3. پوزیشن مینجمنٹ کی حکمت عملی کو ایڈجسٹ کریں اور ایک ہی نقصان کو کنٹرول کریں

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

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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)