وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ای ایم اے ٹریکنگ ٹرینڈ اوسیلیشن کو دبانے والی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-12 15:52:37
ٹیگز:

img

جائزہ

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

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

اسٹریٹیجی میں تین اہم حصے شامل ہیں: ای ایم اے اشارے، ٹی ٹی ایس رجحان ٹریکنگ کی حکمت عملی اور ایس ٹی سی اشارے۔

سب سے پہلے ، 200 پیریڈ ای ایم اے کی تیزی سے چلتی اوسط لائن کا حساب لگایا جاتا ہے۔ اگر قیمت اس ای ایم اے لائن سے نیچے ہے تو ، ای ایم اے اشارے فروخت کا اشارہ دیتا ہے: - 1؛ اگر قیمت لائن سے اوپر ہے تو ، ای ایم اے اشارے خرید کا اشارہ دیتا ہے: 1.

دوسرا ، ٹی ٹی ایس ٹرینڈ ٹریکنگ حکمت عملی کے متعلقہ پیرامیٹرز کا حساب لگایا جاتا ہے۔ اوپری اور نچلی ریلوں کی قیمتوں کے وقفوں کے مطابق ، مارکیٹ کے رجحان کی سمت کا تعین کیا جاتا ہے۔ اگر قیمت اوپری ریل سے گزرتی ہے تو ، خرید کا اشارہ 1 تیار کیا جاتا ہے؛ اگر قیمت نچلی ریل سے گزرتی ہے تو ، فروخت کا اشارہ -1 تیار کیا جاتا ہے۔

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

تینوں اشارے سے فیصلے کے سگنل حاصل کرنے کے بعد ، حکمت عملی اس بات کا تعین کرے گی کہ آیا وہ مستقل ہیں۔ صرف اس وقت جب تینوں اشارے کے فیصلے کے سگنل مستقل ہوں گے تو ہی اصل تجارتی سگنل تیار کیے جائیں گے۔ اس سے کچھ غلط سگنل کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے اور حکمت عملی کو زیادہ قابل اعتماد بنایا جاسکتا ہے۔

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

فوائد

  1. حکمت عملی میں تین مختلف اقسام کے اشارے کو یکجا کیا گیا ہے تاکہ مؤثر طریقے سے مارکیٹ کی رجحان کی سمت کا تعین کیا جاسکے۔

  2. غلط سگنل کو فلٹر کرنے کے لئے تین اشارے سے فیصلے کے اشاروں کی مستقل مزاجی کا استعمال غیر ضروری تجارت کو کم کرسکتا ہے اور حکمت عملی کو زیادہ قابل اعتماد بنا سکتا ہے۔

  3. معقول سٹاپ منافع / سٹاپ نقصان کے مقامات کا تعین منافع کو مقفل کرسکتا ہے اور نقصانات کو بڑھنے سے روک سکتا ہے۔

  4. بہتر پیرامیٹرز زیادہ تر اسٹاک اور فاریکس مصنوعات کے لئے موزوں ہیں.

  5. سادہ اور سمجھنے میں آسان تجارتی منطق۔

خطرات

  1. اشارے کے فیصلوں کے مابین عدم مطابقت سے تجارتی مواقع کا نقصان ہوسکتا ہے۔ فیصلے کے قواعد کو مزید بہتر بنایا جاسکتا ہے۔

  2. ایس ٹی سی اشارے پیرامیٹرز کے لئے حساس ہے. مختلف مصنوعات پیرامیٹرز کی ترتیب کی ضرورت ہے.

  3. ڈاؤن ٹرینڈز میں ، اسٹاپ نقصان داخل ہوسکتا ہے ، جس سے بہت زیادہ نقصان ہوتا ہے۔ موافقت پذیر اسٹاپ نقصان پر غور کیا جاسکتا ہے۔

  4. سائیڈ وے کنسولڈیشنز کو مؤثر طریقے سے شناخت نہیں کیا جاسکتا، جس کی وجہ سے پوزیشنوں کو پھنس جاتا ہے۔

بہتری

  1. زیادہ اشارے کے مجموعے کی جانچ پڑتال کرنے کے لئے مضبوط فیصلے کے قوانین تلاش کریں، مثال کے طور پر آر ایس آئی اشارے کو شامل کریں.

  2. مختلف مصنوعات میں بہتر موافقت کے لئے ایس ٹی سی پیرامیٹرز کو بہتر بنائیں۔ موافقت پذیر پیرامیٹر اصلاح ماڈیول شامل کریں۔

  3. متحرک طور پر سٹاپ نقصان کے پوائنٹس کو بہتر بنانے کے لئے انکولی سٹاپ نقصان ماڈیول میں اضافہ کریں.

  4. پوزیشن قریبی ماڈیول کو بڑھانے کے لئے ضمنی حدود کی نشاندہی اور پھندوں سے بچنے کے لئے.

  5. اعلی تعدد کی تجارت کے لئے الگورتھم کو بہتر بنائیں ، تاخیر کو کم کریں اور آرڈر کی تکمیل کی شرح کو بہتر بنائیں۔

نتیجہ

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


