التصنيف: Blog

Your blog category

  • مؤشر ALGoX


    ما هو مؤشر ALGoX؟

    هو مؤشر مخصص لمنصة TradingView، يهدف إلى توليد إشارات بيع وشراء دقيقة بالاعتماد على تقاطع متوسطات متحركة محسّنة مثل ALMA وLSMA وEMA وWMA، مع إمكانية تفعيل إشارات شموع Heikin Ashi وتلوين الشموع لتوضيح الاتجاه. يستخدم المؤشر عادة في التداول قصير المدى مثل السكالبينغ، لكنه مرن ويصلح أيضًا للفريمات المتوسطة والطويلة.


    مكونات المؤشر الرئيسية:

    1. نوع المتوسط المتحرك (MA Type):
      • ALMA: متوسط موزون بالانحراف القياسي، يفلتر الضجيج ويقلل التأخير.
      • EMA: متوسط أسي سريع الاستجابة، مثالي للأسواق المتقلبة.
      • WMA: متوسط موزون يعطي أولوية للأسعار الحديثة.
      • LSMA: متوسط يعتمد على الانحدار الخطي، جيد لرصد الزخم.
    2. الفترة الزمنية للمتوسط (MA Period):
      • تحدد مدى سرعة استجابة المؤشر. القيم الصغيرة تعطي إشارات أسرع، ولكنها أكثر عرضة للإشارات الكاذبة.
      • القيم الأكبر تزيد من تأخير الإشارة ولكن تعطي موثوقية أكبر.
    3. الإزاحة والانحراف (Offset & Sigma) – خاص بـ ALMA:
      • Offset: يتحكم بموقع المتوسط داخل البيانات. القيم الأقرب إلى 1 تجعل الإشارة أكثر تأخرًا وسلاسة.
      • Sigma: يتحكم بدرجة التنعيم (Smoothness). القيم الأعلى تعني خطوط أكثر سلاسة.
    4. الخيارات الإضافية:
      • تفعيل إشارات الشراء والبيع (Buy/Sell Signals).
      • تلوين الشموع حسب الاتجاه (Coloured Bars).
      • تفعيل إشارات Heikin Ashi لمزيد من النقاء البصري على الفريمات الأعلى.
      • إشارات بديلة (Alternate Signals) لتحديد الانعكاسات المبكرة.

    كيفية استخدام ALGoX:

    1. السكالبينغ (1m – 5m):
      يتم استخدام إعدادات سريعة جدًا، وتُفضل مع الأسواق ذات الحركة النشطة كـ الذهب والـ SPX500.
      • يفضل ALMA أو EMA بفترة 10–14.
      • تفعيل الإشارات البديلة وتلوين الشموع ضروري للتفاعل السريع.
    2. التداول اليومي (15m – 1h):
      يمكن زيادة فترة المتوسط لـ 20–50.
      • تفعيل Heikin Ashi اختياري حسب نمطك.
      • دمج المؤشر مع مستويات دعم ومقاومة يعطي إشارات أدق.
    3. التداول متوسط – طويل المدى (4h – Daily):
      تستخدم فترات أطول مثل 100–200 مع EMA أو ALMA.
      • يفضل تفعيل شموع Heikin Ashi لتحسين تصفية الإشارات.
      • المؤشر يكون مرجعيًا وليس تنفيذ مباشر.

    جدول الإعدادات المقترحة حسب السوق والفريم:

    الأصلالفريم الزمنينوع MAفترة MAOffset (ALMA)Sigma (ALMA)Heikin AshiAlternate Signalsملاحظات
    الذهب (XAUUSD)1 دقيقةALMA100.856لانعممناسب للسكالبينغ السريع
    SPX5001 دقيقةALMA140.856لانعمسكالب سريع وحاد
    العملات الرقمية (BTC/ETH)1 دقيقةEMA9لانعمتقلبات عالية
    الفوركس (EURUSD)5 دقائقALMA140.856لانعمأكثر استقرارًا
    الذهب15 دقيقةALMA200.856نعملاتداول يومي متوسط
    SPX5001 ساعةALMA500.906نعملاترندات موثوقة
    الفوركس4 ساعاتEMA100نعملاتحليل الاتجاه العام
    العملات الرقميةيوميEMA200نعملاتحديد الترند طويل المدى

    نصائح مهمة لاستخدام مؤشر ALGoX بفعالية:

    • لا تستخدم ALGoX بشكل منفصل؛ أضف مؤشرات داعمة مثل RSI أو MACD.
    • راقب الأخبار الاقتصادية لأنها قد تخلق إشارات كاذبة.
    • راقب الفريم الأعلى (مثل 15m عند استخدام 1m) لتأكيد الاتجاه العام.
    • لا تُبالغ في الدخول في كل إشارة؛ الجودة أهم من الكمية.

    الخلاصة:

    يُعد مؤشر ALGoX أداة مرنة وفعالة للسكالبينغ والتداول السريع إذا تم ضبطه بإعدادات مناسبة لكل سوق وفريم. يُنصح بالاعتماد عليه كمساعد ذكي لتحديد بداية الاتجاه، بشرط وجود خطة إدارة مخاطر دقيقة وعدم الاعتماد عليه كإشارة دخول وخروج وحيدة.


    النسخة المطورة لايعيد الرسم

    اذا واجهتك مشاكل بالملف انسخ الكود التالي :

    //@version=5
    VERSION  = ' V6.1.24'
    strategy('ALGOX', shorttitle = 'ALGOX V6.1.24 NONREPAINT', overlay = true, explicit_plot_zorder = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, initial_capital = 20, default_qty_value = 20, calc_on_every_tick = false, process_orders_on_close = true) 
    
    G_SCRIPT01   = '■ ' + 'SAIYAN OCC'
    //#region ———— <↓↓↓ G_SCRIPT01 ↓↓↓> {
    
    // === INPUTS ===
    res                       = input.timeframe('1',  'TIMEFRAME', group ="NON REPAINT")
    useRes                    = input(true,            'Use Alternate Signals')
    intRes                    = input(8,               'Multiplier for Alernate Signals')
    basisType                 = input.string('ALMA',   'MA Type: ', options=['TEMA', 'HullMA', 'ALMA'])
    basisLen                  = input.int(2,           'MA Period', minval=1)
    offsetSigma               = input.int(5,           'Offset for LSMA / Sigma for ALMA', minval=0)
    offsetALMA                = input.float(0.85,      'Offset for ALMA', minval=0, step=0.01)
    scolor                    = input(false,           'Show coloured Bars to indicate Trend?')
    delayOffset               = input.int(0,           'Delay Open/Close MA', minval=0, step=1,
                      tooltip = 'Forces Non-Repainting')
    tradeType                 = input.string('BOTH',   'What trades should be taken : ',
                      options = ['LONG', 'SHORT', 'BOTH', 'NONE'])
    //=== /INPUTS ===
    h                         = input(false,           'Signals for Heikin Ashi Candles')
    //INDICATOR SETTINGS
    swing_length              = input.int(10,          'Swing High/Low Length', group = 'Settings', minval = 1, maxval = 50)
    history_of_demand_to_keep = input.int(20,          'History To Keep', minval = 5, maxval = 50)
    box_width                 = input.float(2.5,       'Supply/Demand Box Width', group = 'Settings', minval = 1, maxval = 10, step = 0.5)
    
    //INDICATOR VISUAL SETTINGS
    show_zigzag               = input.bool(false,      'Show Zig Zag', group = 'Visual Settings', inline = '1')
    show_price_action_labels  = input.bool(false,      'Show Price Action Labels', group = 'Visual Settings', inline = '2')
    
    supply_color              = input.color(#00000000, 'Supply', group = 'Visual Settings', inline = '3')
    supply_outline_color      = input.color(#00000000, 'Outline', group = 'Visual Settings', inline = '3')
    
    demand_color              = input.color(#00000000, 'Demand', group = 'Visual Settings', inline = '4')
    demand_outline_color      = input.color(#00000000, 'Outline', group = 'Visual Settings', inline = '4')
    
    bos_label_color           = input.color(#00000000, 'BOS Label', group = 'Visual Settings', inline = '5')
    poi_label_color           = input.color(#00000000, 'POI Label', group = 'Visual Settings', inline = '7')
    poi_border_color          = input.color(#00000000, 'POI border', group = 'Visual Settings', inline = '7')
    swing_type_color          = input.color(#00000000, 'Price Action Label', group = 'Visual Settings', inline = '8')
    zigzag_color              = input.color(#00000000, 'Zig Zag', group = 'Visual Settings', inline = '9')
    
    //END SETTINGS
    
    
    //      FUNCTION TO ADD NEW AND REMOVE LAST IN ARRAY
    f_array_add_pop(array, new_value_to_add) =>
        array.unshift(array, new_value_to_add)
        array.pop(array)
    
    //      FUNCTION SWING H & L LABELS
    f_sh_sl_labels(array, swing_type) =>
    
        var string label_text = na
        if swing_type == 1
            if array.get(array, 0) >= array.get(array, 1)
                label_text := 'HH'
            else
                label_text := 'LH'
            label.new(
              bar_index - swing_length,
              array.get(array,0),
              text = label_text,
              style = label.style_label_down,
              textcolor = swing_type_color,
              color = swing_type_color,
              size = size.tiny)
        
        else if swing_type == -1
            if array.get(array, 0) >= array.get(array, 1)
                label_text := 'HL'
            else
                label_text := 'LL'
            label.new(
              bar_index - swing_length,
              array.get(array,0),
              text = label_text,
              style = label.style_label_up,
              textcolor = swing_type_color,
              color = swing_type_color,
              size = size.tiny)
    
    //      FUNCTION MAKE SURE SUPPLY ISNT OVERLAPPING
    f_check_overlapping(new_poi, box_array, atrValue) =>
    
        atr_threshold = atrValue * 2
        okay_to_draw = true
    
        for i = 0 to array.size(box_array) - 1
            top = box.get_top(array.get(box_array, i))
            bottom = box.get_bottom(array.get(box_array, i))
            poi = (top + bottom) / 2
    
            upper_boundary = poi + atr_threshold
            lower_boundary = poi - atr_threshold
    
            if new_poi >= lower_boundary and new_poi <= upper_boundary
                okay_to_draw := false
                break
            else 
                okay_to_draw := true
        okay_to_draw
    
    
    //      FUNCTION TO DRAW SUPPLY OR DEMAND ZONE
    f_supply_demand(value_array, bn_array, box_array, label_array, box_type, atrValue) =>
        atr_buffer = atrValue * (box_width / 10)
        box_left   = array.get(bn_array, 0)
        box_right  = bar_index
        var float box_top = 0.00
        var float box_bottom = 0.00
        var float poi = 0.00
        if box_type == 1
            box_top := array.get(value_array, 0)
            box_bottom := box_top - atr_buffer
            poi := (box_top + box_bottom) / 2
        else if box_type == -1
            box_bottom := array.get(value_array, 0)
            box_top := box_bottom + atr_buffer
            poi := (box_top + box_bottom) / 2
        okay_to_draw = f_check_overlapping(poi, box_array, atrValue)
        // okay_to_draw = true
        //delete oldest box, and then create a new box and add it to the array
        if box_type == 1 and okay_to_draw
            box.delete( array.get(box_array, array.size(box_array) - 1) )
            f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = supply_outline_color,
                 bgcolor = supply_color, extend = extend.right, text = 'SUPPLY', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
            
            box.delete( array.get(label_array, array.size(label_array) - 1) )
            f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = poi_border_color,
                 bgcolor = poi_border_color, extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
        else if box_type == -1 and okay_to_draw
            box.delete( array.get(box_array, array.size(box_array) - 1) )
            f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = demand_outline_color,
                 bgcolor = demand_color, extend = extend.right,  text = 'DEMAND', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
            
            box.delete( array.get(label_array, array.size(label_array) - 1) )
            f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = poi_border_color,
                 bgcolor = poi_border_color, extend = extend.right,  text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
    
    
    //      FUNCTION TO CHANGE SUPPLY/DEMAND TO A BOS IF BROKEN
    f_sd_to_bos(box_array, bos_array, label_array, zone_type) =>
    
        if zone_type == 1
            for i = 0 to array.size(box_array) - 1
                level_to_break = box.get_top(array.get(box_array,i))
                // if ta.crossover(close, level_to_break)
                if close >= level_to_break
                    copied_box = box.copy(array.get(box_array,i))
                    f_array_add_pop(bos_array, copied_box)
                    mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
                    box.set_top(array.get(bos_array,0), mid)
                    box.set_bottom(array.get(bos_array,0), mid)
                    box.set_extend( array.get(bos_array,0), extend.none)
                    box.set_right( array.get(bos_array,0), bar_index)
                    box.set_text( array.get(bos_array,0), 'BOS' )
                    box.set_text_color( array.get(bos_array,0), bos_label_color)
                    box.set_text_size( array.get(bos_array,0), size.small)
                    box.set_text_halign( array.get(bos_array,0), text.align_center)
                    box.set_text_valign( array.get(bos_array,0), text.align_center)
                    box.delete(array.get(box_array, i))
                    box.delete(array.get(label_array, i))
    
    
        if zone_type == -1
            for i = 0 to array.size(box_array) - 1
                level_to_break = box.get_bottom(array.get(box_array,i))
                // if ta.crossunder(close, level_to_break)
                if close <= level_to_break
                    copied_box = box.copy(array.get(box_array,i))
                    f_array_add_pop(bos_array, copied_box)
                    mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
                    box.set_top(array.get(bos_array,0), mid)
                    box.set_bottom(array.get(bos_array,0), mid)
                    box.set_extend( array.get(bos_array,0), extend.none)
                    box.set_right( array.get(bos_array,0), bar_index)
                    box.set_text( array.get(bos_array,0), 'BOS' )
                    box.set_text_color( array.get(bos_array,0), bos_label_color)
                    box.set_text_size( array.get(bos_array,0), size.small)
                    box.set_text_halign( array.get(bos_array,0), text.align_center)
                    box.set_text_valign( array.get(bos_array,0), text.align_center)
                    box.delete(array.get(box_array, i))
                    box.delete(array.get(label_array, i))
    
    
    
    //      FUNCTION MANAGE CURRENT BOXES BY CHANGING ENDPOINT
    f_extend_box_endpoint(box_array) =>
    
        for i = 0 to array.size(box_array) - 1
            box.set_right(array.get(box_array, i), bar_index + 100)
    
    
    //
    //END FUNCTIONS
    //  
    
    
    //
    //CALCULATIONS
    //
    stratRes = timeframe.ismonthly  ? str.tostring(timeframe.multiplier * intRes, '###M') :
               timeframe.isweekly   ? str.tostring(timeframe.multiplier * intRes, '###W') :
               timeframe.isdaily    ? str.tostring(timeframe.multiplier * intRes, '###D') :
               timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes, '####') :
               '60'
    src      = h ? request.security(ticker.heikinashi(syminfo.tickerid),
               timeframe.period, close, lookahead = barmerge.lookahead_off) : close
    
    //      CALCULATE ATR 
    atrValue = ta.atr(50)
    
    //      CALCULATE SWING HIGHS & SWING LOWS
    swing_high = ta.pivothigh(high, swing_length, swing_length)
    swing_low  = ta.pivotlow(low,   swing_length, swing_length)
    
    //      ARRAYS FOR SWING H/L & BN 
    var swing_high_values  = array.new_float(5,0.00)
    var swing_low_values   = array.new_float(5,0.00)
    
    var swing_high_bns     = array.new_int(5,0)
    var swing_low_bns      = array.new_int(5,0)
    
    //      ARRAYS FOR SUPPLY / DEMAND
    var current_supply_box = array.new_box(history_of_demand_to_keep, na)
    var current_demand_box = array.new_box(history_of_demand_to_keep, na)
    
    //      ARRAYS FOR SUPPLY / DEMAND POI LABELS
    var current_supply_poi = array.new_box(history_of_demand_to_keep, na)
    var current_demand_poi = array.new_box(history_of_demand_to_keep, na)
    
    //      ARRAYS FOR BOS
    var supply_bos         = array.new_box(5, na)
    var demand_bos         = array.new_box(5, na)
    //
    //END CALCULATIONS
    //
    
    //      NEW SWING HIGH
    if not na(swing_high)
    
        //MANAGE SWING HIGH VALUES
        f_array_add_pop(swing_high_values, swing_high)
        f_array_add_pop(swing_high_bns, bar_index[swing_length])
        if show_price_action_labels
            f_sh_sl_labels(swing_high_values, 1)
    
        f_supply_demand(swing_high_values, swing_high_bns, current_supply_box, current_supply_poi, 1, atrValue)
    
    //      NEW SWING LOW
    else if not na(swing_low)
    
        //MANAGE SWING LOW VALUES
        f_array_add_pop(swing_low_values, swing_low)
        f_array_add_pop(swing_low_bns, bar_index[swing_length])
        if show_price_action_labels
            f_sh_sl_labels(swing_low_values, -1)
        
        f_supply_demand(swing_low_values, swing_low_bns, current_demand_box, current_demand_poi, -1, atrValue)
    
    
    f_sd_to_bos(current_supply_box, supply_bos, current_supply_poi, 1)
    f_sd_to_bos(current_demand_box, demand_bos, current_demand_poi, -1)
    
    f_extend_box_endpoint(current_supply_box)
    f_extend_box_endpoint(current_demand_box)
    
    // if barstate.islast
        // label.new(x = bar_index + 10, y = close[1], text = str.tostring( array.size(current_supply_poi) ))
    //     label.new(x = bar_index + 20, y = close[1], text = str.tostring( box.get_bottom( array.get(current_supply_box, 0))))
    //     label.new(x = bar_index + 30, y = close[1], text = str.tostring( box.get_bottom( array.get(current_supply_box, 1))))
    //     label.new(x = bar_index + 40, y = close[1], text = str.tostring( box.get_bottom( array.get(current_supply_box, 2))))
    //     label.new(x = bar_index + 50, y = close[1], text = str.tostring( box.get_bottom( array.get(current_supply_box, 3))))
    //     label.new(x = bar_index + 60, y = close[1], text = str.tostring( box.get_bottom( array.get(current_supply_box, 4))))
    
    // Get user input
    
    channelBal     = input.bool(false, "Channel Balance", group = "CHART")
    
    
    
    // // Functions
    // supertrend(_src, factor, atrLen) =>
        // atr = ta.atr(atrLen)
        // upperBand = _src + factor * atr
        // lowerBand = _src - factor * atr
        // prevLowerBand = nz(lowerBand[1])
        // prevUpperBand = nz(upperBand[1])
        // lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
        // upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
        // int direction = na
        // float superTrend = na
        // prevSuperTrend = superTrend[1]
        // if na(atr[1])
            // direction := 1
        // else if prevSuperTrend == prevUpperBand
            // direction := close > upperBand ? -1 : 1
        // else
            // direction := close < lowerBand ? 1 : -1
        // superTrend := direction == -1 ? lowerBand : upperBand
        // [superTrend, direction]
    lr_slope(_src, _len) =>
        x = 0.0, y = 0.0, x2 = 0.0, xy = 0.0
        for i = 0 to _len - 1
            val = _src[i]
            per = i + 1
            x += per
            y += val
            x2 += per * per
            xy += val * per
        _slp = (_len * xy - x * y) / (_len * x2 - x * x)
        _avg = y / _len
        _int = _avg - _slp * x / _len + _slp
        [_slp, _avg, _int]
    lr_dev(_src, _len, _slp, _avg, _int) =>
        upDev = 0.0, dnDev = 0.0
        val = _int
        for j = 0 to _len - 1
            price = high[j] - val
            if price > upDev
                upDev := price
            price := val - low[j]
            if price > dnDev
                dnDev := price
            price := _src[j]
            val += _slp
        [upDev, dnDev]
    
    
    // // Get Components
    // ocAvg       = math.avg(open, close)
    // sma1        = ta.sma(close, 5)
    // sma2        = ta.sma(close, 6)
    // sma3        = ta.sma(close, 7)
    // sma4        = ta.sma(close, 8)
    // sma5        = ta.sma(close, 9)
    // sma6        = ta.sma(close, 10)
    // sma7        = ta.sma(close, 11)
    // sma8        = ta.sma(close, 12)
    // sma9        = ta.sma(close, 13)
    // sma10       = ta.sma(close, 14)
    // sma11       = ta.sma(close, 15)
    // sma12       = ta.sma(close, 16)
    // sma13       = ta.sma(close, 17)
    // sma14       = ta.sma(close, 18)
    // sma15       = ta.sma(close, 19)
    // sma16       = ta.sma(close, 20)
    // psar        = ta.sar(0.02, 0.02, 0.2)
    [_, upperKC1, lowerKC1] = ta.kc(close, 80, 10.5)
    [_, upperKC2, lowerKC2] = ta.kc(close, 80, 9.5)
    [_, upperKC3, lowerKC3] = ta.kc(close, 80, 8)
    [_, upperKC4, lowerKC4] = ta.kc(close, 80, 3)
    
    barsL          = 10
    barsR          = 10
    pivotHigh      = fixnan(ta.pivothigh(barsL, barsR)[1])
    pivotLow       = fixnan(ta.pivotlow(barsL, barsR)[1])
    source         = close, period = 150
    [s, a, i]      = lr_slope(source, period)
    [upDev, dnDev] = lr_dev(source, period, s, a, i)
    
    // // Colors
    // green       = #00d9ff, green2   = #00d9ff
    // red         = #ff0090, red2     = #ff0090
    
    // // Plots
    // k1 = plot(ta.ema(upperKC1, 50), "k1", na,             editable = false)
    // k2 = plot(ta.ema(upperKC2, 50), "k2", na,             editable = false)
    // k3 = plot(ta.ema(upperKC3, 50), "k3", na,             editable = false)
    // k4 = plot(ta.ema(upperKC4, 50), "k4", na,             editable = false)
    // k5 = plot(ta.ema(lowerKC4, 50), "k5", na,             editable = false)
    // k6 = plot(ta.ema(lowerKC3, 50), "k6", na,             editable = false)
    // k7 = plot(ta.ema(lowerKC2, 50), "k7", na,             editable = false)
    // k8 = plot(ta.ema(lowerKC1, 50), "k8", na,             editable = false)
    // fill(k1, k2, channelBal ? color.new(red2,   40) : na, editable = false)
    // fill(k2, k3, channelBal ? color.new(red2,   65) : na, editable = false)
    // fill(k3, k4, channelBal ? color.new(red2,   90) : na, editable = false)
    // fill(k5, k6, channelBal ? color.new(green2, 90) : na, editable = false)
    // fill(k6, k7, channelBal ? color.new(green2, 65) : na, editable = false)
    // fill(k7, k8, channelBal ? color.new(green2, 40) : na, editable = false)
    
    y1 = low  - (ta.atr(30) * 2), y1B = low  - ta.atr(30)
    y2 = high + (ta.atr(30) * 2), y2B = high + ta.atr(30)
    x1 = bar_index - period + 1, _y1 = i + s * (period - 1), x2 = bar_index, _y2 = i
    
    //Functions
    //Line Style function
    get_line_style(style) =>
        out = switch style
            '???'  => line.style_solid
            '----' => line.style_dashed
            '    ' => line.style_dotted
    
    //Function to get order block coordinates
    get_coordinates(condition, top, btm, ob_val)=>
        var ob_top  = array.new_float(0)
        var ob_btm  = array.new_float(0)
        var ob_avg  = array.new_float(0)
        var ob_left = array.new_int(0)
    
        float ob = na
    
        //Append coordinates to arrays
        if condition
            avg = math.avg(top, btm)
            
            array.unshift(ob_top, top)
            array.unshift(ob_btm, btm)
            array.unshift(ob_avg, avg)
    
            
            ob := ob_val
        
        [ob_top, ob_btm, ob_avg, ob_left, ob]
    
    //Function to remove mitigated order blocks from coordinate arrays
    remove_mitigated(ob_top, ob_btm, ob_left, ob_avg, target, bull)=>
        mitigated = false
        target_array = bull ? ob_btm : ob_top
    
        for element in target_array
            idx = array.indexof(target_array, element)
    
            if (bull ? target < element : target > element)
                mitigated := true
    
                array.remove(ob_top, idx)
                array.remove(ob_btm, idx)
                array.remove(ob_avg, idx)
                array.remove(ob_left, idx)
        
        mitigated
    
    //Function to set order blocks
    set_order_blocks(ob_top, ob_btm, ob_left, ob_avg, ext_last, bg_css, border_css, lvl_css)=>
        var ob_box = array.new_box(0)
        var ob_lvl = array.new_line(0)
    
    //Global elements 
    var os = 0
    var target_bull = 0.
    var target_bear = 0.
    
    // // Constants colours that include fully non-transparent option.
    // green100   = #008000FF
    // lime100    = #00FF00FF
    // red100     = #FF0000FF
    // blue100    = #0000FFFF
    // aqua100    = #00FFFFFF
    // darkred100 = #8B0000FF
    // gray100    = #808080FF
    
    /////////////////////////////////////////////
    // Create non-repainting security function
    rp_security(_symbol, _res, _src) =>
        request.security(_symbol, _res, _src[barstate.isrealtime ? 1 : 0])
    
    htfHigh = rp_security(syminfo.tickerid, res, high)
    htfLow  = rp_security(syminfo.tickerid, res, low)
    
    // Main Indicator
    // Functions
    smoothrng(x, t, m) =>
        wper = t * 2 - 1
        avrng = ta.ema(math.abs(x - x[1]), t)
        smoothrng = ta.ema(avrng, wper) * m
    rngfilt(x, r) =>
        rngfilt = x
        rngfilt := x > nz(rngfilt[1]) ? x - r < nz(rngfilt[1]) ? nz(rngfilt[1]) : x - r : x + r > nz(rngfilt[1]) ? nz(rngfilt[1]) : x + r
    percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
    securityNoRep(sym, res, src) => request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_off)
    swingPoints(prd) =>
        pivHi = ta.pivothigh(prd, prd)
        pivLo = ta.pivotlow (prd, prd)
        last_pivHi = ta.valuewhen(pivHi, pivHi, 1)
        last_pivLo = ta.valuewhen(pivLo, pivLo, 1)
        hh = pivHi and pivHi > last_pivHi ? pivHi : na
        lh = pivHi and pivHi < last_pivHi ? pivHi : na
        hl = pivLo and pivLo > last_pivLo ? pivLo : na
        ll = pivLo and pivLo < last_pivLo ? pivLo : na
        [hh, lh, hl, ll]
    f_chartTfInMinutes() =>
        float _resInMinutes = timeframe.multiplier * (
          timeframe.isseconds ? 1                   :
          timeframe.isminutes ? 1.                  :
          timeframe.isdaily   ? 60. * 24            :
          timeframe.isweekly  ? 60. * 24 * 7        :
          timeframe.ismonthly ? 60. * 24 * 30.4375  : na)
    f_kc(src, len, sensitivity) =>
        basis = ta.sma(src, len)
        span  = ta.atr(len)
        [basis + span * sensitivity, basis - span * sensitivity]
    wavetrend(src, chlLen, avgLen) =>
        esa = ta.ema(src, chlLen)
        d = ta.ema(math.abs(src - esa), chlLen)
        ci = (src - esa) / (0.015 * d)
        wt1 = ta.ema(ci, avgLen)
        wt2 = ta.sma(wt1, 3)
        [wt1, wt2]
    f_top_fractal(_src) => _src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0]
    f_bot_fractal(_src) => _src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0]
    top_fractal    = f_top_fractal(src)
    bot_fractal    = f_bot_fractal(src)
    f_fractalize (_src) => top_fractal ? 1 : bot_fractal ? -1 : 0
    f_findDivs(src, topLimit, botLimit) =>
        fractalTop = f_fractalize(src) > 0 and src[2] >= topLimit ? src[2] : na
        fractalBot = f_fractalize(src) < 0 and src[2] <= botLimit ? src[2] : na
        highPrev   = ta.valuewhen(fractalTop, src[2], 0)[2]
        highPrice  = ta.valuewhen(fractalTop, high[2], 0)[2]
        lowPrev    = ta.valuewhen(fractalBot, src[2], 0)[2]
        lowPrice   = ta.valuewhen(fractalBot, low[2], 0)[2]
        bearSignal = fractalTop and high[1] > highPrice and src[1] < highPrev
        bullSignal = fractalBot and low[1] < lowPrice and src[1] > lowPrev
        [bearSignal, bullSignal]
        // Get user input
    enableSR   = input(false          , "SR On/Off", group="SR")
    colorSup   = input(#00000000        , "Support Color", group="SR")
    colorRes   = input(#00000000        , "Resistance Color", group="SR")
    strengthSR = input.int(2          , "S/R Strength", 1, group="SR")
    lineStyle  = input.string("Dotted", "Line Style", ["Solid", "Dotted", "Dashed"], group="SR")
    lineWidth  = input.int(2          , "S/R Line Width", 1, group="SR")
    useZones   = input(true           , "Zones On/Off", group="SR")
    useHLZones = input(true           , "High Low Zones On/Off", group="SR")
    zoneWidth  = input.int(2          , "Zone Width %", 0,
       tooltip = "it's calculated using % of the distance between highest/lowest in last 300 bars", group="SR")
    expandSR   = input(true           , "Expand SR")
    // Get components
    rb         = 10
    prd        = 284
    ChannelW   = 10
    label_loc  = 55
    style      = lineStyle == "Solid"  ? line.style_solid  :
                 lineStyle == "Dotted" ? line.style_dotted : line.style_dashed
    ph         = ta.pivothigh(rb, rb)
    pl         = ta.pivotlow (rb, rb)
    sr_levels  = array.new_float(21, na)
    prdhighest = ta.highest(prd)
    prdlowest  = ta.lowest(prd)
    cwidth     = percWidth(prd, ChannelW)
    zonePerc   = percWidth(300, zoneWidth)
    aas        = array.new_bool(41, true)
    u1         = 0.0, u1 := nz(u1[1])
    d1         = 0.0, d1 := nz(d1[1])
    highestph  = 0.0, highestph := highestph[1]
    lowestpl   = 0.0, lowestpl := lowestpl[1]
    
    var sr_levs   = array.new_float(21, na)
    label hlabel  = na, label.delete(hlabel[1])
    label llabel  = na, label.delete(llabel[1])
    var sr_lines  = array.new_line(21, na)
    var sr_linesH = array.new_line(21, na)
    var sr_linesL = array.new_line(21, na)
    var sr_linesF = array.new_linefill(21, na)
    var sr_labels = array.new_label(21, na)
    if ph or pl
        for x = 0 to array.size(sr_levels) - 1
            array.set(sr_levels, x, na)
        highestph := prdlowest
        lowestpl := prdhighest
        countpp = 0
        for x = 0 to prd
            if na(close[x])
                break
            if not na(ph[x]) or not na(pl[x])
                highestph := math.max(highestph, nz(ph[x], prdlowest), nz(pl[x], prdlowest))
                lowestpl := math.min(lowestpl, nz(ph[x], prdhighest), nz(pl[x], prdhighest))
                countpp += 1
                if countpp > 40
                    break
                if array.get(aas, countpp)
                    upl = (ph[x] ? high[x + rb] : low[x + rb]) + cwidth
                    dnl = (ph[x] ? high[x + rb] : low[x + rb]) - cwidth
                    u1 := countpp == 1 ? upl : u1
                    d1 := countpp == 1 ? dnl : d1
                    tmp = array.new_bool(41, true)
                    cnt = 0
                    tpoint = 0
                    for xx = 0 to prd
                        if na(close[xx])
                            break
                        if not na(ph[xx]) or not na(pl[xx])
                            chg = false
                            cnt += 1
                            if cnt > 40
                                break
                            if array.get(aas, cnt)
                                if not na(ph[xx])
                                    if high[xx + rb] <= upl and high[xx + rb] >= dnl
                                        tpoint += 1
                                        chg := true
                                if not na(pl[xx])
                                    if low[xx + rb] <= upl and low[xx + rb] >= dnl
                                        tpoint += 1
                                        chg := true
                            if chg and cnt < 41
                                array.set(tmp, cnt, false)
                    if tpoint >= strengthSR
                        for g = 0 to 40 by 1
                            if not array.get(tmp, g)
                                array.set(aas, g, false)
                        if ph[x] and countpp < 21
                            array.set(sr_levels, countpp, high[x + rb])
                        if pl[x] and countpp < 21
                            array.set(sr_levels, countpp, low[x + rb])
    // Plot
    var line highest_      = na, line.delete(highest_)
    var line lowest_       = na, line.delete(lowest_)
    var line highest_fill1 = na, line.delete(highest_fill1)
    var line highest_fill2 = na, line.delete(highest_fill2)
    var line lowest_fill1  = na, line.delete(lowest_fill1)
    var line lowest_fill2  = na, line.delete(lowest_fill2)
    hi_col = close >= highestph ? colorSup : colorRes
    lo_col = close >= lowestpl  ? colorSup : colorRes
    if enableSR
        highest_ := line.new(bar_index - 311, highestph, bar_index, highestph, xloc.bar_index, expandSR ? extend.both : extend.right, hi_col, style, lineWidth)
        lowest_  := line.new(bar_index - 311, lowestpl , bar_index, lowestpl , xloc.bar_index, expandSR ? extend.both : extend.right, lo_col, style, lineWidth)
        if useHLZones
            highest_fill1 := line.new(bar_index - 311, highestph + zonePerc, bar_index, highestph + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
            highest_fill2 := line.new(bar_index - 311, highestph - zonePerc, bar_index, highestph - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
            lowest_fill1  := line.new(bar_index - 311, lowestpl + zonePerc , bar_index, lowestpl + zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
            lowest_fill2  := line.new(bar_index - 311, lowestpl - zonePerc , bar_index, lowestpl - zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
            linefill.new(highest_fill1, highest_fill2, hi_col)
            linefill.new(lowest_fill1 , lowest_fill2 , lo_col)
    if ph or pl
        for x = 0 to array.size(sr_lines) - 1
            array.set(sr_levs, x, array.get(sr_levels, x))
    for x = 0 to array.size(sr_lines) - 1
        line.delete(array.get(sr_lines, x))
        line.delete(array.get(sr_linesH, x))
        line.delete(array.get(sr_linesL, x))
        linefill.delete(array.get(sr_linesF, x))
        if array.get(sr_levs, x) and enableSR
            line_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
            array.set(sr_lines, x, line.new(bar_index - 355, array.get(sr_levs, x), bar_index, array.get(sr_levs, x), xloc.bar_index, expandSR ? extend.both : extend.right, line_col, style, lineWidth))
            if useZones
                array.set(sr_linesH, x, line.new(bar_index - 355, array.get(sr_levs, x) + zonePerc, bar_index, array.get(sr_levs, x) + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
                array.set(sr_linesL, x, line.new(bar_index - 355, array.get(sr_levs, x) - zonePerc, bar_index, array.get(sr_levs, x) - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
                array.set(sr_linesF, x, linefill.new(array.get(sr_linesH, x), array.get(sr_linesL, x), line_col))
    for x = 0 to array.size(sr_labels) - 1
        label.delete(array.get(sr_labels, x))
        if array.get(sr_levs, x) and enableSR
            lab_loc = close >= array.get(sr_levs, x) ? label.style_label_up : label.style_label_down
            lab_col = close >= array.get(sr_levs, x) ? colorSup             : colorRes
            array.set(sr_labels, x, label.new(bar_index + label_loc, array.get(sr_levs, x), str.tostring(math.round_to_mintick(array.get(sr_levs, x))), color=lab_col , textcolor=#000000, style=lab_loc))
    hlabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, highestph, "High Level : " + str.tostring(highestph), color=hi_col, textcolor=#000000, style=label.style_label_down) : na
    llabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, lowestpl , "Low  Level : " + str.tostring(lowestpl) , color=lo_col, textcolor=#000000, style=label.style_label_up  ) : na
    
    
    // Get components
    rsi       = ta.rsi(close, 28)
    //rsiOb     = rsi > 78 and rsi > ta.ema(rsi, 10)
    //rsiOs     = rsi < 27 and rsi < ta.ema(rsi, 10)
    rsiOb     = rsi > 65 and rsi > ta.ema(rsi, 10)
    rsiOs     = rsi < 35 and rsi < ta.ema(rsi, 10)
    dHigh     = securityNoRep(syminfo.tickerid, "D", high [1])
    dLow      = securityNoRep(syminfo.tickerid, "D", low  [1])
    dClose    = securityNoRep(syminfo.tickerid, "D", close[1])
    ema = ta.ema(close, 144)
    emaBull = close > ema
    equal_tf(res) => str.tonumber(res) == f_chartTfInMinutes() and not timeframe.isseconds
    higher_tf(res) => str.tonumber(res) > f_chartTfInMinutes() or timeframe.isseconds
    too_small_tf(res) => (timeframe.isweekly and res=="1") or (timeframe.ismonthly and str.tonumber(res) < 10)
    securityNoRep1(sym, res, src) =>
        bool bull_ = na
        bull_ := equal_tf(res) ? src : bull_
        bull_ := higher_tf(res) ? request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_off) : bull_
        bull_array = request.security_lower_tf(syminfo.tickerid, higher_tf(res) ? str.tostring(f_chartTfInMinutes()) + (timeframe.isseconds ? "S" : "") : too_small_tf(res) ? (timeframe.isweekly ? "3" : "10") : res, src)
        if array.size(bull_array) > 1 and not equal_tf(res) and not higher_tf(res)
            bull_ := array.pop(bull_array)
        array.clear(bull_array)
        bull_
    // TF1Bull   = securityNoRep1(syminfo.tickerid, "1"   , emaBull)
    // TF3Bull   = securityNoRep1(syminfo.tickerid, "3"   , emaBull)
    // TF5Bull   = securityNoRep1(syminfo.tickerid, "5"   , emaBull)
    // TF15Bull  = securityNoRep1(syminfo.tickerid, "15"  , emaBull)
    // TF30Bull  = securityNoRep1(syminfo.tickerid, "30"  , emaBull)
    // TF60Bull  = securityNoRep1(syminfo.tickerid, "60"  , emaBull)
    // TF120Bull = securityNoRep1(syminfo.tickerid, "120" , emaBull)
    // TF240Bull = securityNoRep1(syminfo.tickerid, "240" , emaBull)
    // TF480Bull = securityNoRep1(syminfo.tickerid, "480" , emaBull)
    // TFDBull   = securityNoRep1(syminfo.tickerid, "1440", emaBull)
    // [wt1, wt2] = wavetrend(close, 5, 10)
    // [wtDivBear1, wtDivBull1] = f_findDivs(wt2, 15, -40)
    // [wtDivBear2, wtDivBull2] = f_findDivs(wt2, 45, -65)
    // wtDivBull = wtDivBull1 or wtDivBull2
    // wtDivBear = wtDivBear1 or wtDivBear2
    ////////////////////////////////////////////////////////
    // === BASE FUNCTIONS ===
    // Returns MA input selection variant, default to SMA if blank or typo.
    variant(type, src, len, offSig, offALMA) =>
        v1    = ta.sma(src, len)  // Simple
        v2    = ta.ema(src, len)  // Exponential
        v3    = 2 * v2 - ta.ema(v2, len)  // Double Exponential
        v4    = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len)  // Triple Exponential
        v5    = ta.wma(src, len)  // Weighted
        v6    = ta.vwma(src, len)  // Volume Weighted
        v7    = 0.0
        sma_1 = ta.sma(src, len)  // Smoothed
        v7   := na(v7[1]) ? sma_1 : (v7[1] * (len - 1) + src) / len
        v8    = ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))  // Hull
        v9    = ta.linreg(src, len, offSig)  // Least Squares
        v10   = ta.alma(src, len, offALMA, offSig)  // Arnaud Legoux
        v11   = ta.sma(v1, len)  // Triangular (extreme smooth)
        // SuperSmoother filter
        //   2013  John F. Ehlers
        a1    = math.exp(-1.414 * 3.14159 / len)
        b1    = 2 * a1 * math.cos(1.414 * 3.14159 / len)
        c2    = b1
        c3    = -a1 * a1
        c1    = 1 - c2 - c3
        v12   = 0.0
        v12  := c1 * (src + nz(src[1])) / 2 + c2 * nz(v12[1]) + c3 * nz(v12[2])
        type == 'EMA' ? v2 : type == 'DEMA' ? v3 : type == 'TEMA' ? v4 : type == 'WMA' ? v5 : type == 'VWMA' ? v6 : type == 'SMMA' ? v7 : type == 'HullMA' ? v8 : type == 'LSMA' ? v9 : type == 'ALMA' ? v10 : type == 'TMA' ? v11 : type == 'SSMA' ? v12 : v1
    
    // security wrapper for repeat calls
    reso(exp, use, res) =>
        security_1 = request.security(syminfo.tickerid, res, exp, gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_off)
        use ? security_1 : exp
    
    // === /BASE FUNCTIONS ===
    // === SERIES SETUP ===
    closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA)
    openSeries  = variant(basisType, open[delayOffset],  basisLen, offsetSigma, offsetALMA)
    // === /SERIES ===
    
    // Get Alternate resolution Series if selected.
    closeSeriesAlt = reso(closeSeries, useRes, stratRes)
    openSeriesAlt  = reso(openSeries, useRes, stratRes)
    //
    // // === ALERT conditions
    // xlong     = ta.crossover(closeSeriesAlt, openSeriesAlt)
    // xshort    = ta.crossunder(closeSeriesAlt, openSeriesAlt)
    // // longCond  = xlong  // alternative: longCond[1]? false : (xlong or xlong[1]) and close>closeSeriesAlt and close>=open
    // // shortCond = xshort  // alternative: shortCond[1]? false : (xshort or xshort[1]) and close<closeSeriesAlt and close<=open
    // // // === /ALERT conditions.
    // buy       = ta.crossover(closeSeriesAlt, openSeriesAlt)
    // sell      = ta.crossunder(closeSeriesAlt, openSeriesAlt)
    
    // plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= #00DBFF, textcolor = #FFFFFF, transp = 0, size = size.tiny)
    // plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= #E91E63, textcolor = #FFFFFF, transp = 0, size = size.tiny)
    
    // plotcandle(
      // open, high, low, close,
      // title     = 'plotcandle',
      // color     = close > open ? color.rgb(120, 9, 139) : color.rgb(69, 155, 225),
      // wickcolor = close > open ? color.rgb(120, 9, 139) : color.rgb(69, 155, 225))
    
    
    // // === STRATEGY ===
    // // stop loss
    // slPoints = input.int(defval=0, title = 'Initial Stop Loss Points (zero to disable)', minval=0)
    // tpPoints = input.int(defval=0, title = 'Initial Target Profit Points (zero for disable)', minval=0)
    // // Include bar limiting algorithm
    // ebar     = input.int(defval=4000, title = 'Number of Bars for Back Testing', minval=0)
    // dummy    = input    (false, title = '- SET to ZERO for Daily or Longer Timeframes')
    // //
    // // Calculate how many mars since last bar
    // tdays    = (timenow - time) / 60000.0  // number of minutes since last bar
    // tdays   := timeframe.ismonthly ? tdays / 1440.0 / 5.0 / 4.3 / timeframe.multiplier :
               // timeframe.isweekly  ? tdays / 1440.0 / 5.0 / timeframe.multiplier       :
               // timeframe.isdaily   ? tdays / 1440.0 / timeframe.multiplier             :
               // tdays / timeframe.multiplier  // number of bars since last bar
    // //
    // //set up exit parameters
    // TP = tpPoints > 0 ? tpPoints : na
    // SL = slPoints > 0 ? slPoints : na
    
    // // === /STRATEGY ===
    // ////////////////////////////////////////////////////////////////////////////////
    // // to automate put this in trendinview message:     {{strategy.order.alert_message}}
    // i_alert_txt_entry_long  = input.text_area(defval = "", title = "Long Entry Message",  group = "Alerts")
    // i_alert_txt_entry_short = input.text_area(defval = "", title = "Short Entry Message", group = "Alerts")
    
    // // Entries and Exits with TP/SL
    // if buy
        // //strategy.close("Short" , alert_message = i_alert_txt_exit_short)
        // strategy.entry("Long" , strategy.long , alert_message = i_alert_txt_entry_long)
        // alert(message = "Long position")
    
    // if sell
        // //strategy.close("Long" , alert_message = i_alert_txt_exit_long)
        // strategy.entry("Short" , strategy.short, alert_message = i_alert_txt_entry_short)
        // alert(message = "SHort position")
    
    
    //#endregion }
    // ——————————— <↑↑↑ G_SCRIPT01 ↑↑↑>
    
    //<triggers>
    lxTrigger    = false
    sxTrigger    = false
    leTrigger    = ta.crossover (closeSeriesAlt, openSeriesAlt)
    seTrigger    = ta.crossunder(closeSeriesAlt, openSeriesAlt)
    
    G_RISK       = '■ ' + 'Risk Management'
    //#region ———— <↓↓↓ G_RISK ↓↓↓> {
    
    // ——————————— <constant_declarations>
    //Tooltip
    T_LVL        = '(%) Exit Level'
    T_QTY        = '(%) Adjust trade exit volume'
    T_MSG        = 'Paste JSON message for your bot'
    
    //Webhook Message
    O_LEMSG      = 'Long'
    O_LXMSGSL    = 'Long SL'
    O_LXMSGTP1   = 'Long TP1'
    O_LXMSGTP2   = 'Long TP2'
    O_LXMSGTP3   = 'Long TP3'
    O_LXMSG      = 'Long Exit'
    O_SEMSG      = 'Short'
    O_SXMSGSL    = 'Short SL'
    O_SXMSGA     = 'Short TP1'
    O_SXMSGB     = 'Short TP2'
    O_SXMSGC     = 'Short TP3'
    O_SXMSGX     = 'Short Exit'
    
    // ——————————— <input>          |           |                               |                        Line length guide |
    i_lxLvlTP1   = input.float      (0.5,         'Level TP1'                     , group = G_RISK,
         tooltip =                   T_LVL)
    i_lxQtyTP1   = input.float      (80,        'Qty   TP1'                     , group = G_RISK,
         tooltip =                   T_QTY)
    i_lxLvlTP2   = input.float      (1.0,       'Level TP2'                     , group = G_RISK,
         tooltip =                   T_LVL)
    i_lxQtyTP2   = input.float      (10,        'Qty   TP2'                     , group = G_RISK,
         tooltip =                   T_QTY)
    i_lxLvlTP3   = input.float      (4,         'Level TP3'                     , group = G_RISK,
         tooltip =                   T_LVL)
    i_lxQtyTP3   = input.float      (10,        'Qty   TP3'                     , group = G_RISK,
         tooltip =                   T_QTY)
    i_lxLvlSL    = input.float      (0.5,       'Stop Loss'                     , group = G_RISK,
         tooltip =                   T_LVL)
    i_sxLvlTP1   = i_lxLvlTP1
    i_sxQtyTP1   = i_lxQtyTP1
    i_sxLvlTP2   = i_lxLvlTP2
    i_sxQtyTP2   = i_lxQtyTP2
    i_sxLvlTP3   = i_lxLvlTP3
    i_sxQtyTP3   = i_lxQtyTP3
    i_sxLvlSL    = i_lxLvlSL
    
    G_MSG        = '■ ' + 'Webhook Message'
    i_leMsg      = input.string     (O_LEMSG   ,'long'                         , group = G_MSG, tooltip = T_MSG)
    i_lxMsgSL    = input.string     (O_LXMSGSL ,'Long SL'                      , group = G_MSG, tooltip = T_MSG)
    i_lxMsgTP1   = input.string     (O_LXMSGTP1,'Long TP1'                     , group = G_MSG, tooltip = T_MSG)
    i_lxMsgTP2   = input.string     (O_LXMSGTP2,'Long TP2'                     , group = G_MSG, tooltip = T_MSG)
    i_lxMsgTP3   = input.string     (O_LXMSGTP3,'Long TP3'                     , group = G_MSG, tooltip = T_MSG)
    i_lxMsg      = input.string     (O_LXMSG   ,'Long Exit'                    , group = G_MSG, tooltip = T_MSG)
    i_seMsg      = input.string     (O_SEMSG   ,'Short'                        , group = G_MSG, tooltip = T_MSG)
    i_sxMsgSL    = input.string     (O_SXMSGSL ,'Short SL'                     , group = G_MSG, tooltip = T_MSG)
    i_sxMsgTP1   = input.string     (O_SXMSGA  ,'Short TP1'                    , group = G_MSG, tooltip = T_MSG)
    i_sxMsgTP2   = input.string     (O_SXMSGB  ,'Short TP2'                    , group = G_MSG, tooltip = T_MSG)
    i_sxMsgTP3   = input.string     (O_SXMSGC  ,'Short TP3'                    , group = G_MSG, tooltip = T_MSG)
    i_sxMsg      = input.string     (O_SXMSGX  ,'Short Exit'                   , group = G_MSG, tooltip = T_MSG)
    i_src        = close
    
    G_DISPLAY    = 'Display'
    //<display>
    i_alertOn    = input.bool       (true,      'Alert Labels On/Off'          , group = G_DISPLAY)
    i_barColOn   = input.bool       (true,      'Bar Color On/Off'             , group = G_DISPLAY)
    
    // ——————————— <function_declarations>
    // @function        Calculate the Take Profit line, and the crossover or crossunder
    f_tp(_condition, _conditionValue, _leTrigger, _seTrigger, _src, _lxLvlTP, _sxLvlTP)=>
        var float _tpLine = 0.0
        _topLvl     = _src + (_src * (_lxLvlTP / 100))
        _botLvl     = _src - (_src * (_sxLvlTP / 100))
        _tpLine    := _condition[1] !=  _conditionValue and _leTrigger ? _topLvl :
                      _condition[1] != -_conditionValue and _seTrigger ? _botLvl :
                      nz(_tpLine[1])
        [_tpLine]
    
    // @function        Similar to "ta.crossover" or "ta.crossunder"
    f_cross(_scr1, _scr2, _over)=>
        _cross   = _over ? _scr1 > _scr2 and _scr1[1] < _scr2[1] :
                           _scr1 < _scr2 and _scr1[1] > _scr2[1]
    
    // ——————————— <calculations>
    //<set initial values>
    var float condition = 0.0
    var float slLine    = 0.0
    var float entryLine = 0.0
    
    //<entry & exit orders>
    entryLine   := leTrigger and condition[1] <=  0.0 ? close :
                   seTrigger and condition[1] >=  0.0 ? close : nz(entryLine[1])
    //<SL>
    slTopLvl    = i_src + (i_src * (i_lxLvlSL / 100))
    slBotLvl    = i_src - (i_src * (i_sxLvlSL / 100))
    slLine     := condition[1] <=  0.0 and leTrigger ? slBotLvl :
                  condition[1] >=  0.0 and seTrigger ? slTopLvl : nz(slLine[1])
    slLong      = f_cross(low,  slLine, false)
    slShort     = f_cross(high, slLine, true )
    //<TP1, TP2 & TP3>
    [tp3Line]    = f_tp(condition, 1.2,leTrigger, seTrigger, i_src, i_lxLvlTP3, i_sxLvlTP3)
    [tp2Line]    = f_tp(condition, 1.1,leTrigger, seTrigger, i_src, i_lxLvlTP2, i_sxLvlTP2)
    [tp1Line]    = f_tp(condition, 1.0,leTrigger, seTrigger, i_src, i_lxLvlTP1, i_sxLvlTP1)
    tp3Long      = f_cross(high, tp3Line, true )
    tp3Short     = f_cross(low,  tp3Line, false)
    tp2Long      = f_cross(high, tp2Line, true )
    tp2Short     = f_cross(low,  tp2Line, false)
    tp1Long      = f_cross(high, tp1Line, true )
    tp1Short     = f_cross(low,  tp1Line, false)
    
    switch
        leTrigger and condition[1] <=  0.0 => condition :=  1.0
        seTrigger and condition[1] >=  0.0 => condition := -1.0
        tp3Long   and condition[1] ==  1.2 => condition :=  1.3
        tp3Short  and condition[1] == -1.2 => condition := -1.3
        tp2Long   and condition[1] ==  1.1 => condition :=  1.2
        tp2Short  and condition[1] == -1.1 => condition := -1.2
        tp1Long   and condition[1] ==  1.0 => condition :=  1.1
        tp1Short  and condition[1] == -1.0 => condition := -1.1
        slLong    and condition[1] >=  1.0 => condition :=  0.0
        slShort   and condition[1] <= -1.0 => condition :=  0.0
        lxTrigger and condition[1] >=  1.0 => condition :=  0.0
        sxTrigger and condition[1] <= -1.0 => condition :=  0.0
    
    longE        = leTrigger and condition[1] <=  0.0 and condition ==  1.0
    shortE       = seTrigger and condition[1] >=  0.0 and condition == -1.0
    longX        = lxTrigger and condition[1] >=  1.0 and condition ==  0.0
    shortX       = sxTrigger and condition[1] <= -1.0 and condition ==  0.0
    longSL       = slLong    and condition[1] >=  1.0 and condition ==  0.0
    shortSL      = slShort   and condition[1] <= -1.0 and condition ==  0.0
    longTP3      = tp3Long   and condition[1] ==  1.2 and condition ==  1.3
    shortTP3     = tp3Short  and condition[1] == -1.2 and condition == -1.3
    longTP2      = tp2Long   and condition[1] ==  1.1 and condition ==  1.2
    shortTP2     = tp2Short  and condition[1] == -1.1 and condition == -1.2
    longTP1      = tp1Long   and condition[1] ==  1.0 and condition ==  1.1
    shortTP1     = tp1Short  and condition[1] == -1.0 and condition == -1.1
    
    // ——————————— <strategy_calls> {
    //<long orders>
    if strategy.position_size <= 0 and longE and barstate.isconfirmed
        strategy.entry(
          'Long',
          strategy.long,
          alert_message    = i_leMsg,
          comment          = 'LE')
    if strategy.position_size > 0 and condition ==  1.0
        strategy.exit(
          id               = 'LXTP1',
          from_entry       = 'Long',
          qty_percent      = i_lxQtyTP1,
          limit            = tp1Line,
          stop             = slLine,
          comment_profit   = 'LXTP1',
          comment_loss     = 'SL',
          alert_profit     = i_lxMsgTP1,
          alert_loss       = i_lxMsgSL)
    if strategy.position_size > 0 and condition ==  1.1
        strategy.exit(
          id               = 'LXTP2',
          from_entry       = 'Long',
          qty_percent      = i_lxQtyTP2,
          limit            = tp2Line,
          stop             = slLine,
          comment_profit   = 'LXTP2',
          comment_loss     = 'SL',
          alert_profit     = i_lxMsgTP2,
          alert_loss       = i_lxMsgSL)
    if strategy.position_size > 0 and condition ==  1.2
        strategy.exit(
          id               = 'LXTP3',
          from_entry       = 'Long',
          qty_percent      = i_lxQtyTP3,
          limit            = tp3Line,
          stop             = slLine,
          comment_profit   = 'LXTP3',
          comment_loss     = 'SL',
          alert_profit     = i_lxMsgTP3,
          alert_loss       = i_lxMsgSL)
    if longX
        strategy.close(
          'Long',
          alert_message    = i_lxMsg,
          comment          = 'LX')
    //<short orders>
    if strategy.position_size >= 0 and shortE and barstate.isconfirmed
        strategy.entry(
          'Short',
          strategy.short,
          alert_message    = i_leMsg,
          comment          = 'SE')
    if strategy.position_size < 0 and condition == -1.0
        strategy.exit(
          id               = 'SXTP1',
          from_entry       = 'Short',
          qty_percent      = i_sxQtyTP1,
          limit            = tp1Line,
          stop             = slLine,
          comment_profit   = 'SXTP1',
          comment_loss     = 'SL',
          alert_profit     = i_sxMsgTP1,
          alert_loss       = i_sxMsgSL)
    if strategy.position_size < 0 and condition == -1.1
        strategy.exit(
          id               = 'SXTP2',
          from_entry       = 'Short',
          qty_percent      = i_sxQtyTP2,
          limit            = tp2Line,
          stop             = slLine,
          comment_profit   = 'SXTP2',
          comment_loss     = 'SL',
          alert_profit     = i_sxMsgTP2,
          alert_loss       = i_sxMsgSL)
    if strategy.position_size < 0 and condition == -1.2
        strategy.exit(
          id               = 'SXTP3',
          from_entry       = 'Short',
          qty_percent      = i_sxQtyTP3,
          limit            = tp3Line,
          stop             = slLine,
          comment_profit   = 'SXTP3',
          comment_loss     = 'SL',
          alert_profit     = i_sxMsgTP3,
          alert_loss       = i_sxMsgSL)
    if shortX
        strategy.close(
          'Short',
          alert_message    = i_sxMsg,
          comment          = 'SX')
    
    // ——————————— <visuals>
    c_tp         = leTrigger or seTrigger ? na :
                   condition == 0.0       ? na : color.green
    c_entry      = leTrigger or seTrigger ? na :
                   condition == 0.0       ? na : color.blue
    c_sl         = leTrigger or seTrigger ? na :
                   condition == 0.0       ? na : color.red
    p_tp1Line    = plot (
      condition ==  1.0 or
      condition == -1.0 ? tp1Line : na,
      title      = "TP Line 1",
      color      = c_tp,
      linewidth  = 1,
      style      = plot.style_linebr)
    p_tp2Line    = plot (
      condition ==  1.0 or
      condition == -1.0 or
      condition ==  1.1 or
      condition == -1.1 ? tp2Line : na,
      title      = "TP Line 2",
      color      = c_tp,
      linewidth  = 1,
      style      = plot.style_linebr)
    p_tp3Line    = plot (
      condition ==  1.0 or
      condition == -1.0 or
      condition ==  1.1 or
      condition == -1.1 or
      condition ==  1.2 or
      condition == -1.2 ? tp3Line : na,
      title      = "TP Line 3",
      color      = c_tp,
      linewidth  = 1,
      style      = plot.style_linebr)
    p_entryLine  = plot (
      condition >=  1.0 or
      condition <= -1.0 ? entryLine : na,
      title      = "Entry Line",
      color      = c_entry,
      linewidth  = 1,
      style      = plot.style_linebr)
    p_slLine     = plot (
      condition ==  1.0 or
      condition == -1.0 or
      condition ==  1.1 or
      condition == -1.1 or
      condition ==  1.2 or
      condition == -1.2 ? slLine : na,
      title      = "SL Line",
      color      = c_sl,
      linewidth  = 1,
      style      = plot.style_linebr)
    fill(
      p_tp3Line, p_entryLine,
      color      = leTrigger or seTrigger ? na :color.new(color.green, 90))
    fill(
      p_entryLine, p_slLine,
      color      = leTrigger or seTrigger ? na :color.new(color.red, 90))
    
    //<alerts labels>
    plotshape(
      i_alertOn and longE,
      title      = 'Long',
      text       = 'Long',
      textcolor  = color.white,
      color      = color.green,
      style      = shape.labelup,
      size       = size.tiny,
      location   = location.belowbar)
    plotshape(
      i_alertOn and shortE,
      title      = 'Short',
      text       = 'Short',
      textcolor  = color.white,
      color      = color.red,
      style      = shape.labeldown,
      size       = size.tiny,
      location   = location.abovebar)
    plotshape(
      i_alertOn and (longX or shortX) ? close : na,
      title      = 'Close',
      text       = 'Close',
      textcolor  = color.white,
      color      = color.gray,
      style      = shape.square,
      size       = size.tiny,
      location   = location.absolute)
    l_tp         = i_alertOn and (longTP1 or shortTP1) ? close : na
    plotshape(
      l_tp,
      title      = "TP1 Cross",
      text       = "TP1",
      textcolor  = color.white,
      color      = color.olive,
      style      = shape.square,
      size       = size.tiny,
      location   = location.abovebar)
    plotshape(
      i_alertOn and (longTP2 or shortTP2) ? close : na,
      title      = "TP2 Cross",
      text       = "TP2",
      textcolor  = color.white,
      color      = color.olive,
      style      = shape.square,
      size       = size.tiny,
      location   = location.abovebar)
    plotshape(
      i_alertOn and (longTP3 or shortTP3) ? close : na,
      title      = "TP3 Cross",
      text       = "TP3",
      textcolor  = color.white,
      color      = color.olive,
      style      = shape.square,
      size       = size.tiny,
      location   = location.abovebar)
    plotshape(
      i_alertOn and (longSL or shortSL) ? close : na,
      title      = "SL Cross",
      text       = "SL",
      textcolor  = color.white,
      color      = color.maroon,
      style      = shape.square,
      size       = size.tiny,
      location   = location.abovebar)
    
    //<debug>
    plot(
      na,
      title      = "─── <debug> ───",
      editable   = false,
      display    = display.data_window)
    plot(
      condition,
      title      = "condition",
      editable   = false,
      display    = display.data_window)
    plot(
      strategy.position_size * 100,
      title      = ".position_size",
      editable   = false,
      display    = display.data_window)
    //#endregion }
    // ——————————— <↑↑↑ G_RISK ↑↑↑>
    
    //#region ———— <↓↓↓ G_SCRIPT02 ↓↓↓> {
    // @function        Queues a new element in an array and de-queues its first element.
    f_qDq(_array, _val) =>
        array.push(_array, _val)
        _return = array.shift(_array)
        _return
    
    var line[]  a_slLine     = array.new_line(1)
    var line[]  a_entryLine  = array.new_line(1)
    var line[]  a_tp3Line    = array.new_line(1)
    var line[]  a_tp2Line    = array.new_line(1)
    var line[]  a_tp1Line    = array.new_line(1)
    var label[] a_slLabel    = array.new_label(1)
    var label[] a_tp3label   = array.new_label(1)
    var label[] a_tp2label   = array.new_label(1)
    var label[] a_tp1label   = array.new_label(1)
    var label[] a_entryLabel = array.new_label(1)
    
    newEntry     = longE or shortE
    entryIndex   = 1
    entryIndex  := newEntry ? bar_index : nz(entryIndex[1])
    lasTrade     = bar_index >= entryIndex
    l_right      = 10
    
    line.delete(
      f_qDq(a_slLine,
      line.new(
       entryIndex,
       slLine,
       last_bar_index + l_right,
       slLine,
       style = line.style_dotted,
       color = c_sl)))
    line.delete(
      f_qDq(a_entryLine,
      line.new(
       entryIndex,
       entryLine,
       last_bar_index + l_right,
       entryLine,
       style = line.style_dotted,
       color = color.blue)))
    line.delete(
      f_qDq(a_tp3Line,
      line.new(
       entryIndex,
       tp3Line,
       last_bar_index + l_right,
       tp3Line,
       style = line.style_dotted,
       color = c_tp)))
    line.delete(
      f_qDq(a_tp2Line,
      line.new(
       entryIndex,
       tp2Line,
       last_bar_index + l_right,
       tp2Line,
       style = line.style_dotted,
       color = c_tp)))
    line.delete(
      f_qDq(a_tp1Line,
      line.new(
       entryIndex,
       tp1Line,
       last_bar_index + l_right,
       tp1Line,
       style = line.style_dotted,
       color = c_tp)))
    
    label.delete(
      f_qDq(a_slLabel,
      label.new(
       last_bar_index + l_right,
       slLine,
       'SL: ' + str.tostring(slLine, '##.#####'),
       style = label.style_label_left,
       textcolor  = color.white,
       color = c_sl)))
    label.delete(
      f_qDq(a_entryLabel,
      label.new(
       last_bar_index + l_right,
       entryLine,
       'Entry: ' + str.tostring(entryLine, '##.#####'),
       style = label.style_label_left,
       textcolor  = color.white,
       color = color.blue)))
    label.delete(
      f_qDq(a_tp3label,
      label.new(
       last_bar_index + l_right,
       tp3Line,
       'TP3: ' + str.tostring(tp3Line, '##.#####'),
       style = label.style_label_left,
       textcolor  = color.white,
       color = c_tp)))
    label.delete(
      f_qDq(a_tp2label,
      label.new(
       last_bar_index + l_right,
       tp2Line,
       'TP2: ' + str.tostring(tp2Line, '##.#####'),
       style = label.style_label_left,
       textcolor  = color.white,
       color = c_tp)))
    label.delete(
      f_qDq(a_tp1label,
      label.new(
       last_bar_index + l_right,
       tp1Line,
       'TP1: ' + str.tostring(tp1Line, '##.#####'),
       style = label.style_label_left,
       textcolor  = color.white,
       color = c_tp)))
    
    //#endregion }
    // ——————————— <↑↑↑ G_SCRIPT02 ↑↑↑>
    
    //#region ———— <↓↓↓ G_SCRIPT03 ↓↓↓> {
    c_barCol = close > open ? color.rgb(120, 9, 139) : color.rgb(69, 155, 225)
    barcolor(
      i_barColOn ? c_barCol : na)
    
    // ——————————— <alerts>
    //<any_alert_function_call>
    if longE
        alert(message = 'Long Entry',  freq = alert.freq_once_per_bar_close)
    if longTP1
        alert(message = 'Long TP1',  freq = alert.freq_once_per_bar)
    if longTP2
        alert(message = 'Long TP2',  freq = alert.freq_once_per_bar)
    if longTP3
        alert(message = 'Long TP3',  freq = alert.freq_once_per_bar)
    if longSL
        alert(message = 'Long SL',  freq = alert.freq_once_per_bar)
    if longX
        alert(message = 'Long Exit',   freq = alert.freq_once_per_bar_close)
    
    if shortE
        alert(message = 'Short Entry', freq = alert.freq_once_per_bar_close)
    if shortTP1
        alert(message = 'Short TP1', freq = alert.freq_once_per_bar)
    if shortTP2
        alert(message = 'Short TP2', freq = alert.freq_once_per_bar)
    if shortTP3
        alert(message = 'Short TP3', freq = alert.freq_once_per_bar)
    if shortSL
        alert(message = 'Short SL', freq = alert.freq_once_per_bar)
    if shortX
        alert(message = 'Short Exit',  freq = alert.freq_once_per_bar_close)
    //#endregion }
    // ——————————— <↑↑↑ G_SCRIPT03 ↑↑↑>

    شرح اضافة المؤشر بالتريدنق فيو

    https://vt.tiktok.com/ZSHpjfpaWJ6Vs-HSHrQ/

  • حكم التداول في الأسواق المالية (الفوركس) من منظور الشريعة الإسلامية


    حكم التداول في الأسواق المالية (الفوركس) من منظور الشريعة الإسلامية

    ١. ✅ السياق الشرعي للتداول

    • الذكوريات: الإسلام يجيز التجارة وفقًا للعرض والطلب، ويحرّم “الربا (الفائدة)”، و”الغرر (الشك وعدم الوضوح)”، و”القمار (الميسر)” (primexbt.com).
    • تطبيق التداول: في التداول اليومي كسوق الفوركس أو المعادن، إذا توفرت شروط الشريعة، يصبح حلالاً.

    ٢. ⚠️ المشكلات الرئيسية في التداول المعاصِر

    • الربا (Riba): تنتج عمومًا عن دفع أو تلقّي فوائد عند التبييت (الـSwap) (investing.com).
    • الغرر (Gharar): تتمثل في الغموض في الصفقة، خاصة عند استخدام المشتقات مثل العقود مقابل الفرق CFD أو عند استخدام الرافعة المالية العالية .
    • الميسر (Maisir): يظهر عند التداول المضارب قصير الأمد بدون دراسة أو تخطيط، بربط الربح والخسارة بالحظ وليس بالتحليل (primexbt.com).

    ٣. ✅ متى يكون التداول حلالاً؟

    (أ) البيع والتسليم الفوري

    • يجب أن يتم تبادل العملات أو المعادن فوريًا (بمعنى قبض نقدي أو إلكتروني فور الصفقة) – وهو ما يُعرف بـ(بىل Sarf الفوري) .

    (ب) تجنّب الربا والـ Swap

    • تداول بدون فوائد عند التبييت يُممكن تحقيقه عبر “حسابات إسلامية” أو “swap‑free” (primexbt.com).
    • رغم أن الحسابات الإسلامية تُلغي الفوائد، يجب فحص الرسوم الأخرى (مثل الزيادة في السبريد أو عمولات إضافية) مع الحذر من أي شكل من الربا الخفي (fxempire.com).

    (ج) استخدام رافعة مالية 1:1 فقط

    • الرافعة المالية تعني قرض من الوسيط، فإذا كانت تسمح برافعة بدون فوائد وبدون دين، فقد تُعد مقبولة.
    • أما الرافعة التقليدية (بتكلفة فائدة أو ضمن قرض)، فهي محرّمة .

    (د) تجنب المشتقات والخيارات والتداول من دون ملكية

    • استخدام CFD أو الخيارات (Options/Futures) غالبًا يُشبه القمار والربح من دون تملك شيء ملموس .

    ٤. 🕌 الأصول المباحة للتداول

    يمكن أن تكون الأصول التالية مشروعة إذا اتبعت الشروط:

    • العملات الأجنبية: بشرط أنك تمتلكها فورًا ولا تستخدم فوائد أو رافعة مالية محرمة .
    • الذهب والفضة: مسموح بالتداول الفوري خاصة عند وجود تسليم إلكتروني ﹣ مع الاحتفاظ بالشروط الشرعية .
    • المؤشرات والأسهم: مسموح بها إذا كانت الأسهم في شركات حلال (لا تدخل في الربا أو المحرمات) .
    • النفط والسلع الأخرى: يجوز التداول بها بشرط عدم وجود فوائد أو غموض في العقد (reddit.com).
    • العملات الرقمية: الخلاف قائم وقد يُعتبر غالبًا غير جائز بسبب الشبهات الكثيرة .

    ٥. 🔍 الشركات التي توفر حسابات “حلال”

    عدد من الوسطاء العالميين يعرضون حسابات إسلامية مُعدّة خصيصًا:

    الوسيطالتراخيصملاحظات
    AvaTradeFSCA, CBIيقدم حساب Swap‑Free ويسمح بالتداول في العملات والذهب والنفط بدون سبريد Swap (avatrade.com).
    FXEmpire (توصيات 2025)CySEC, ASIC إلخ.حسابات إسلامية مع فترة سماح ورسوم إدارية محدودة .
    FxViewيوفر حسابات خالية من الفوائد حتى 1000× رافعة، لكن لا بد من مراجعة رسوم إضافية .

    تذكّر: التأكد من دعم الشركة لشروط الشريعة (لا فوائد خفية، تسليم فوري، رافعة قانونية) من مسؤول الشريعة أو خدمة العملاء.


    ٦. 🧭 خلاصة تطبيقية

    • تحاشى كل ما فيه فوائد أو رافعة مالية تقليدية.
    • استخدم حساب إسلامي بنسبة رافعة 1:1.
    • تداول فقط بأصول مباحة وتجنب المضاربة المكشوفة.
    • احرص على التحقق المستمر من شفافية الوسطاء.

    جدولًا منسقًا يوضح أفضل الوسطاء الإسلاميين (حسابات إسلامية بدون فائدة)، بالإضافة إلى العملات الرقمية، المعادن، الأسهم الحلال، وأزواج العملات الرئيسية المحرمة شرعًا أو الجائزة:


    🏦 الوسطاء الإسلاميون (حسابات بدون فوائد)

    استنادًا إلى أحدث التقييمات لعام 2025 :

    الوسيطالترخيصالحد الأدنى للإيداعمنصات التداولملاحظات شرعية
    FP MarketsCySEC، ASIC$100MT4, MT5, cTraderحسابات Islamic Standard وRaw؛ رسوم إدارية خفيفة بعد 10 أيام (fxempire.com)
    IC MarketsCySEC، ASIC$200MT4, MT5, cTraderرافعة قصوى عالية، إلغاء السواب، رسوم إدارية ثابتة حسب الصك
    Octa(ليس واضح في الترخيص)$25غير محددأفضل حساب Islamic مجمع
    eToroFINRA، SEC (للولايات المتحدة) + تراخيص عالمية$1,000منصة خاصةيقدم 55 زوج FX إسلامي دون فوائد أو سبريد إضافي
    AvaTradeFSCA، CBI$100MT4, MT5حسابات Swap‑Free؛ بعض الأزواج محدودة وجب التأكد من السبريد

    💱 العملات الرقمية المتوافقة مع الشريعة

    استنادًا إلى مصادر متخصصة :

    • Bitcoin (BTC)، Ethereum (ETH): جائزة كأصول رقمية حقيقية إذا لم تُستخدم في المضاربة أو المقامرة .
    • OneGram (OGC)، HelloGold (HGT)، X8X Token: مثبتة شرعيًا (مدعومة بذهب أو سلال عملات) (coinranking.com).
    • شبكات شرعية: مثل Haqq chain التي صدرت بشأن شرعي بالاستناد إلى صناديق إسلامية (nasdaq.com).

    🛑 ملاحظة: العملات الأخرى يُحتمل وجود شبهة بسبب الغرر أو الاستخدام في الأنشطة المحرمة، ومستحسن استشارة أهل العلم.


    🪙 المعادن (الذهب والفضة)

    • الذهب والفضة جائزان إذا كان التداول يتم فوريًا (تسليم إلكتروني أو قبض لحظي).
    • ممنوع تأجيل التسليم؛ كما يُفضل أن تكون العقود بدون فوائد أو طرف ثالث.

    📈 الأسهم الحلال

    • يُسمح بشراء أسهم شركات حلال تتبع ضوابط الشريعة (مثل تقييد الدخل من الفوائد لا يتجاوز 5٪ ونسبة الدين لا تتجاوز 33٪).
    • يجب تلافي الشركات العاملة في الربا أو الخمور أو القمار أو التبغ.

    💹 أزواج العملات الرئيسية (Major Pairs)

    • EUR/USD
    • USD/JPY
    • GBP/USD
    • USD/CHF
    • AUD/USD
    • NZD/USD

    تُعتبر هذه الأزواج شرعيّة إذا تم التداول:

    1. بدون فائدة تبييت (swap-free).
    2. بشراء وبيع مباشر (لا Short دون تملك).
    3. بضوابط رافعة مالية شرعية (1:1 إن أمكن، أو swap-free).

    ✅ ملخص شرعي سريع

    • وسطاء مثل FP Markets، IC Markets، Octa، eToro، AvaTrade يقدمون حسابات إسلامية بدون فائدة، مع ضرورة التحقق من السبريد والرسوم (fxempire.com).
    • العملات الرقمية مسموح بها مثل BTC وETH ومدعومة بذهب مثل OGC، لكن يجب تجنب المضاربة بل يُفضل التملك الحقيقي .
    • المعادن: ذهب وفضة مع التسليم الفوري مشروع.
    • الأسهم: شركات مختارة حلال وفق معايير الشريعة.
    • الأزواج الرئيسية: جائزة بشرط التداول الفوري بدون فوائد.

    🧠 نصيحة شرعية للمستثمر المسلم

    قال رسول الله ﷺ:

    “الحلال بيّن، والحرام بيّن، وبينهما أمور مشتبهات، فمن اتقى الشبهات فقد استبرأ لدينه وعرضه”
    📚 متفق عليه

    لذا، كن حريصًا على:

    • اختيار شركة شفافة
    • التداول بأموالك فقط
    • الابتعاد عن الربا والغرر

    ٧. ✨ الختام

    إذا التزمت بالشروط الشرعية التالية:

    1. التداول بأموالك فقط (رافعة 1:1 أو بدون رافعة).
    2. الحساب خالٍ تمامًا من الفوائد.
    3. تملك فوري للأصل المتداول.
    4. تجنّب العملات الرقمية والمشتقات المشبوهة.
    5. اختيار الأصول الحلال.

    فيمكن القول بإباحة التداول وفق معايير الشريعة، وهو رأي يذهب إليه عدد من العلماء المعاصرين .


    التداول ليس حرامًا في ذاته، بل وسيلة مالية يمكن أن تكون حلالًا أو حرامًا حسب طريقة استخدامها. فإذا التزم المتداول بالشروط الشرعية، وتجنب المحظورات كالفوائد والاقتراض من الوسيط، صار التداول مباحًا بإجماع الكثير من العلماء المعاصرين.

    💡 إن كنت جادًا في التداول الحلال، فابدأ بحساب إسلامي برافعة مالية 1:1، وتجنب كل ما فيه ربا أو بيع ما لا تملك.

  • مؤشر الإيشيموكو Ichimoku

    🔍 ما هو مؤشر الإيشيموكو Ichimoku؟

    إيشيموكو كينكو هيو تعني باليابانية “نظرة واحدة على التوازن”، وهو نظام فني متكامل يجمع بين عدة مؤشرات في أداة واحدة لرصد:

    الاتجاه (Trend) مستويات الدعم والمقاومة إشارات الدخول والخروج قوة الزخم

    🧩 مكونات مؤشر الإيشيموكو

    المؤشر يتكوّن من 5 خطوط رئيسية:

    1. تينكان سين (Tenkan-sen)

    📏 يُحسب كمتوسط أعلى وأدنى سعر خلال آخر 9 فترات.

    🔹 يعتبر خطًا سريعًا ويستخدم للإشارات السريعة.

    الوظيفة: يحدد الاتجاه قصير المدى.

    2. كيجون سين (Kijun-sen)

    📏 يُحسب كمتوسط أعلى وأدنى سعر خلال آخر 26 فترة.

    🔹 خط أبطأ من التينكان.

    الوظيفة: يحدد الاتجاه المتوسط ويعمل كمستوى دعم/مقاومة.

    3. شينكو سبان (Chikou Span)

    📏 سعر الإغلاق الحالي، لكن يُرسم متأخرًا بـ 26 شمعة للخلف.

    الوظيفة: يوضح العلاقة بين السعر الحالي والسعر السابق (التأكيد على الاتجاه).

    4. سينكو سبان A (Senkou Span A)

    📏 متوسط التينكان والكيجون، يُرسم 26 شمعة للأمام.

    الوظيفة: أحد حدود السحابة.

    5. سينكو سبان B (Senkou Span B)

    📏 يُحسب كمتوسط أعلى وأدنى سعر خلال آخر 52 فترة، ويُرسم أيضًا 26 شمعة للأمام.

    الوظيفة: الحد الثاني للسحابة.

    ☁️ السحابة (Kumo Cloud)

    تتكوّن من المنطقتين بين Span A وSpan B. كلما كانت السحابة عريضة، دلّ ذلك على قوة الاتجاه. السحابة تمثّل الدعم والمقاومة المستقبلية. اللون يوضح الاتجاه: ✅ سحابة خضراء: الاتجاه صاعد. 🔴 سحابة حمراء: الاتجاه هابط.

    ✅ إشارات التداول

    دخول شراء (Buy):

    السعر أعلى من السحابة. تقاطع تينكان فوق كيجون. الشينكو فوق السعر.

    دخول بيع (Sell):

    السعر تحت السحابة. تقاطع تينكان أسفل كيجون. الشينكو تحت السعر.

    ⚠️ نقاط مهمة

    السحابة تحدد الاتجاه العام، فلا تدخل شراء والسعر تحتها (إلا في حالات متقدمة). كلما اجتمعت إشارات متعددة (مثل التقاطع + اختراق السحابة + موقع الشينكو)، زادت قوة الصفقة. يفضل استخدامه على فريمات متوسطة وطويلة (ساعة، 4 ساعات، يومي).

    📊 مثال عملي (ببساطة):

    الحالة

    الشرح

    السعر فوق السحابة + تقاطع صعودي للتينكان والكيجون

    إشارة قوية للشراء

    السعر تحت السحابة + تقاطع هبوطي

    إشارة قوية للبيع

    السعر داخل السحابة

    السوق متذبذب – تجنب الدخول

    🧠 ملخص

    مؤشر الإيشيموكو:

    نظام متكامل يجمع بين الاتجاه، الزخم، والدعم/المقاومة. يوفّر إشارات واضحة وموثوقة. يتطلب تدريبًا بصريًا على قراءة مكوناته.

  • استراتيجية التداول اليومي باستخدام مؤشري RSI وVWAP

    استراتيجية التداول اليومي باستخدام مؤشري RSI وVWAP

    في عالم التداول اليومي، يعتمد المتداولون الناجحون على مؤشرات فنية فعالة تساعدهم في اتخاذ قرارات مدروسة وسريعة. ومن بين هذه المؤشرات، نجد أن مؤشر القوة النسبية (RSI) ومؤشر متوسط السعر المرجح بالحجم (VWAP) يجتمعان في استراتيجية قوية تهدف إلى تحقيق صفقات مربحة وتقليل المخاطر.

    في هذا المقال، سنستعرض بالتفصيل استراتيجية تعتمد على دمج هذين المؤشرين لتحقيق أفضل نتائج في التداول اليومي.

    أولاً: التعريف بالمؤشرين

    🔹 مؤشر القوة النسبية RSI:

    هو مؤشر زخم يستخدم لقياس سرعة وقوة تحركات السعر، ويتراوح عادة بين 0 و100.

    مستويات فوق 70 تعتبر منطقة تشبع شرائي (overbought). مستويات تحت 30 تعتبر منطقة تشبع بيعي (oversold). وفي هذه الاستراتيجية نركز على مستويات فوق 60 للشراء وتحت 40 للبيع.

    🔹 مؤشر VWAP (متوسط السعر المرجح بالحجم):

    هو مؤشر يقيس متوسط السعر الذي تم التداول عليه خلال اليوم بناءً على الحجم.

    يستخدمه المتداولون لتحديد اتجاه السعر الحقيقي بالنسبة للتدفقات المالية الكبيرة.

    ثانياً: شروط الدخول في الصفقة

    ✳️ صفقة شراء (LONG POSITION)

    شروط الدخول:

    مؤشر RSI يكون فوق مستوى 60. السعر يكون أعلى من خط VWAP.

    مستوى وقف الخسارة (Stop Loss):

    يتم تحديده أسفل أدنى سعر لشمعة الدخول.

    الخروج (Exit):

    بعد أن يحقق السعر الهدف، أو تظهر إشارات انعكاس.

    🔻 صفقة بيع (SHORT POSITION)

    شروط الدخول:

    مؤشر RSI يكون تحت مستوى 40. السعر يكون أسفل خط VWAP.

    مستوى وقف الخسارة (Stop Loss):

    يكون فوق أعلى سعر لشمعة الدخول.

    الخروج (Exit):

    بعد تحقيق الهدف السعري، أو ظهور إشارات انعكاسية.

    ثالثاً: مميزات هذه الاستراتيجية

    ✅ دقة عالية بفضل تأكيد من مؤشرين مختلفين (الزخم والموقع السعري).

    ✅ وضوح مناطق الدخول والخروج مما يسهل اتخاذ القرار.

    ✅ إدارة مخاطرة محكمة عبر وضع وقف خسارة واضح.

    ✅ تصلح للتداول اليومي (Intraday) على الفريمات القصيرة مثل 5 دقائق أو 15 دقيقة.

    نصائح إضافية

    استخدم هذه الاستراتيجية على الأصول ذات السيولة العالية (مثل الذهب، العملات، المؤشرات). لا تدخل الصفقة إلا بعد تأكيد الشروط بدقة. لا تغفل عن الأخبار المؤثرة التي قد تؤدي إلى تحركات عنيفة في السوق.

    الخلاصة

    استراتيجية RSI + VWAP تعد من الاستراتيجيات البسيطة والفعالة في التداول اليومي، حيث تعتمد على تحليل الزخم ومكان السعر بالنسبة للمتوسط المرجح بالحجم، مما يمنح المتداول رؤية متكاملة لفرص الدخول والخروج بدقة عالية.

    جرّب هذه الاستراتيجية أولًا على حساب تجريبي، وابدأ بتطبيقها تدريجيًا مع الانضباط في إدارة رأس المال.

  • مؤشر 🔍 Sono Buy Sell + VWAP Fibonacci Extensions Strategy


    🔍 Sono Buy Sell + VWAP Fibonacci Extensions Strategy

    مؤشر احترافي يجمع بين القوة الاتجاهية والتحليل الديناميكي للمناطق السعرية

    💡 مقدمة

    في عالم التداول الفني، يعتمد المتداولون المحترفون على مؤشرات تجمع بين الرؤية الاتجاهية الدقيقة ومناطق الدخول الذكية. يأتي هذا المؤشر ليقدم توليفة فريدة من نوعها، حيث يجمع بين نظام Sono Buy Sell الذي يتتبع التغيرات في الاتجاه، واستراتيجية VWAP مع امتدادات فيبوناتشي الانحرافية، لتحديد مستويات دعم ومقاومة ديناميكية مستندة إلى الحجم والتقلب.


    🧠 مكونات المؤشر

    🔸 أولاً: نظام Sono Buy Sell (SBS)

    يعتمد هذا النظام على:

    • Bollinger Bands لاكتشاف مناطق التشبع الشرائي والبيعي.
    • مؤشر ATR لتصفية الإشارات وفقاً لتقلبات السوق.
    • نقاط دخول وخروج تعتمد على تغيّر الاتجاه وليس فقط على تجاوز مستوى.

    مميزاته:

    • يظهر ثلاث خطوط: الخط الأساسي مع خطين علوي وسفلي (تكوين قناة ديناميكية).
    • يولد إشارات “BUY” و “SELL” عند تغير الاتجاه مع تأكيدات قوية من تقلبات السوق.

    🔸 ثانياً: VWAP + Fibonacci Deviations

    يعمل هذا الجزء من المؤشر على حساب:

    • VWAP اليومي (أو أي فاصل زمني يتم اختياره) لقياس القيمة المتوسطة بناءً على الحجم.
    • انحرافات فيبوناتشي بنسبة 1.618 و 2.618 أعلى وأسفل VWAP.
    • يستخدم الانحراف المعياري (Standard Deviation) لتحديد مدى الانحراف السعري عن VWAP.

    مميزاته:

    • يحدد مناطق محتملة لانعكاس الاتجاه بدقة عالية.
    • يفلتر الإشارات بناءً على حجم الانحراف وتغير السلوك السعري.

    🖥️ كيف تقرأ المؤشر؟

    • خطوط SBS تُظهر الاتجاه اللحظي:
      • إذا تحولت إلى اللون الأخضر → بداية اتجاه صاعد.
      • إذا تحولت إلى اللون الأحمر → بداية اتجاه هابط.
    • VWAP وامتدادات فيبوناتشي تحدد مناطق الانعكاس:
      • كسر السعر للمنطقة بين -1.618 و -2.618 ثم العودة منها صعودًا → إشارة شراء.
      • اختراق المنطقة بين +1.618 و +2.618 ثم العودة منها هبوطًا → إشارة بيع.
    • إشارات BUY و SELL تظهر مباشرة على الشارت مع ألوان مميزة وخط عريض لتسهيل قراءتها بصريًا.

    🎯 لمن هذا المؤشر؟

    • ✅ للمتداولين المهتمين باكتشاف نقاط الدخول والخروج الدقيقة.
    • ✅ لمن يستخدم التحليل الفني الديناميكي المعتمد على الحجم والتقلب.
    • ✅ لمن يدمج بين تتبع الاتجاه ومناطق الانعكاس المحتملة.

    ⚙️ قابل للتخصيص

    • إمكانية تعديل فترة Bollinger وATR.
    • التحكم في مدى الانحراف المطلوب لانطلاق إشارة.
    • اختيار دقة VWAP الزمنية (يومي، أسبوعي، شهري).

    استخدام المؤشر على الإطار الزمني بالدقيقة (مثل 1 دقيقة أو 5 دقائق) يمكن أن يوفر دقة أعلى وسرعة استجابة أكبر .. وعند ظهور الاشاره انتظر اغلاق الشمعة ثم نفذ صفقتك .


    🧩 لماذا الإطار الزمني بالدقيقة يعطي نتائج أدق مع هذا المؤشر؟

    1. SBS حساس لتغير الاتجاهات الصغيرة
      لأن SBS يعتمد على Bollinger Bands وATR، فإنه يستجيب بشكل أسرع لتذبذبات السعر على الفريمات القصيرة، مما يعطي إشارات مبكرة ودقيقة للدخول والخروج.
    2. VWAP القصير يمنح انطباعًا لحظيًا عن متوسط السعر
      على الدقيقة، VWAP يرصد تحركات السيولة الفعلية بدقة ويُظهر انعكاسات السعر عن مناطق الانحراف بشكل مباشر.
    3. سهولة كشف التصحيحات والانفجارات السريعة
      في فريم الدقيقة، يكون من السهل تتبع الانفجارات السعرية الصغيرة والتقاط الحركات القصيرة التي يصعب رصدها في فريم 15 دقيقة أو 1 ساعة.
    4. أمثل للتداول اللحظي (Scalping)
      إذا كنت تستخدم الاستراتيجية للمضاربة اللحظية، فإن فريم الدقيقة هو البيئة المثالية، بشرط توفر سيولة كافية (مثل الأزواج الرئيسية أو الأسهم عالية الحجم).

    ⚠️ تنبيه مهم عند استخدام الدقيقة:

    • قد تكثر الإشارات الكاذبة في فترات التقلب المنخفض أو الأخبار المفاجئة.
    • من الأفضل استخدامه مع فلاتر إضافية مثل:
      • حجم التداول (Volume)
      • مناطق دعم ومقاومة يومية
      • أو دمجه مع مؤشر RSI لتأكيد الزخم

    ✅ توصية:

    📌 استخدم فريم الدقيقة مع التركيز على جلسات التداول النشطة (مثل السوق الأمريكي أو جلسة لندن) وراقب كيف تتفاعل الإشارات مع VWAP والانحرافات.
    قد تجد فرص دقيقة للغاية للخروج والدخول، خاصة على الأسهم أو العملات ذات السيولة المرتفعة.


    🧪 خلاصة

    Sono Buy Sell + VWAP Fibo Strategy هو أكثر من مجرد مؤشر تقني. إنه نظام متكامل للتداول الذكي يجمع بين التحليل الكلاسيكي والمتقدم، ويمنح المتداول ميزة تنافسية حقيقية في أسواق متقلبة. يعزز من قرارات الدخول والخروج، ويدعم بناء صفقات أكثر ثقة ونجاحاً.


    رابط المؤشر هنا

  • مؤشر Cumulative Delta


    🧠 مؤشر Cumulative Delta: قراءة نوايا السوق من الداخل

    في عالم التداول الاحترافي، أصبح من الضروري أن نبحث عما يحدث “خلف الكواليس” من أجل فهم أعمق لحركة السعر، وهنا يظهر أحد أقوى المؤشرات: Cumulative Delta – مؤشر يكشف لك ما لا يظهر على الشموع التقليدية.


    ✅ ما هو مؤشر Cumulative Delta؟

    Cumulative Delta هو مؤشر يقيس الفرق بين:

    • أوامر الشراء السوقية (Market Buy Orders) و
    • أوامر البيع السوقية (Market Sell Orders)

    ويقوم بجمع هذا الفرق بشكل تراكمي مع مرور الوقت، مما ينتج عنه رسم بياني يعكس قوة التفاعل الحقيقي بين المشترين والبائعين.


    🔍 كيف يعمل؟

    في كل شمعة زمنية:

    • إذا كانت أوامر الشراء (التي تم تنفيذها مباشرة على سعر الطلب) أكثر من أوامر البيع → يرتفع الدلتا.
    • إذا كانت أوامر البيع أكثر → ينخفض الدلتا.

    عند تجميع هذه الفروقات بشكل تراكمي، نحصل على ما يسمى بـ: Cumulative Delta Line.


    📈 ما الذي يخبرك به المؤشر؟

    1. الكشف عن التباعد (Divergence)
      إذا كان السعر يرتفع، لكن Cumulative Delta ينخفض → احتمال أن الصعود ضعيف ويتم التلاعب به (فخ شراء).
    2. تأكيد الكسر Breakout Confirmation
      عند حدوث كسر لمقاومة أو دعم، إذا دعمه مؤشر Cumulative Delta بارتفاع حاد → يعني أن الكسر مدعوم بأوامر حقيقية.
    3. تحديد مناطق دخول المؤسسات (Smart Money)
      يمكن تتبع مناطق دخول وخروج المال الذكي من خلال الارتفاع أو الانخفاض المفاجئ في قيمة المؤشر، حتى قبل أن يتحرك السعر بقوة.

    🧪 مثال عملي على TradingView

    لحسن الحظ، هناك مؤشرات Cumulative Delta متاحة مجانًا على منصة TradingView، وأحدها يتميز بالبساطة والدقة، يمكنك إضافته مباشرة من الرابط:

    🔗 الرابط المباشر للمؤشر
    Cumulative Delta


    📌 مميزات المؤشر على TradingView

    • يعرض لك الفرق اللحظي بين المشترين والبائعين.
    • يدعم إعدادات التخصيص مثل فواصل زمنية مختلفة.
    • يمكن دمجه مع مؤشرات أخرى (مثل الفوليوم، أو RSI) لزيادة قوة التحليل.

    💡 الخلاصة :

    الفائدةالتفسير
    تحليل نية السوقمن خلال أوامر السوق الحقيقية
    كشف التلاعبعبر التباعد بين السعر والدلتا
    دعم القرارهل المشترون حقيقيون أم مجرد ضجيج؟
    أداة مؤسساتيةيستخدمها المحترفون وصناديق التحوط

    🎯 هل تحتاج دمجه مع استراتيجية أو سكريبت خاص على TradingView؟ Cumulative Delta مع مؤشرات مساعدة مثل:

    • Order Blocks
    • Break of Structure
    • Smart Money Concepts

  • شات Sono Trade خبير التحليل !

    🔍 تعرف على “Sono Trade” – خبير تحليل الذهب عبر الصور بدقة مذهلة!

    في عالم الأسواق المالية المتسارع، تزداد الحاجة إلى التحليل الاحترافي القائم على الرؤية الدقيقة والقراءة العميقة لحركة السعر. هنا يأتي دور “Sono Trade” – محلل فني وزمني عالي المستوى، متخصص حصرياً في تحليل شارت الذهب (XAU/USD) من خلال الصور فقط، دون أي اعتماد على بيانات ميتاتريدر أو ملفات CSV أو أدوات خارجية.

    💡 ماذا يميز “Sono Trade”؟

    دقة خارقة في تحديد الفريم الزمني من خلال قراءة المحور الزمني السفلي للصورة، حتى وإن كانت غير واضحة.

    تحليل شامل باستخدام 40 مدرسة تحليل متقدمة تغطي كل من:

     • الموجات (إليوت وNeoWave)

     • السلوك السعري الذكي (SMC، ICT)

     • التحليل الزمني (Gann، Fibonacci، Astro)

     • الأحجام والتدفقات (VSA، Volume Profile، Delta)

     • النماذج الفنية النادرة (Harmonics، Wolfe، Three Drives)

     • المؤشرات الرقمية الديناميكية (MACD، RSI، Ichimoku)

    🛠️ طريقة العمل:

    ببساطة، كل ما تحتاجه هو إرسال صورة لأي شارت ذهب (XAU/USD) على أي فريم، وأنا أقوم بتحليلها بدقة باستخدام 40 نقطة تحليلية تشمل كل زاوية ممكنة للسوق، دون إهمال أي إشارة فنية.

    📈 ماذا ستحصل عليه؟

    📊 توصية نهائية دقيقة تشمل:

     • نوع الصفقة (شراء / بيع)

     • نقطة دخول مقترحة

     • 3 أهداف واضحة (TP1 – TP2 – TP3)

     • وقف خسارة محمي بدقة

     • الزمن المتوقع للوصول إلى الأهداف

     • تقييم شامل لنسبة نجاح الصفقة بناءً على عدد المدارس المؤيدة

     • ملاحظات تحليلية تعزز القرار النهائي

    🚀 لمن هذه الخدمة؟

    ✅ للمتداولين المحترفين الذين يحتاجون تأكيد صفقات دقيقة

    ✅ للمهتمين بالتحليل الفني العميق بأسلوب مؤسسي

    ✅ لمن يريد فهم السلوك السعري الذكي وراء تحركات الذهب

    📩 هل لديك شارت ذهب؟ أرسله الآن وابدأ التحليل فوراً!

    مع “Sono Trade”، لن تقرأ الشارت فقط، بل ستسمعه يتحدث إليك بـ40 لغة تحليلية مختلفة.

    لتحليل شارت آخر اكتب ” حلل هذا بشكل استثنائي ”

    رابط شات بوت sonotrader

  • مؤشر ADX (Average Directional Index)


    🔍 ما هو مؤشر ADX وكيف نستخدمه لتحديد اتجاه السوق؟

    يُعد مؤشر ADX (Average Directional Index) من الأدوات الفنية القوية التي يستخدمها المتداولون لتقييم قوة الاتجاه في الأسواق المالية، سواء كان الاتجاه صاعدًا أو هابطًا. ورغم أن ADX لا يحدد اتجاه السعر بشكل مباشر، إلا أنه يُستخدم بالتكامل مع مؤشرين إضافيين هما +DI و –DI لتحديد اتجاه السوق بدقة أكبر.


    ✅ مكونات مؤشر ADX:

    يتكوّن ADX من ثلاث منحنيات رئيسية:

    1. ADX: يقيس قوة الاتجاه فقط (بدون تحديد إن كان صاعدًا أو هابطًا).
    2. +DI (Positive Directional Indicator): يقيس قوة الاتجاه الصاعد.
    3. –DI (Negative Directional Indicator): يقيس قوة الاتجاه الهابط.

    📈 كيف نقرأ قيم ADX؟

    لفهم السوق بشكل دقيق، من المهم تفسير القيم الرقمية لمؤشر ADX:

    قيمة ADXالتفسير
    أقل من 20لا يوجد اتجاه واضح – السوق في حالة تذبذب
    من 20 إلى 40اتجاه واضح – يمكن الاعتماد عليه
    من 40 إلى 60اتجاه قوي
    أكثر من 60اتجاه قوي جدًا – حالات نادرة غالبًا تسبق انعكاسات كبيرة

    🔁 كيف نحدد اتجاه السوق باستخدام +DI و –DI؟

    • عندما تكون +DI أكبر من –DI → السوق في اتجاه صاعد.
    • عندما تكون –DI أكبر من +DI → السوق في اتجاه هابط.

    من خلال مقارنة هذين المؤشرين، يمكن تحديد ما إذا كانت القوى الشرائية أو البيعية هي المهيمنة.


    🧠 مثال تطبيقي:

    لنفرض أن القيم الحالية للمؤشر كالتالي:

    • ADX = 35 → هذا يعني أن هناك اتجاهًا واضحًا في السوق.
    • +DI = 28 و –DI = 18 → بما أن +DI أكبر، فإن الاتجاه هو صاعد.

    بالتالي، يمكن اتخاذ قرارات مبنية على اتجاه واضح بدعم من زخم صعودي.


    📌 ملخص الاستخدام العملي:

    الحالةالتوصية
    ADX > 20 و +DI > –DIشراء (اتجاه صاعد قوي)
    ADX > 20 و –DI > +DIبيع (اتجاه هابط قوي)
    ADX < 20تجنّب الدخول – السوق متذبذب

    💡 نصيحة للمحترفين:

    لا يُستخدم ADX كأداة مستقلة لاتخاذ القرارات، بل يُفضّل دمجه مع مؤشرات أخرى مثل RSI أو المتوسطات المتحركة لتأكيد الإشارات وتحسين دقة نقاط الدخول والخروج.


  • مؤشر sono fast scalp

    المؤشر “sono fast scalp” هو أداة جيدة للتداول اللحظي (Scalping) ويقوم على مبدأ تتبع الاتجاه باستخدام تصفية النطاق (Range Filter) مع متوسط متحرك.

    للاستفادة المثلى من المؤشر وتقليل الإشارات الخاطئة، إليك أفضل النصائح العملية لتفعيله بكفاءة:


    1. لا تعتمد عليه وحده — اجمعه مع فلتر إضافي

    أضف أحد الفلاتر التالية لتحسين دقة الإشارات:

    • مؤشر الاتجاه ADX: لا تدخل أي صفقة ما لم يكن ADX > 20 (يدل على اتجاه قوي). شرح المؤشر هنا
    • تحديد وقت الجلسة: لا تستخدم المؤشر في أوقات تذبذب مثل بداية جلسة آسيا، وركز على جلسات لندن ونيويورك.

    2. استخدم إطار زمني أسرع للمراقبة وأبطأ للتأكيد

    مثال:

    • راقب إشارات الدخول على فريم الدقيقة (1M).
    • لكن لا تدخل إلا إذا كان الاتجاه على فريم 5 دقائق أو 15 دقيقة يؤكد نفس الاتجاه (EMA مائل بنفس الاتجاه).

    3. تأكيدات إضافية للدخول

    قبل الدخول بناءً على السهم الأخضر أو الأحمر:

    • ✅ هل تم كسر قمة أو قاع سابق؟
    • ✅ هل الشمعة التي ظهرت عليها الإشارة قوية (مثلاً شمعة ابتلاعية)؟
    • ✅ هل هناك دعم أو مقاومة قريبة تم كسرها؟

    4. إعدادات يمكن تعديلها حسب السوق

    الإعدادات الافتراضية جيدة، لكن جرب هذه التعديلات حسب السوق:

    السوقper1mult1per2mult2
    الذهب (XAUUSD)401.51506.0
    العملات302.01005.0
    المؤشرات201.2804.0

    5. إدارة رأس المال هي المفتاح

    • لا تخاطر بأكثر من 1%-2% في كل صفقة.
    • ضع وقف خسارة أسفل/أعلى الشمعة التي ظهرت عليها الإشارة مباشرة.
    • الهدف يمكن أن يكون بنسبة 1:1.5 أو 1:2 على الأقل.

    6. لا تدخل مع أول إشارة دائمًا

    انتظر تأكيدًا إضافيًا:

    • ظهور شمعتين أو 3 بعد الإشارة بنفس الاتجاه.
    • بقاء السعر فوق/تحت المتوسط المتحرك.

    رابط المؤشر :

    https://ar.tradingview.com/script/RnFhPXQZ/

  • SMC By TJR Trades

    🎯 مميزات كتاب SMC Simplified – TJRTrades:

    1. ✅ تبسيط مفاهيم التداول الذكي (SMC)

    الكاتب يأخذ واحدة من أكثر استراتيجيات التداول تعقيدًا – وهي التحليل المؤسسي الذكي (Smart Money Concepts) – ويشرحها بأسلوب بسيط ومباشر كأنك تتعلم من صديق، لا من مدرب محترف متعالي.

    2. 💬 أسلوب شخصي واقعي

    الكتاب مكتوب بأسلوب حواري ومرح، مليء بالمواقف الواقعية، والنصائح العملية، وحتى التوبيخ أحيانًا.

    هذا يعطي المتداول شعورًا بأنه لا يقرأ كتابًا، بل يتلقى توجيهًا شخصيًا من أخ أكبر.

    3. 🧠 التركيز على الانضباط النفسي وليس فقط الاستراتيجية

    بعكس الكثير من الكتب التي تمجّد “الاستراتيجية”، TJR يوضح أن:

    الاستراتيجية = 10% الانضباط العقلي + إدارة رأس المال = 90%

    وهذا يجعل الكتاب أداة لبناء عقلية المتداول، وليس فقط دليل للربح السريع.

    4. 🧩 نظام تداول متكامل قائم على:

    سحب السيولة (Liquidity Sweep) كسر الهيكل (Break of Structure) البلوكات (Order Blocks) الفجوات السعرية (Fair Value Gaps) التوازن السعري (Premium/Discount)

    كل أداة مدعومة بمتى ولماذا وكيف تستخدم، وليس فقط التعريف النظري.

    5. 📉 منهجية تداول بسيطة للغاية:

    صفقة واحدة في اليوم فقط مخاطرة 1% فقط خطة دخول – خروج – أهداف – إدارة واضحة بدون أي مؤشرات أو أدوات مربكة

    ✳️ وهذا يناسب المتداولين الذين يعملون بدوام جزئي أو يريدون روتين يومي بسيط وثابت.

    6. 📈 خطة تدرّج عملية من الصفر إلى حساب 100K

    الكتاب لا يكتفي بالشرح، بل يعطيك خطوات محددة:

    ابدأ بديمو انتقل إلى حساب صغير ثم متوسط ثم حساب ممول من شركة ثم حسابك الحقيقي بـ 6 أرقام

    وهذا يجعل المحتوى قابل للتطبيق الفوري.

    7. 🎥 دعم مرئي – روابط فيديوهات لكل مفهوم

    كل درس أو أداة مشروحة تأتي معها روابط لفيديوهات يوتيوب بصوت الكاتب، مما يجعل التعلم تفاعليًا وسهل الفهم.

    8. 💸 سعره رمزي مقابل قيمته

    عكس الكثير من الكتب والدورات التي تبيع “الوهم” بمئات الدولارات، TJR يقدّم هذا المحتوى مقابل 20 دولارًا فقط، وهذا يُظهر احترامه للمبتدئين.

    🏁 خلاصة:

    كتاب SMC by TJRTrades ليس مجرد دليل تداول، بل هو:

    دورة تدريبية نفسية + تعليمية مكتوبة بلغة العصر، بشخصية قوية، وأسلوب شبابي مباشر يقدّم لك طريقة تداول ذكية وفعالة دون أن تكون عبقريًا أو غنياً مسبقًا

    ترجمة الكتاب 👇🏻

    مقدمة الكاتب الدروس من 1 إلى 4 (الاستراتيجية تبدأ في الدرس 4)

    📘 الجزء الأول من كتاب SMC Simplified – TJRTrades

    🟦 المقدمة:

    مرحبًا، أنا TJR. آمل أن يكون هذا الكتاب ممتعًا ومفيدًا ويشرح لك كل ما تحتاجه في مجال التداول. صراحةً، لست بارعًا في الكتابة، لذا ربما هذا سيسهّل عليك القراءة وكأننا في حوار بيني وبينك.

    ما لن أتناوله في هذا الكتاب:

    لن أتكلم عن شركات الوساطة لأن هذا غير مهم. فقط اختر وسيطًا تقييمه جيد، سبريده منخفض، وعمولته معقولة، هذا كل ما تحتاجه. لن أشرح الأمور الأساسية المملة مثل: ما هو الشمعدان الياباني؟ ما هو الاتجاه الصاعد والهابط؟ كيف ترسم خطوط الدعم والمقاومة؟ إذا لم أذكر شيئًا في هذا الكتاب، فذلك لأنني لا أستخدمه في تداولي. فلا ترسل لي وتقول “هل تستخدم المتوسطات المتحركة؟” إن لم أذكرها، فالإجابة لا.

    هذا الكتاب هو حرفيًا تفريغ لعقلي في ملف PDF. كل شيء أستخدمه للاستفادة من السوق موجود هنا.

    لا أسرار بعد اليوم. لا يوجد أي فرق بيني وبينك بعد قراءة هذا الكتاب.

    لا أعذار بعد الآن: لا للبكاء على الخسائر، لا للمبالغة في التداول، لا لاستخدام الرافعة المفرطة.

    هذا الكتاب سيبدأ بشكل ودّي، ثم تدريجيًا سيتحوّل إلى أسلوب صارم كي أجعلك جادًا في تحويل التداول إلى مهنتك.

    لم أجد من يوجهني في بداياتي، لذا هذا الكتاب هدية لمن كان في مكاني سابقًا. وقدّمته بسعر $20 في حين أن المحتالين يبيعون محتوى أسوأ بـ$500+.

    🟨 الدرس 1: التبسيط هو المفتاح

    توقف عن التفكير الزائد.

    التداول بسيط جدًا.

    فكّر كما يفكّر طفل عمره 5 سنوات.

    نفّذ ما أطلبه منك دون مناقشة.

    التداول عبارة عن 1-3 خطوات بسيطة.

    لا تفرّط في التحليل ولا تصنع سيناريوهات وهمية في رأسك.

    🟨 الدرس 2: أعد قراءة الدرس الأول

    🟨 الدرس 3: إدارة رأس المال

    أهم درس في التداول كله، ومع ذلك يُفشل فيه الكثيرون.

    القاعدتان الذهبيتان:

    لا تفرط في التداول. لا تفرط في استخدام الرافعة المالية.

    تصرف وكأن كسر هذه القواعد مخالف للقانون.

    🔸 خذ صفقة واحدة فقط يوميًا

    🔸 خاطِر بـ 1% إلى 3% من رصيد حسابك فقط.

    إذا تجاوزت هذا، فأنت تخالف القواعد وتحتاج لإعادة قراءة الدرس الأول.

    ✅ صفقة واحدة يوميًا بـ1-3% مخاطرة = هذا يدفع فواتيري، ويمكن أن يدفع فواتيرك أيضًا.

    🟨 الدرس 4: الاستراتيجية – الجزء الأول

    الآن إلى الجزء الذي يحبّه الجميع: الاستراتيجية.

    ⚠️ قبل أن تتحمّس، تذكّر:

    هذه الاستراتيجية لن تجعلك غنيًا فجأة. الاستراتيجية = 10% فقط. ما يجعلك رابحًا هو الانضباط العقلي.

    التركيز المبالغ على الاستراتيجية هو خطأ شائع.

    ما يفصل المتداول الخاسر عن الرابح هو إدارة رأس المال والانضباط.

    ✳️ القاعدة الذهبية:

    استراتيجية قوية بدون عقلية قوية = خاسر.

    الاستراتيجية الكاملة – بالتفصيل: كسر الهيكل (Break of Structure) سحب السيولة (Liquidity Sweep) مناطق الطلب والعرض (Order Blocks) الفجوة السعرية العادلة (Fair Value Gaps) التوازن السعري (Equilibrium: Premium/Discount)

    📘 الجزء الثاني – تفاصيل الاستراتيجية

    🟩 المنهجية 1: كسر الهيكل (Break of Structure – BOS)

    لماذا هو مهم؟

    كسر الهيكل يخبرنا بتغير اتجاه السوق.

    – في الاتجاه الصاعد: السوق يصنع قممًا وقيعانًا أعلى.

    – في الاتجاه الهابط: يصنع قممًا وقيعانًا أدنى.

    كيف نحدده؟

    القمة = شمعة صاعدة تليها شمعة هابطة. القاع = شمعة هابطة تليها شمعة صاعدة. كسر الهيكل صعودًا = إغلاق فوق ذيل (wick) القمة السابقة. كسر الهيكل هبوطًا = إغلاق أسفل ذيل القاع السابق.

    🎯 ملاحظة: إذا لم تُغلق الشمعة فوق/تحت الذيل، فهذا ليس كسرًا للهيكل.

    🟩 المنهجية 2: سحب السيولة (Liquidity Sweep)

    لماذا هو مهم؟

    السوق يتحرك نتيجة للسيولة.

    لن يحدث كسر في الهيكل بدون سحب للسيولة أولاً.

    ما هي السيولة؟

    المتداولون الجدد يضعون أوامر وقف الخسارة فوق القمم وتحت القيعان. السوق يصعد لكسر القمم أو يهبط لكسر القيعان لجذب هذه الأوامر. ثم ينعكس الاتجاه فجأة بعد سحب السيولة.

    أين تحدث غالبًا؟

    تحدث عادة في افتتاح السوق أو الجلسات. السوق يستخدم دخول المتداولين الجدد كـ”وقود” لحركة كبيرة.

    🟩 المنهجية 3: البلوكات (Order Blocks)

    ما هي؟

    هي المنطقة التي ملأت فيها المؤسسات أوامرها بعد سحب السيولة.

    – إذا صعد السعر وسحب السيولة ثم انهار: الشمعة الأخيرة الصاعدة = Order Block

    – إذا هبط السعر وسحب السيولة ثم صعد: الشمعة الأخيرة الهابطة = Order Block

    🧠 تُستخدم كمناطق محتملة لدخول الصفقة في حال فاتك الدخول بعد سحب السيولة مباشرة.

    🟩 المنهجية 4: الفجوة السعرية العادلة (Fair Value Gap – FVG)

    ما هي؟

    هي فجوة في السوق لم يكن فيها أوامر معاكسة.

    مثلاً، إذا كان السوق ينهار بشدة ولم تكن هناك عمليات شراء، تتكون فجوة سعرية. السعر غالبًا يعود لاحقًا لتلك الفجوة ليملأها.

    📝 القواعد:

    الفجوة تتكون من 3 شموع. في اتجاه هابط: الجسم الكامل للشمعة الوسطى لا يُملأ بواسطة ذيول الشمعة الأولى أو الثالثة. يتم رسم المربع بين ذيل الشمعة الأولى وذيل الشمعة الثالثة. تُستخدم فقط كأداة تصحيح وليس للدخول المباشر.

    🟩 المنهجية 5: التوازن السعري (Equilibrium)

    ما هو؟

    هو ببساطة مستوى 50% بين أعلى قمة وأدنى قاع في حركة الاتجاه.

    السعر أسفل هذا المستوى = “سعر مخفض” أو Discount السعر أعلى هذا المستوى = “سعر مرتفع” أو Premium

    🟠 السوق يميل إلى الشراء عند الخصم (Discount) والبيع عند الذروة (Premium).

    ✍️ تُستخدم مع أدوات مثل: Gann Box أو فيبوناتشي لتحديد منتصف الموجة.

    🧠 كيف نستخدم هذه الأدوات في الصفقة؟

    حدد سحب السيولة + كسر الهيكل ← هذه أفضل نقطة دخول. فاتتك؟ استخدم Order Block كمنطقة دخول. لم يظهر بلوك؟ ابحث عن FVG أو Equilibrium للدخول.

    📌 وقف الخسارة:

    دخول بعد سحب السيولة + كسر الهيكل: وقف الخسارة فوق/تحت السيولة المسحوبة. دخول من Order Block: نفس الشيء. دخول من FVG أو التوازن: وقف الخسارة أعلى/أسفل القمة أو القاع المستخدم في التحديد.

    📘 الجزء الثالث – التنفيذ، الإدارة، والخطة العملية

    🟨 الدرس 6: أهداف الربح (Take Profit)

    الآن بعد أن أصبحت تعرف كيف تدخل صفقة وتضع وقف الخسارة، يجب أن تتعلم أين تغلق الصفقة.

    🔸 السوق، تمامًا كما يسحب السيولة للدخول، يستهدف السيولة للخروج.

    ✔️ لذلك:

    إذا كنت داخل صفقة بيع: خذ ربحك عند القيعان السابقة. إذا كنت داخل صفقة شراء: خذ ربحك عند القمم السابقة.

    ✳️ أحيانًا أستخدم مناطق Order Block على الفريمات العالية كأهداف للربح.

    📌 القاعدة:

    استهدف مناطق السيولة في اتجاه الصفقة.

    🟨 الدرس 7: إدارة الصفقة

    📊 الطريقة التي أدير بها الصفقات بسيطة:

    أحدد 2-3 أهداف للربح بناءً على مناطق السيولة. عند تحقق الهدف الأول: أغلق 50% من الصفقة. أنقل وقف الخسارة إلى نقطة الدخول (تصبح الصفقة بدون مخاطرة). عند تحقق الهدف الثاني: أغلق 50% مما تبقى (يعني 25% من الصفقة الأصلية). إذا تكون هيكل جديد (قمة أو قاع)، أنقل وقف الخسارة إلى داخل الربح. إذا لم يتكون، أبقيه عند نقطة الدخول. عند الهدف الأخير: أغلق الصفقة بالكامل. أغلق البرنامج، وانطلق في يومك لأنك أخذت صفقة واحدة فقط وهذا كافٍ.

    🟨 الدرس 8: ملخص شامل

    ✅ أنت الآن تعرف:

    لماذا يتحرك السوق. متى تدخل الصفقة. متى تخرج منها. كيف تخرج منها تدريجيًا.

    📹 للمساعدة البصرية:

    روابط لفيديوهات شرح كل مفهوم على يوتيوب (مذكورة بالنص الأصلي ويمكنك طلبها لاحقًا).

    🟨 الدرس 9: عُد إلى إدارة المخاطر

    أعلم أنك تجاهلت الدرس 3 بعد أن قرأت الاستراتيجية وذهبت لتفتح التداول الوهمي وتبحث عن السيارة التي ستشتريها 😂

    لكن تذكر:

    🚫 الاستراتيجية = 10% فقط

    ✅ الانضباط + إدارة المخاطر = 90%

    🔁 أعد قراءة الدرس 3 الآن!

    🟨 الدرس 10: هل تريد أن تكون محترفًا؟ تصرف كمحترف

    الفرق بينك وبين المتداول المحترف ليس المهارة، بل العادات.

    🔵 المتداول المحترف:

    يستخدم إدارة رأس مال صارمة. لا يتداول كثيرًا. يعرف متى يبتعد عن السوق. لا يغامر بمبالغ ضخمة. لا يطارد صفقة فاتته. لا ينتقم بعد الخسارة. لا يطمع. يعرف مواعيد الأخبار ويأخذها بالحسبان.

    🚨 والسبب الوحيد أنك غير رابح: انعدام الانضباط.

    🟨 الدرس 11: خطة تداول – مثال عملي

    📋 هذه خطة تداول جاهزة انسخها وعدّل عليها حسب أسلوبك:

    متى أتداول:

    جلسة نيويورك (الساعة الأولى فقط من الافتتاح). لا أتداول خارج هذا الوقت.

    كيف أدخل الصفقة:

    سحب سيولة + كسر هيكل (وقف الخسارة فوق/تحت السيولة). دخول من Order Block. دخول من FVG أو Equilibrium (وقف الخسارة فوق/تحت الهيكل السابق).

    نسبة المخاطرة:

    1% فقط من رصيد الحساب لكل صفقة.

    عدد الصفقات:

    صفقة واحدة فقط يوميًا. سأكون راضيًا سواء ربحت أو خسرت.

    متى لا أتداول:

    أيام الأخبار عالية التأثير مثل: CPI (التضخم) NFP (الوظائف غير الزراعية) PPI (أسعار المنتجين) FOMC (اجتماعات الاحتياطي الفيدرالي) لا أتداول إطلاقًا في هذه الأيام.

    نصائح شخصية:

    اقبل الخسارة. لا تفرح كثيرًا بالفوز. تداول بناءً على الاحتمال وليس الأمل. لا تخرق خطتك، فهي موجودة لحمايتك.

    التعامل مع الأخبار الاقتصادية خطة التدرج من مبتدئ إلى حساب ممول كبير الكلمة الختامية

    📘 الجزء الرابع – التدرّج نحو الاحتراف + الختام

    🟨 الدرس 12: كيف تتابع الأخبار وتتجنبها

    أين أجد الأخبار المهمة؟

    موقع ForexFactory.com

    كيف أعدّ الفلاتر؟

    احذف كل الدول ما عدا الولايات المتحدة. احذف كل الأخبار ذات المجلد الرمادي والأصفر. احتفظ فقط بالأخبار البرتقالية والحمراء لأنها الأكثر تأثيرًا.

    كيف أتعامل مع الأخبار؟

    إن كانت الأخبار قبل افتتاح السوق: راقب ردة فعل السوق مباشرة. إذا كانت الحركة عنيفة، لا تتداول. إذا كانت هادئة، يمكنك التداول بشكل طبيعي. إن كانت الأخبار بعد افتتاح السوق: لا تهمك لأنك تتداول فقط في أول ساعة من افتتاح نيويورك حسب الخطة.

    كيف أقرأ البيانات؟

    اضغط على رمز المجلد بجانب الخبر. سترى جدولًا فيه: الرقم الفعلي (Actual) التوقع (Forecast) السابق (Previous)

    📌 إذا كان الرقم الفعلي أقل من التوقع، فهذا:

    جيد للعملة (مثلاً الدولار). سيء للسوق المالي (مثلاً SPX).

    بالعكس، إذا كان الرقم أعلى من المتوقع، يكون جيدًا للأسهم وسيئًا للعملة.

    🟨 الدرس 13: خطة التدرّج نحو الاحتراف

    هذه الخطة تناسب من يبدأ من الصفر حتى يحصل على حساب حقيقي ممول:

    ✅ الخطوة 1: حساب تجريبي

    طبّق الاستراتيجية الكاملة بحذافيرها. لا تخالف إدارة المخاطر. حقّق ربح 10%. هذا سيجعلك تتعود على التداول بلا مشاعر.

    ✅ الخطوة 2: حساب صغير ($100)

    نفس الشيء، لكن بمال حقيقي. اربح 10% ($10). تعلّم تقبل الخسائر الصغيرة. دون أي انفعال: ربح 1-3$ أو خسارة 1$ = تدريب نفسي رائع.

    ✅ الخطوة 3: حساب متوسط ($1,000 – $5,000)

    الآن أصبحت معتادًا على ضبط النفس. اربح 10% مع الالتزام بالخطة. لا تتعامل مع الأرباح كأموال، بل كمؤشر على “الاحترافية”.

    ✅ الخطوة 4: حساب ممول (Prop Firm)

    اختر شركة تمويل (مثل FTMO أو MyForexFunds). أكمل تحديين: تحقيق 10% مع إدارة رأس مال مثالية. بعد اجتيازهما، ستحصل على حساب حقيقي ممول.

    ✔️ عندما تستلم أول أرباحك:

    افتح حساب حقيقي جديد باسمك. أودع فيه أرباحك وابدأ بالتداول عليه مع الحساب الممول معًا. استمر بإيداع الأرباح في حسابك الخاص حتى تصل إلى 100,000 دولار.

    ✅ الخطوة 5: حسابك الخاص بـ 6 أرقام

    أنت الآن محترف. تابع استخدام نفس خطة التداول والانضباط. كافئ نفسك، وابدأ في الاستفادة من أموالك لبناء حياتك المالية.

    🟨 الدرس 14: الكلمة الختامية

    مبروك 🎉

    إذا وصلت إلى هذا الحد، فأنت من القلّة القليلة (2%) التي صمدت والتزمت وتعلّمت حقًا.

    لقد تحدّيت الظروف، ورفضت الانسحاب، وتحلّيت بالصبر والانضباط.

    ✔️ لقد اتبعت كل قاعدة، وضحّيت، وها أنت الآن تجني ثمار تعبك.

    💡 استخدم مهاراتك وثروتك في بناء حياة أفضل، واستمرّ في نقل هذا الالتزام إلى مجالات أخرى من حياتك.

    🎯 ملاحظة من الكاتب TJR:

    “إذا أصبحت رابحًا، أرسل لي رسالة وصور توضح تطوّرك، لأن هذا يعني لي الكثير. شكرًا لأنك كنت طالبًا ملتزمًا.”

    حمل الكتاب باللغة الانجليزية حيث انها تتضمن صور توضيحية وروابط قناته الخاصة👇🏻