انکولی ملٹی ٹائم فریم فبونیکی ریٹریکشن ٹریڈنگ حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جس میں انکولی حرکت پذیر اوسط ، اسٹوکاسٹک آر ایس آئی اور فبونیکی ریٹریکشن زون شامل ہیں۔ یہ پوزیشن سائزنگ کو متحرک طور پر ایڈجسٹ کرنے کے لئے مختلف اشارے کے ساتھ مختلف ٹائم فریموں میں مارکیٹ کی نقل و حرکت کا تجزیہ کرتی ہے۔ یہ حکمت عملی رجحان کی تشکیل کے وقت پوزیشنوں کو قائم کرنے کے لئے ممکنہ پل بیک زونوں کا درست پتہ لگاسکتی ہے۔ یہ خطرات کو کنٹرول کرنے کے لئے اسٹاپ نقصان بھی طے کرتی ہے۔
انکولی ملٹی ٹائم فریم فبونیکی ریٹریکشن ٹریڈنگ کی حکمت عملی مندرجہ ذیل تکنیکی اوزار اور میکانزم کا استعمال کرتی ہے:
انکولی حرکت پذیر اوسط (ایس ایم اے اور ڈبلیو ایم اے): مختلف ادوار (منٹ ، گھنٹہ ، دن وغیرہ) پر قیمتوں کے انکولی حرکت پذیر اوسط کا حساب لگائیں۔ انکولی حرکت پذیر اوسط کے ڈھلوان کی بنیاد پر رجحان کی سمت کا تعین کریں۔
اسٹوکاسٹک آر ایس آئی: اس بات کا تعین کرنے کے لئے آر ایس آئی کی اسٹوکاسٹک قیمت کا حساب لگائیں کہ آیا آر ایس آئی زیادہ خرید یا زیادہ فروخت ہوا ہے۔ آر ایس آئی منحنی خطوط کی شکل کا استعمال کرتے ہوئے رفتار اور رجحان کا تجزیہ کریں۔
فبونیکی ریٹریکشن زونز: حالیہ سوئنگ ہائی اور سوئنگ لو کا استعمال کرتے ہوئے فبونیکی ریٹریکشن زونز کو پلاٹ کریں۔ ان زونوں کے اندر داخلہ اور باہر نکلنے کے مقامات مرتب کریں ، جو ممکنہ رجحان کی تبدیلیوں یا پل بیک کو نشان زد کرتے ہیں۔
پوزیشن سائزنگ: اسٹاک آر ایس آئی اور موافقت پذیر حرکت پذیر اوسط سے سگنل کی طاقت کی بنیاد پر پوزیشن سائز کو متحرک طور پر ایڈجسٹ کریں۔
حکمت عملی سب سے پہلے رجحان کی سمت کا تعین کرتی ہے۔ جب قیمت فبونیکی زون میں داخل ہوتی ہے تو ، زون کے قریب ممکنہ انٹری پوائنٹس کو نشان زد کیا جاتا ہے۔ تجارت تب عمل میں آتی ہے جب انکولی حرکت پذیر اوسط اور اسٹاک آر ایس آئی ممکنہ پوائنٹس کے آس پاس انٹری سگنل جاری کرتے ہیں۔ خطرہ پر قابو پانے کے لئے فب زون کے باہر اسٹاپ نقصان طے کیا جاتا ہے۔
موافقت پذیر ملٹی ٹائم فریم فبونیکی ریٹریکشن ٹریڈنگ کی حکمت عملی میں مندرجہ ذیل طاقتیں ہیں:
ملٹی ٹائم فریم تجزیہ: زیادہ جامع رجحان کے فیصلے کے لئے بیک وقت متعدد ٹائم فریم کی سطح (منٹ ، گھنٹہ ، دن وغیرہ) کا اندازہ لگاتا ہے۔
متحرک پوزیشن سائزنگ: مارکیٹ کے حالات کے مطابق پوزیشن سائز کو متحرک طور پر ایڈجسٹ کرتا ہے تاکہ خطرات کو بہتر طور پر کنٹرول کیا جاسکے۔
درست پل بیک ٹارگٹنگ: فبونیکی زونز کا استعمال رجحانات کے دوران قلیل مدتی الٹ کو پکڑنے کے لئے کیا جاسکتا ہے۔
سخت سٹاپ نقصان: ریٹریسیشن زون پر مبنی سٹاپ نقصان بڑے نقصان کو مؤثر طریقے سے روکتا ہے۔
سگنل فلٹرنگ: صرف نشان زد اندراج پوائنٹس کے ارد گرد تجارت میں داخل ہوتا ہے ، جھوٹے بریک آؤٹ سے بچتا ہے۔
اعلی اصلاح: متعدد ٹیون ایبل ان پٹ پیرامیٹرز جو مارکیٹ کے مطابق حکمت عملی کی کارکردگی کو بہتر بنانے کے لئے ایڈجسٹ کیے جاسکتے ہیں۔
اس حکمت عملی سے وابستہ اہم خطرات یہ ہیں:
ناقص زون کا خطرہ: زون یا ناقص زون تک نہ پہنچنے کے نتیجے میں گمشدہ اندراجات ہوتے ہیں۔ زون کی حد کو بڑھا کر یا مزید زون شامل کرکے کم کیا جاسکتا ہے۔
اسٹاپ نقصان کا سراغ لگانے کا خطرہ: جامد اسٹاپ نقصان کو قبل از وقت نشانہ بنایا جاسکتا ہے۔ پیچھے رہ جانے والے اسٹاپ نقصان ، زون اسٹاپ نقصان وغیرہ کو دیکھ سکتا ہے۔
غلط سگنل کا خطرہ: موافقت پذیر حرکت پذیر اوسط اور اسٹاک آر ایس آئی کبھی کبھار غلط سگنل دے سکتے ہیں ، جس سے غیر ضروری تجارت ہوتی ہے۔ غلط سگنل کی شرح کو کم کرنے کے لئے سگنل کو فلٹر کیا جاسکتا ہے۔
اعلی پیچیدگی کے خطرات: متعدد پیرامیٹرز اور اشارے کا امتزاج حکمت عملی کی پیچیدگی میں اضافہ کرتا ہے ، جس سے اصلاح اور جانچ مشکل ہوجاتی ہے۔
اس حکمت عملی کو مندرجہ ذیل طریقوں سے مزید بہتر بنایا جاسکتا ہے:
استحکام کا اندازہ کرنے کے لیے زیادہ اسٹاک اور فاریکس مصنوعات پر ٹیسٹ کریں۔ ہر مارکیٹ کے مطابق ٹھیک ٹھیک پیرامیٹرز۔
غلط سگنل کی شرح کو کم کرنے اور سگنل سے شور کے تناسب کو بڑھانے کے لئے سگنل فلٹرنگ میکانزم شامل کریں۔
مختلف قسم کے چلتے ہوئے اوسط کے پیرامیٹرز کی جانچ اور موازنہ کریں۔
فکسڈ سٹاپ نقصان کی جگہ ٹرائلنگ سٹاپ نقصان یا زون سٹاپ نقصان سے ہونے والی بہتری کا اندازہ کریں۔
طویل مدتی منافع لینے کے طریقوں کو ڈیزائن کرنے کے لئے بریک آؤٹ سگنل یا رجحان ٹریکنگ میکانزم کے ساتھ تجربہ کریں۔
انکولی ملٹی ٹائم فریم فبونیکی ریٹریکشن ٹریڈنگ حکمت عملی رجحان کی حالتوں کی نشاندہی کرنے اور ریٹریکشن کے دوران پوزیشنوں کو تعینات کرنے کے لئے مختلف تجزیاتی ٹولز کا استعمال کرتی ہے۔ سخت رسک کنٹرول میکانزم اور اسٹاپ نقصان بڑے رجحانات کے اندر منافع کو بہتر بنانے میں مدد کرتا ہے۔ وسیع پیمانے پر ٹیون ایبل پیرامیٹرز اور اصلاح کے مواقع کے ساتھ ، اس حکمت عملی میں مزید اصلاحات اسے مستحکم اور قابل اعتماد تجارتی نظام میں تبدیل کردیں گی۔
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 1m basePeriod: 1m 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/ // © imal_max //@version=5 strategy(title="Auto Fib Golden Pocket Band - Autofib Moving Average", shorttitle="Auto Fib Golden Pocket Band", overlay=true, pyramiding=15, process_orders_on_close=true, calc_on_every_tick=true, initial_capital=10000, currency = currency.USD, default_qty_value=100, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.05, slippage=2) //indicator("Auto Fib Golden Pocket Band - Autofib Moving Average", overlay=true, shorttitle="Auto Fib Golden Pocket Band", timeframe""") // Fibs // auto fib ranges // fib band Strong Trend enable_StrongBand_Bull = input.bool(title='enable Upper Bullish Band . . . Fib Level', defval=true, group='══════ Strong Trend Levels ══════', inline="0") select_StrongBand_Fib_Bull = input.float(0.236, title=" ", options=[-0.272, 0, 0.236, 0.382, 0.5, 0.618, 0.702, 0.71, 0.786, 0.83, 0.886, 1, 1.272], group='══════ Strong Trend Levels ══════', inline="0") enable_StrongBand_Bear = input.bool(title='enable Lower Bearish Band . . . Fib Level', defval=false, group='══════ Strong Trend Levels ══════', inline="1") select_StrongBand_Fib_Bear = input.float(0.382, '', options=[-0.272, 0, 0.236, 0.382, 0.5, 0.618, 0.702, 0.71, 0.786, 0.83, 0.886, 1, 1.272], group='══════ Strong Trend Levels ══════', inline="1") StrongBand_Lookback = input.int(title='Pivot Look Back', minval=1, defval=400, group='══════ Strong Trend Levels ══════', inline="2") StrongBand_EmaLen = input.int(title='Fib EMA Length', minval=1, defval=120, group='══════ Strong Trend Levels ══════', inline="2") // fib middle Band regular Trend enable_MiddleBand_Bull = input.bool(title='enable Middle Bullish Band . . . Fib Level', defval=true, group='══════ Regular Trend Levels ══════', inline="0") select_MiddleBand_Fib_Bull = input.float(0.618, '', options=[-0.272, 0, 0.236, 0.382, 0.5, 0.6, 0.618, 0.702, 0.71, 0.786, 0.83, 0.886, 1, 1.272], group='══════ Regular Trend Levels ══════', inline="0") enable_MiddleBand_Bear = input.bool(title='enable Middle Bearish Band . . . Fib Level', defval=true, group='══════ Regular Trend Levels ══════', inline="1") select_MiddleBand_Fib_Bear = input.float(0.382, '', options=[-0.272, 0, 0.236, 0.382, 0.5, 0.618, 0.702, 0.71, 0.786, 0.83, 0.886, 1, 1.272], group='══════ Regular Trend Levels ══════', inline="1") MiddleBand_Lookback = input.int(title='Pivot Look Back', minval=1, defval=900, group='══════ Regular Trend Levels ══════', inline="2") MiddleBand_EmaLen = input.int(title='Fib EMA Length', minval=1, defval=400, group='══════ Regular Trend Levels ══════', inline="2") // fib Sideways Band enable_SidewaysBand_Bull = input.bool(title='enable Lower Bullish Band . . . Fib Level', defval=true, group='══════ Sideways Trend Levels ══════', inline="0") select_SidewaysBand_Fib_Bull = input.float(0.6, '', options=[-0.272, 0, 0.236, 0.382, 0.5, 0.6, 0.618, 0.702, 0.71, 0.786, 0.83, 0.886, 1, 1.272], group='══════ Sideways Trend Levels ══════', inline="0") enable_SidewaysBand_Bear = input.bool(title='enable Upper Bearish Band . . . Fib Level', defval=true, group='══════ Sideways Trend Levels ══════', inline="1") select_SidewaysBand_Fib_Bear = input.float(0.5, '', options=[-0.272, 0, 0.236, 0.382, 0.5, 0.618, 0.702, 0.71, 0.786, 0.83, 0.886, 1, 1.272], group='══════ Sideways Trend Levels ══════', inline="1") SidewaysBand_Lookback = input.int(title='Pivot Look Back', minval=1, defval=4000, group='══════ Sideways Trend Levels ══════', inline="2") SidewaysBand_EmaLen = input.int(title='Fib EMA Length', minval=1, defval=150, group='══════ Sideways Trend Levels ══════', inline="2") // Strong Band isBelow_StrongBand_Bull = true isBelow_StrongBand_Bear = true StrongBand_Price_of_Low = float(na) StrongBand_Price_of_High = float(na) StrongBand_Bear_Fib_Price = float(na) StrongBand_Bull_Fib_Price = float(na) /// Middle Band isBelow_MiddleBand_Bull = true isBelow_MiddleBand_Bear = true MiddleBand_Price_of_Low = float(na) MiddleBand_Price_of_High = float(na) MiddleBand_Bear_Fib_Price = float(na) MiddleBand_Bull_Fib_Price = float(na) // Sideways Band isBelow_SidewaysBand_Bull = true isBelow_SidewaysBand_Bear = true SidewaysBand_Price_of_Low = float(na) SidewaysBand_Price_of_High = float(na) SidewaysBand_Bear_Fib_Price = float(na) SidewaysBand_Bull_Fib_Price = float(na) // get Fib Levels if enable_StrongBand_Bull StrongBand_Price_of_High := ta.highest(high, StrongBand_Lookback) StrongBand_Price_of_Low := ta.lowest(low, StrongBand_Lookback) StrongBand_Bull_Fib_Price := (StrongBand_Price_of_High - StrongBand_Price_of_Low) * (1 - select_StrongBand_Fib_Bull) + StrongBand_Price_of_Low //+ fibbullHighDivi isBelow_StrongBand_Bull := StrongBand_Bull_Fib_Price > ta.lowest(low, 2) or not enable_StrongBand_Bull if enable_StrongBand_Bear StrongBand_Price_of_High := ta.highest(high, StrongBand_Lookback) StrongBand_Price_of_Low := ta.lowest(low, StrongBand_Lookback) StrongBand_Bear_Fib_Price := (StrongBand_Price_of_High - StrongBand_Price_of_Low) * (1 - select_StrongBand_Fib_Bear) + StrongBand_Price_of_Low// + fibbullLowhDivi isBelow_StrongBand_Bear := StrongBand_Bear_Fib_Price < ta.highest(low, 2) or not enable_StrongBand_Bear if enable_MiddleBand_Bull MiddleBand_Price_of_High := ta.highest(high, MiddleBand_Lookback) MiddleBand_Price_of_Low := ta.lowest(low, MiddleBand_Lookback) MiddleBand_Bull_Fib_Price := (MiddleBand_Price_of_High - MiddleBand_Price_of_Low) * (1 - select_MiddleBand_Fib_Bull) + MiddleBand_Price_of_Low //+ fibbullHighDivi isBelow_MiddleBand_Bull := MiddleBand_Bull_Fib_Price > ta.lowest(low, 2) or not enable_MiddleBand_Bull if enable_MiddleBand_Bear MiddleBand_Price_of_High := ta.highest(high, MiddleBand_Lookback) MiddleBand_Price_of_Low := ta.lowest(low, MiddleBand_Lookback) MiddleBand_Bear_Fib_Price := (MiddleBand_Price_of_High - MiddleBand_Price_of_Low) * (1 - select_MiddleBand_Fib_Bear) + MiddleBand_Price_of_Low// + fibbullLowhDivi isBelow_MiddleBand_Bear := MiddleBand_Bear_Fib_Price < ta.highest(low, 2) or not enable_MiddleBand_Bear if enable_SidewaysBand_Bull SidewaysBand_Price_of_High := ta.highest(high, SidewaysBand_Lookback) SidewaysBand_Price_of_Low := ta.lowest(low, SidewaysBand_Lookback) SidewaysBand_Bull_Fib_Price := (SidewaysBand_Price_of_High - SidewaysBand_Price_of_Low) * (1 - select_SidewaysBand_Fib_Bull) + SidewaysBand_Price_of_Low //+ fibbullHighDivi isBelow_SidewaysBand_Bull := SidewaysBand_Bull_Fib_Price > ta.lowest(low, 2) or not enable_SidewaysBand_Bull if enable_SidewaysBand_Bear SidewaysBand_Price_of_High := ta.highest(high, SidewaysBand_Lookback) SidewaysBand_Price_of_Low := ta.lowest(low, SidewaysBand_Lookback) SidewaysBand_Bear_Fib_Price := (SidewaysBand_Price_of_High - SidewaysBand_Price_of_Low) * (1 - select_SidewaysBand_Fib_Bear) + SidewaysBand_Price_of_Low// + fibbullLowhDivi isBelow_SidewaysBand_Bear := SidewaysBand_Bear_Fib_Price < ta.highest(low, 2) or not enable_SidewaysBand_Bear // Fib EMAs // fib ema Strong Trend StrongBand_current_Trend_EMA = float(na) StrongBand_Bull_EMA = ta.ema(StrongBand_Bull_Fib_Price, StrongBand_EmaLen) StrongBand_Bear_EMA = ta.ema(StrongBand_Bear_Fib_Price, StrongBand_EmaLen) StrongBand_Ema_in_Uptrend = ta.change(StrongBand_Bull_EMA) > 0 or ta.change(StrongBand_Bear_EMA) > 0 StrongBand_Ema_Sideways = ta.change(StrongBand_Bull_EMA) == 0 or ta.change(StrongBand_Bear_EMA) == 0 StrongBand_Ema_in_Downtrend = ta.change(StrongBand_Bull_EMA) < 0 or ta.change(StrongBand_Bear_EMA) < 0 if StrongBand_Ema_in_Uptrend or StrongBand_Ema_Sideways StrongBand_current_Trend_EMA := StrongBand_Bull_EMA if StrongBand_Ema_in_Downtrend StrongBand_current_Trend_EMA := StrongBand_Bear_EMA // fib ema Normal Trend MiddleBand_current_Trend_EMA = float(na) MiddleBand_Bull_EMA = ta.ema(MiddleBand_Bull_Fib_Price, MiddleBand_EmaLen) MiddleBand_Bear_EMA = ta.ema(MiddleBand_Bear_Fib_Price, MiddleBand_EmaLen) MiddleBand_Ema_in_Uptrend = ta.change(MiddleBand_Bull_EMA) > 0 or ta.change(MiddleBand_Bear_EMA) > 0 MiddleBand_Ema_Sideways = ta.change(MiddleBand_Bull_EMA) == 0 or ta.change(MiddleBand_Bear_EMA) == 0 MiddleBand_Ema_in_Downtrend = ta.change(MiddleBand_Bull_EMA) < 0 or ta.change(MiddleBand_Bear_EMA) < 0 if MiddleBand_Ema_in_Uptrend or MiddleBand_Ema_Sideways MiddleBand_current_Trend_EMA := MiddleBand_Bull_EMA if MiddleBand_Ema_in_Downtrend MiddleBand_current_Trend_EMA := MiddleBand_Bear_EMA // fib ema Sideways Trend SidewaysBand_current_Trend_EMA = float(na) SidewaysBand_Bull_EMA = ta.ema(SidewaysBand_Bull_Fib_Price, SidewaysBand_EmaLen) SidewaysBand_Bear_EMA = ta.ema(SidewaysBand_Bear_Fib_Price, SidewaysBand_EmaLen) SidewaysBand_Ema_in_Uptrend = ta.change(SidewaysBand_Bull_EMA) > 0 or ta.change(SidewaysBand_Bear_EMA) > 0 SidewaysBand_Ema_Sideways = ta.change(SidewaysBand_Bull_EMA) == 0 or ta.change(SidewaysBand_Bear_EMA) == 0 SidewaysBand_Ema_in_Downtrend = ta.change(SidewaysBand_Bull_EMA) < 0 or ta.change(SidewaysBand_Bear_EMA) < 0 if SidewaysBand_Ema_in_Uptrend or SidewaysBand_Ema_Sideways SidewaysBand_current_Trend_EMA := SidewaysBand_Bull_EMA if SidewaysBand_Ema_in_Downtrend SidewaysBand_current_Trend_EMA := SidewaysBand_Bear_EMA // trend states and colors all_Fib_Emas_Trending = StrongBand_Ema_in_Uptrend and MiddleBand_Ema_in_Uptrend and SidewaysBand_Ema_in_Uptrend all_Fib_Emas_Downtrend = MiddleBand_Ema_in_Downtrend and StrongBand_Ema_in_Downtrend and SidewaysBand_Ema_in_Downtrend all_Fib_Emas_Sideways = MiddleBand_Ema_Sideways and StrongBand_Ema_Sideways and SidewaysBand_Ema_Sideways all_Fib_Emas_Trend_or_Sideways = (MiddleBand_Ema_Sideways or StrongBand_Ema_Sideways or SidewaysBand_Ema_Sideways) or (StrongBand_Ema_in_Uptrend or MiddleBand_Ema_in_Uptrend or SidewaysBand_Ema_in_Uptrend) and not (MiddleBand_Ema_in_Downtrend or StrongBand_Ema_in_Downtrend or SidewaysBand_Ema_in_Downtrend) allFibsUpAndDownTrend = (MiddleBand_Ema_in_Downtrend or StrongBand_Ema_in_Downtrend or SidewaysBand_Ema_in_Downtrend) and (MiddleBand_Ema_Sideways or SidewaysBand_Ema_Sideways or StrongBand_Ema_Sideways or StrongBand_Ema_in_Uptrend or MiddleBand_Ema_in_Uptrend or SidewaysBand_Ema_in_Uptrend) Middle_and_Sideways_Emas_Trending = MiddleBand_Ema_in_Uptrend and SidewaysBand_Ema_in_Uptrend Middle_and_Sideways_Fib_Emas_Downtrend = MiddleBand_Ema_in_Downtrend and SidewaysBand_Ema_in_Downtrend Middle_and_Sideways_Fib_Emas_Sideways = MiddleBand_Ema_Sideways and SidewaysBand_Ema_Sideways Middle_and_Sideways_Fib_Emas_Trend_or_Sideways = (MiddleBand_Ema_Sideways or SidewaysBand_Ema_Sideways) or (MiddleBand_Ema_in_Uptrend or SidewaysBand_Ema_in_Uptrend) and not (MiddleBand_Ema_in_Downtrend or SidewaysBand_Ema_in_Downtrend) Middle_and_Sideways_UpAndDownTrend = (MiddleBand_Ema_in_Downtrend or SidewaysBand_Ema_in_Downtrend) and (MiddleBand_Ema_Sideways or SidewaysBand_Ema_Sideways or MiddleBand_Ema_in_Uptrend or SidewaysBand_Ema_in_Uptrend) UpperBand_Ema_Color = all_Fib_Emas_Trend_or_Sideways ? color.lime : all_Fib_Emas_Downtrend ? color.red : allFibsUpAndDownTrend ? color.white : na MiddleBand_Ema_Color = Middle_and_Sideways_Fib_Emas_Trend_or_Sideways ? color.lime : Middle_and_Sideways_Fib_Emas_Downtrend ? color.red : Middle_and_Sideways_UpAndDownTrend ? color.white : na SidewaysBand_Ema_Color = SidewaysBand_Ema_in_Uptrend ? color.lime : SidewaysBand_Ema_in_Downtrend ? color.red : (SidewaysBand_Ema_in_Downtrend and (SidewaysBand_Ema_Sideways or SidewaysBand_Ema_in_Uptrend)) ? color.white : na plotStrong_Ema = plot(StrongBand_current_Trend_EMA, color=UpperBand_Ema_Color, title="Strong Trend") plotMiddle_Ema = plot(MiddleBand_current_Trend_EMA, color=MiddleBand_Ema_Color, title="Normal Trend") plotSideways_Ema = plot(SidewaysBand_current_Trend_EMA, color=SidewaysBand_Ema_Color, title="Sidewaysd") Strong_Middle_fillcolor = color.new(color.green, 90) if all_Fib_Emas_Trend_or_Sideways Strong_Middle_fillcolor := color.new(color.green, 90) if all_Fib_Emas_Downtrend Strong_Middle_fillcolor := color.new(color.red, 90) if allFibsUpAndDownTrend Strong_Middle_fillcolor := color.new(color.white, 90) Middle_Sideways_fillcolor = color.new(color.green, 90) if Middle_and_Sideways_Fib_Emas_Trend_or_Sideways Middle_Sideways_fillcolor := color.new(color.green, 90) if Middle_and_Sideways_Fib_Emas_Downtrend Middle_Sideways_fillcolor := color.new(color.red, 90) if Middle_and_Sideways_UpAndDownTrend Middle_Sideways_fillcolor := color.new(color.white, 90) fill(plotStrong_Ema, plotMiddle_Ema, color=Strong_Middle_fillcolor, title="fib band background") fill(plotMiddle_Ema, plotSideways_Ema, color=Middle_Sideways_fillcolor, title="fib band background") // buy condition StrongBand_Price_was_below_Bull_level = ta.lowest(low, 1) < StrongBand_current_Trend_EMA StrongBand_Price_is_above_Bull_level = close > StrongBand_current_Trend_EMA StronBand_Price_Average_above_Bull_Level = ta.ema(low, 10) > StrongBand_current_Trend_EMA StrongBand_Low_isnt_toLow = (ta.lowest(StrongBand_current_Trend_EMA, 15) - ta.lowest(low, 15)) < close * 0.005 StronBand_Trend_isnt_fresh = ta.barssince(StrongBand_Ema_in_Downtrend) > 50 or na(ta.barssince(StrongBand_Ema_in_Downtrend)) MiddleBand_Price_was_below_Bull_level = ta.lowest(low, 1) < MiddleBand_current_Trend_EMA MiddleBand_Price_is_above_Bull_level = close > MiddleBand_current_Trend_EMA MiddleBand_Price_Average_above_Bull_Level = ta.ema(close, 20) > MiddleBand_current_Trend_EMA MiddleBand_Low_isnt_toLow = (ta.lowest(MiddleBand_current_Trend_EMA, 10) - ta.lowest(low, 10)) < close * 0.0065 MiddleBand_Trend_isnt_fresh = ta.barssince(MiddleBand_Ema_in_Downtrend) > 50 or na(ta.barssince(MiddleBand_Ema_in_Downtrend)) SidewaysBand_Price_was_below_Bull_level = ta.lowest(low, 1) < SidewaysBand_current_Trend_EMA SidewaysBand_Price_is_above_Bull_level = close > SidewaysBand_current_Trend_EMA SidewaysBand_Price_Average_above_Bull_Level = ta.ema(low, 80) > SidewaysBand_current_Trend_EMA SidewaysBand_Low_isnt_toLow = (ta.lowest(SidewaysBand_current_Trend_EMA, 150) - ta.lowest(low, 150)) < close * 0.0065 SidewaysBand_Trend_isnt_fresh = ta.barssince(SidewaysBand_Ema_in_Downtrend) > 50 or na(ta.barssince(SidewaysBand_Ema_in_Downtrend)) StrongBand_Buy_Alert = StronBand_Trend_isnt_fresh and StrongBand_Low_isnt_toLow and StronBand_Price_Average_above_Bull_Level and StrongBand_Price_was_below_Bull_level and StrongBand_Price_is_above_Bull_level and all_Fib_Emas_Trend_or_Sideways MiddleBand_Buy_Alert = MiddleBand_Trend_isnt_fresh and MiddleBand_Low_isnt_toLow and MiddleBand_Price_Average_above_Bull_Level and MiddleBand_Price_was_below_Bull_level and MiddleBand_Price_is_above_Bull_level and Middle_and_Sideways_Fib_Emas_Trend_or_Sideways SidewaysBand_Buy_Alert = SidewaysBand_Trend_isnt_fresh and SidewaysBand_Low_isnt_toLow and SidewaysBand_Price_Average_above_Bull_Level and SidewaysBand_Price_was_below_Bull_level and SidewaysBand_Price_is_above_Bull_level and (SidewaysBand_Ema_Sideways or SidewaysBand_Ema_in_Uptrend and ( not SidewaysBand_Ema_in_Downtrend)) // Sell condition StrongBand_Price_was_above_Bear_level = ta.highest(high, 1) > StrongBand_current_Trend_EMA StrongBand_Price_is_below_Bear_level = close < StrongBand_current_Trend_EMA StronBand_Price_Average_below_Bear_Level = ta.sma(high, 10) < StrongBand_current_Trend_EMA StrongBand_High_isnt_to_High = (ta.highest(high, 15) - ta.highest(StrongBand_current_Trend_EMA, 15)) < close * 0.005 StrongBand_Bear_Trend_isnt_fresh = ta.barssince(StrongBand_Ema_in_Uptrend) > 50 MiddleBand_Price_was_above_Bear_level = ta.highest(high, 1) > MiddleBand_current_Trend_EMA MiddleBand_Price_is_below_Bear_level = close < MiddleBand_current_Trend_EMA MiddleBand_Price_Average_below_Bear_Level = ta.sma(high, 9) < MiddleBand_current_Trend_EMA MiddleBand_High_isnt_to_High = (ta.highest(high, 10) - ta.highest(MiddleBand_current_Trend_EMA, 10)) < close * 0.0065 MiddleBand_Bear_Trend_isnt_fresh = ta.barssince(MiddleBand_Ema_in_Uptrend) > 50 SidewaysBand_Price_was_above_Bear_level = ta.highest(high, 1) > SidewaysBand_current_Trend_EMA SidewaysBand_Price_is_below_Bear_level = close < SidewaysBand_current_Trend_EMA SidewaysBand_Price_Average_below_Bear_Level = ta.sma(high, 20) < SidewaysBand_current_Trend_EMA SidewaysBand_High_isnt_to_High = (ta.highest(high, 20) - ta.highest(SidewaysBand_current_Trend_EMA, 15)) < close * 0.0065 SidewaysBand_Bear_Trend_isnt_fresh = ta.barssince(SidewaysBand_Ema_in_Uptrend) > 50 StrongBand_Sell_Alert = StronBand_Price_Average_below_Bear_Level and StrongBand_High_isnt_to_High and StrongBand_Bear_Trend_isnt_fresh and StrongBand_Price_was_above_Bear_level and StrongBand_Price_is_below_Bear_level and all_Fib_Emas_Downtrend and not all_Fib_Emas_Trend_or_Sideways MiddleBand_Sell_Alert = MiddleBand_Price_Average_below_Bear_Level and MiddleBand_High_isnt_to_High and MiddleBand_Bear_Trend_isnt_fresh and MiddleBand_Price_was_above_Bear_level and MiddleBand_Price_is_below_Bear_level and Middle_and_Sideways_Fib_Emas_Downtrend and not Middle_and_Sideways_Fib_Emas_Trend_or_Sideways SidewaysBand_Sell_Alert = SidewaysBand_Price_Average_below_Bear_Level and SidewaysBand_High_isnt_to_High and SidewaysBand_Bear_Trend_isnt_fresh and SidewaysBand_Price_was_above_Bear_level and SidewaysBand_Price_is_below_Bear_level and SidewaysBand_Ema_in_Downtrend and not (SidewaysBand_Ema_Sideways or SidewaysBand_Ema_in_Uptrend and ( not SidewaysBand_Ema_in_Downtrend)) // Backtester ////////////////// Stop Loss // Stop loss enableSL = input.bool(true, title='enable Stop Loss', group='══════════ Stop Loss Settings ══════════') whichSL = input.string(defval='low/high as SL', title='SL based on static % or based on the low/high', options=['low/high as SL', 'static % as SL'], group='══════════ Stop Loss Settings ══════════') whichOffset = input.string(defval='% as offset', title='choose offset from the low/high', options=['$ as offset', '% as offset'], group='Stop Loss at the low/high') lowPBuffer = input.float(1.4, title='SL Offset from the Low/high in %', group='Stop Loss at the low/high') / 100 lowDBuffer = input.float(100, title='SL Offset from the Low/high in $', group='Stop Loss at the low/high') SlLowLookback = input.int(title='SL lookback for Low/high', defval=5, minval=1, maxval=50, group='Stop Loss at the low/high') longSlLow = float(na) shortSlLow = float(na) if whichOffset == "% as offset" and whichSL == "low/high as SL" and enableSL longSlLow := ta.lowest(low, SlLowLookback) * (1 - lowPBuffer) shortSlLow := ta.highest(high, SlLowLookback) * (1 + lowPBuffer) if whichOffset == "$ as offset" and whichSL == "low/high as SL" and enableSL longSlLow := ta.lowest(low, SlLowLookback) - lowDBuffer shortSlLow := ta.highest(high, SlLowLookback) + lowDBuffer //plot(shortSlLow, title="stoploss", color=color.new(#00bcd4, 0)) // long settings - 🔥 uncomment the 6 lines below to disable the alerts and enable the backtester longStopLoss = input.float(0.5, title='Long Stop Loss in %', group='static % Stop Loss', inline='Input 1') / 100 // short settings - 🔥 uncomment the 6 lines below to disable the alerts and enable the backtester shortStopLoss = input.float(0.5, title='Short Stop Loss in %', group='static % Stop Loss', inline='Input 1') / 100 /////// Take profit longTakeProfit1 = input.float(4, title='Long Take Profit in %', group='Take Profit', inline='Input 1') / 100 /////// Take profit shortTakeProfit1 = input.float(1.6, title='Short Take Profit in %', group='Take Profit', inline='Input 1') / 100 ////////////////// SL TP END /////////////////// alerts selectalertFreq = input.string(defval='once per bar close', title='Alert Options', options=['once per bar', 'once per bar close', 'all'], group='═══════════ alert settings ═══════════') BuyAlertMessage = input.string(defval="Bullish Divergence detected, put your SL @", title='Buy Alert Message', group='═══════════ alert settings ═══════════') enableSlMessage = input.bool(true, title='enable Stop Loss Value at the end of "buy Alert message"', group='═══════════ alert settings ═══════════') AfterSLMessage = input.string(defval="", title='Buy Alert message after SL Value', group='═══════════ alert settings ═══════════') ////////////////// Backtester // 🔥 uncomment the all lines below for the backtester and revert for alerts shortTrading = enable_MiddleBand_Bear or enable_StrongBand_Bear or enable_SidewaysBand_Bear longTrading = enable_StrongBand_Bull or enable_MiddleBand_Bull or enable_SidewaysBand_Bull longTP1 = strategy.position_size > 0 ? strategy.position_avg_price * (1 + longTakeProfit1) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - longTakeProfit1) : na longSL = strategy.position_size > 0 ? strategy.position_avg_price * (1 - longStopLoss) : strategy.position_size < 0 ? strategy.position_avg_price * (1 + longStopLoss) : na shortTP = strategy.position_size > 0 ? strategy.position_avg_price * (1 + shortTakeProfit1) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - shortTakeProfit1) : na shortSL = strategy.position_size > 0 ? strategy.position_avg_price * (1 - shortStopLoss) : strategy.position_size < 0 ? strategy.position_avg_price * (1 + shortStopLoss) : na strategy.risk.allow_entry_in(longTrading == true and shortTrading == true ? strategy.direction.all : longTrading == true ? strategy.direction.long : shortTrading == true ? strategy.direction.short : na) strategy.entry('Bull', strategy.long, comment='Upper Band Long', when=StrongBand_Buy_Alert) strategy.entry('Bull', strategy.long, comment='Lower Band Long', when=MiddleBand_Buy_Alert) strategy.entry('Bull', strategy.long, comment='Lower Band Long', when=SidewaysBand_Buy_Alert) strategy.entry('Bear', strategy.short, comment='Upper Band Short', when=StrongBand_Sell_Alert) strategy.entry('Bear', strategy.short, comment='Lower Band Short', when=MiddleBand_Sell_Alert) strategy.entry('Bear', strategy.short, comment='Lower Band Short', when=SidewaysBand_Sell_Alert) // check which SL to use if enableSL and whichSL == 'static % as SL' strategy.exit(id='longTP-SL', from_entry='Bull', limit=longTP1, stop=longSL) strategy.exit(id='shortTP-SL', from_entry='Bear', limit=shortTP, stop=shortSL) // get bars since last entry for the SL at low to work barsSinceLastEntry()=> strategy.opentrades > 0 ? (bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades-1)) : na if enableSL and whichSL == 'low/high as SL' and ta.barssince(StrongBand_Buy_Alert or MiddleBand_Buy_Alert or SidewaysBand_Buy_Alert) < 2 and barsSinceLastEntry() < 2 strategy.exit(id='longTP-SL', from_entry='Bull', limit=longTP1, stop=longSlLow) if enableSL and whichSL == 'low/high as SL' and ta.barssince(StrongBand_Sell_Alert or MiddleBand_Sell_Alert or SidewaysBand_Sell_Alert) < 2 and barsSinceLastEntry() < 2 strategy.exit(id='shortTP-SL', from_entry='Bear', limit=shortTP, stop=shortSlLow) if not enableSL strategy.exit(id='longTP-SL', from_entry='Bull', limit=longTP1) strategy.exit(id='shortTP-SL', from_entry='Bear', limit=shortTP)