/*backtest
start: 2022-12-05 00:00:00
end: 2023-04-14 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/
// © ajahanbin1374

//@version=5
strategy(title = "EMA + TTS + STC", shorttitle = "EMA + TTS + STC", overlay = true, calc_on_order_fills=false, calc_on_every_tick = false, initial_capital = 100, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01)

////////////////////////////////////////////////////////////
// Strategy entry
////////////////////////////////////////////////////////////
profit = input.float(defval = 0.1, minval = 0.0, title="Profit %", step=0.01, group = "Strategy") * 0.01

////////////////////////////////////////////////////////////
// Emponential Moving Average
////////////////////////////////////////////////////////////
ema = ta.ema(close, 200)
posEma = close < ema ? -1 : 1

////////////////////////////////////////////////////////////
// Trend Trader Strategy
////////////////////////////////////////////////////////////
Length = input.int(21, minval=1, group="Trend Trader Strategy")
Multiplier = input.float(3, minval=0.000001, group="Trend Trader Strategy")
avgTR = ta.wma(ta.atr(1), Length)
highestC = ta.highest(Length)
lowestC = ta.lowest(Length)
hiLimit = highestC[1] - avgTR[1] * Multiplier
loLimit = lowestC[1] + avgTR[1] * Multiplier
ret = 0.0
posTts = 0.0
ret:= close > hiLimit and close > loLimit ? hiLimit :
         close < loLimit and close < hiLimit ? loLimit : nz(ret[1], close)
posTts:=  close > ret ? 1 :close < ret ? -1 : nz(posTts[1], 0)


////////////////////////////////////////////////////////////
// Schaff Trend Cycle (STC)
////////////////////////////////////////////////////////////
EEEEEE = input.int(12, 'Length', group ="Schaff Trend Cycle")
BBBB = input.int(26, 'FastLength', group ="Schaff Trend Cycle")
BBBBB = input.int(50, 'SlowLength', group ="Schaff Trend Cycle")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA

AAAAA(EEEEEE, BBBB, BBBBB) =>
    AAA = input.float(0.5, group ="Schaff Trend Cycle")
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close, BBBB, BBBBB)
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC
    CCCCC := CCCC > 0 ? (BBBBBB - CCC) / CCCC * 100 : nz(CCCCC[1])
    DDD := na(DDD[1]) ? CCCCC : DDD[1] + AAA * (CCCCC - DDD[1])
    DDDD = ta.lowest(DDD, EEEEEE)
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD
    DDDDDD := DDDDD > 0 ? (DDD - DDDD) / DDDDD * 100 : nz(DDDDDD[1])
    EEEEE := na(EEEEE[1]) ? DDDDDD : EEEEE[1] + AAA * (DDDDDD - EEEEE[1])
    EEEEE

mAAAAA = AAAAA(EEEEEE, BBBB, BBBBB)
mColor = mAAAAA > mAAAAA[1] ? color.new(color.green, 20) : color.new(color.red, 20)
posStc = mAAAAA > mAAAAA[1] ? 1 : -1

////////////////////////////////////////////////////////////
// Strategy entry
////////////////////////////////////////////////////////////
pos = posEma == 1 and posTts == 1 and posStc == 1 ? 1 : posEma == -1 and posTts == -1 and posStc == -1 ? -1 : 0

currentPostition = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
noOpenPosition = strategy.position_size == 0

signal = pos != pos[1] and pos == 1 and noOpenPosition ? 1 : pos != pos[1] and pos == -1 and noOpenPosition ? -1 : 0

stopPriceForLong = math.min(close * (1 - profit), low[1] * 0.9998, low[2] * 0.9998)
limitPriceForLong = close + (close - stopPriceForLong)
stopPriceForShort = math.max(close * (1 + profit), high[1] * 1.0002, high[2] * 1.0002)
limitPriceForShort = close - (stopPriceForShort - close)

if signal == 1
    strategy.entry(id="L", direction=strategy.long)
    strategy.exit(id='EL', from_entry='L', limit=limitPriceForLong, stop=stopPriceForLong)
if signal == -1
    strategy.entry(id="S", direction=strategy.short)
    strategy.exit(id='ES', from_entry='S', limit=limitPriceForShort, stop=stopPriceForShort)

////////////////////////////////////////////////////////////
// Plots - Debuger
////////////////////////////////////////////////////////////
plotchar(signal, title='singal', char = '')
plotchar(posEma, title='posEma', char = '')
plotchar(posTts, title='posTts', char = '')
plotchar(pos, title='pos', char = '')
plotchar(currentPostition, title = 'currentPostition', char='')
plotchar(stopPriceForLong, title = "stopPriceForLong", char ='')
plotchar(limitPriceForLong, title = 'limitPriceForLong', char='')
plotchar(stopPriceForShort, title = "stopPriceForShort", char ='')
plotchar(limitPriceForShort, title = 'limitPriceForShort', char='')

////////////////////////////////////////////////////////////
// Plots
////////////////////////////////////////////////////////////
plot(ret, color=color.new(color.black, 0), title='Trend Trader Strategy')
plotchar(mAAAAA, color=mColor, title='STC', location = location.bottom, char='-', size=size.normal)
plot(series = ema, title = "ema")


مزید