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

متغیر انڈیکس متحرک اوسط کثیر درجے کے منافع کا رجحان حکمت عملی کے بعد

مصنف:چاؤ ژانگ، تاریخ: 2024-12-12 14:29:53
ٹیگز:بی بیاے ٹی آرسی او ایمٹی پیایم او

چینڈ مومنٹم اوسیلیٹر (MO)

بولنگر بینڈ بطور اتار چڑھاؤ فلٹر: اوپری بینڈ = MA + (K * StdDev) کم بینڈ = MA - (K * StdDev)

داخلے کی شرائط:

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

کثیر سطح کے منافع لینے کے طریقہ کار میں شامل ہیں:

  1. اے ٹی آر پر مبنی منافع
  2. فیصد پر مبنی منافع
  3. مختصر تجارت کے منافع کی فیصد کے لئے ضرب

حکمت عملی کے فوائد

  1. متحرک موافقت: VIDYA اشارے کو خود بخود مارکیٹ کی اتار چڑھاؤ کے مطابق ایڈجسٹ کیا جاتا ہے، روایتی چلتی اوسط سے زیادہ حساس
  2. مضبوط رسک مینجمنٹ: کثیر سطح کے منافع لینے کا طریقہ کار مختلف قیمتوں کی سطح پر منافع میں مقفل کرتا ہے
  3. مختلف ہینڈلنگ: طویل اور مختصر پوزیشنوں کے لئے منافع حاصل کرنے کی مختلف حکمت عملی مارکیٹ کی خصوصیات کے مطابق ہیں
  4. اتار چڑھاؤ فلٹرنگ: بولنگر بینڈ جھوٹے بریکآؤٹ سگنل فلٹر کرنے میں مدد کرتے ہیں
  5. لچکدار پیرامیٹرز: مختلف مارکیٹ کے حالات کے لئے ایڈجسٹ پیرامیٹرز

حکمت عملی کے خطرات

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

اصلاح کی ہدایات

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

خلاصہ

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

// This strategy, "VIDYA ProTrend Multi-Tier Profit," is a trend-following system that utilizes fast and slow VIDYA indicators 
// to identify entry and exit points based on the direction and strength of the trend. 
// It incorporates Bollinger Bands as a volatility filter and features a multi-step take profit mechanism, 
// with adjustable ATR-based and percentage-based profit targets for both long and short positions. 
// The strategy allows for more aggressive take profit settings for short trades, making it adaptable to varying market conditions.

//@version=5
strategy("VIDYA ProTrend Multi-Tier Profit", overlay=true, precision=3, commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=10000)


// User-defined inputs
tradeDirection = input.string(title="Trading Direction", defval="Both", options=["Long", "Short", "Both"])
fastVidyaLength = input.int(10, title="Fast VIDYA Length", minval=1)
slowVidyaLength = input.int(30, title="Slow VIDYA Length", minval=1)
minSlopeThreshold = input.float(0.05, title="Minimum VIDYA Slope Threshold", step=0.01)

// Bollinger Bands Inputs
bbLength = input.int(20, title="Bollinger Bands Length", minval=1)
bbMultiplier = input.float(1.0, title="Bollinger Bands Multiplier", step=0.1)

// Multi-Step Take Profit Settings
group_tp = "Multi-Step Take Profit"
useMultiStepTP = input.bool(true, title="Enable Multi-Step Take Profit", group=group_tp)
tp_direction = input.string(title="Take Profit Direction", defval="Both", options=["Long", "Short", "Both"], group=group_tp)
atrLengthTP =  input.int(14, title="ATR Length", group=group_tp)


// ATR-based Take Profit Steps
atrMultiplierTP1 = input.float(2.618, title="ATR Multiplier for TP 1", group=group_tp)
atrMultiplierTP2 = input.float(5.0, title="ATR Multiplier for TP 2", group=group_tp)
atrMultiplierTP3 = input.float(10.0, title="ATR Multiplier for TP 3", group=group_tp)

// Short Position Multiplier for Take Profit Percentages
shortTPPercentMultiplier = input.float(1.5, title="Short TP Percent Multiplier", group=group_tp)

// Percentage-based Take Profit Steps (Long)
tp_level_percent1 = input.float(title="Take Profit Level 1 (%)", defval=3.0, group=group_tp)
tp_level_percent2 = input.float(title="Take Profit Level 2 (%)", defval=8.0, group=group_tp)
tp_level_percent3 = input.float(title="Take Profit Level 3 (%)", defval=17.0, group=group_tp)

// Percentage-based Take Profit Allocation (Long)
tp_percent1 = input.float(title="Take Profit Percent 1 (%)", defval=12.0, group=group_tp)
tp_percent2 = input.float(title="Take Profit Percent 2 (%)", defval=8.0, group=group_tp)
tp_percent3 = input.float(title="Take Profit Percent 3 (%)", defval=10.0, group=group_tp)

// ATR-based Take Profit Percent Allocation (Long)
tp_percentATR1 = input.float(title="ATR TP Percent 1 (%)", defval=10.0, group=group_tp)
tp_percentATR2 = input.float(title="ATR TP Percent 2 (%)", defval=10.0, group=group_tp)
tp_percentATR3 = input.float(title="ATR TP Percent 3 (%)", defval=10.0, group=group_tp)

// Short position percentage allocations using the multiplier
tp_percent1_short = tp_percent1 * shortTPPercentMultiplier
tp_percent2_short = tp_percent2 * shortTPPercentMultiplier
tp_percent3_short = tp_percent3 * shortTPPercentMultiplier

tp_percentATR1_short = tp_percentATR1 * shortTPPercentMultiplier
tp_percentATR2_short = tp_percentATR2 * shortTPPercentMultiplier
tp_percentATR3_short = tp_percentATR3 * shortTPPercentMultiplier

// VIDYA Calculation Function
calcVIDYA(src, length) =>
    alpha = 2 / (length + 1)
    momm = ta.change(src)
    m1 = momm >= 0.0 ? momm : 0.0
    m2 = momm < 0.0 ? -momm : 0.0
    sm1 = math.sum(m1, length)
    sm2 = math.sum(m2, length)
    chandeMO = nz(100 * (sm1 - sm2) / (sm1 + sm2))
    k = math.abs(chandeMO) / 100
    var float vidya = na
    vidya := na(vidya[1]) ? src : (alpha * k * src + (1 - alpha * k) * vidya[1])
    vidya

// Calculate VIDYAs
fastVIDYA = calcVIDYA(close, fastVidyaLength)
slowVIDYA = calcVIDYA(close, slowVidyaLength)

// Bollinger Bands Calculation
[bbUpper, bbBasis, bbLower] = ta.bb(close, bbLength, bbMultiplier)

// Manual Slope Calculation (price difference over time)
calcSlope(current, previous, length) =>
    (current - previous) / length

// Slope of fast and slow VIDYA (comparing current value with value 'length' bars ago)
fastSlope = calcSlope(fastVIDYA, fastVIDYA[fastVidyaLength], fastVidyaLength)
slowSlope = calcSlope(slowVIDYA, slowVIDYA[slowVidyaLength], slowVidyaLength)

// Conditions for long entry with Bollinger Bands filter
longCondition = close > slowVIDYA and fastVIDYA > slowSlope and fastSlope > minSlopeThreshold and slowSlope > 1/2*minSlopeThreshold and close > bbUpper

// Conditions for short entry with Bollinger Bands filter
shortCondition = close < slowVIDYA and fastSlope < slowSlope and fastSlope < -minSlopeThreshold and slowSlope < -1/2*minSlopeThreshold and close < bbLower

// Exit conditions (opposite crossovers or flat slopes)
exitLongCondition = fastSlope < -minSlopeThreshold and slowSlope < -1/2*minSlopeThreshold or shortCondition
exitShortCondition = fastSlope > minSlopeThreshold and slowSlope > 1/2*minSlopeThreshold or longCondition

// Entry and Exit logic with trading direction
if (longCondition) and (strategy.position_size == 0) and (tradeDirection == "Long" or tradeDirection == "Both")
    strategy.entry("Long", strategy.long)

if (exitLongCondition) and strategy.position_size > 0 and (tradeDirection == "Long" or tradeDirection == "Both")
    strategy.close("Long")

if (shortCondition) and (strategy.position_size == 0) and (tradeDirection == "Short" or tradeDirection == "Both")
    strategy.entry("Short", strategy.short)

if (exitShortCondition) and strategy.position_size < 0 and (tradeDirection == "Short" or tradeDirection == "Both")
    strategy.close("Short")


if useMultiStepTP
    if strategy.position_size > 0 and (tp_direction == "Long" or tp_direction == "Both")
        // ATR-based Take Profit (Long)
        tp_priceATR1_long = strategy.position_avg_price + atrMultiplierTP1 * ta.atr(atrLengthTP)
        tp_priceATR2_long = strategy.position_avg_price + atrMultiplierTP2 * ta.atr(atrLengthTP)
        tp_priceATR3_long = strategy.position_avg_price + atrMultiplierTP3 * ta.atr(atrLengthTP)
        
        // Percentage-based Take Profit (Long)
        tp_pricePercent1_long = strategy.position_avg_price * (1 + tp_level_percent1 / 100)
        tp_pricePercent2_long = strategy.position_avg_price * (1 + tp_level_percent2 / 100)
        tp_pricePercent3_long = strategy.position_avg_price * (1 + tp_level_percent3 / 100)

        // Execute ATR-based exits for Long
        strategy.exit("TP ATR 1 Long", from_entry="Long", qty_percent=tp_percentATR1, limit=tp_priceATR1_long)
        strategy.exit("TP ATR 2 Long", from_entry="Long", qty_percent=tp_percentATR2, limit=tp_priceATR2_long)
        strategy.exit("TP ATR 3 Long", from_entry="Long", qty_percent=tp_percentATR3, limit=tp_priceATR3_long)
        
        // Execute Percentage-based exits for Long
        strategy.exit("TP Percent 1 Long", from_entry="Long", qty_percent=tp_percent1, limit=tp_pricePercent1_long)
        strategy.exit("TP Percent 2 Long", from_entry="Long", qty_percent=tp_percent2, limit=tp_pricePercent2_long)
        strategy.exit("TP Percent 3 Long", from_entry="Long", qty_percent=tp_percent3, limit=tp_pricePercent3_long)

    if strategy.position_size < 0 and (tp_direction == "Short" or tp_direction == "Both")
        // ATR-based Take Profit (Short) - using the same ATR levels as long
        tp_priceATR1_short = strategy.position_avg_price - atrMultiplierTP1 * ta.atr(atrLengthTP)
        tp_priceATR2_short = strategy.position_avg_price - atrMultiplierTP2 * ta.atr(atrLengthTP)
        tp_priceATR3_short = strategy.position_avg_price - atrMultiplierTP3 * ta.atr(atrLengthTP)
        
        // Percentage-based Take Profit (Short) - using the same levels, but more aggressive percentages
        tp_pricePercent1_short = strategy.position_avg_price * (1 - tp_level_percent1 / 100)
        tp_pricePercent2_short = strategy.position_avg_price * (1 - tp_level_percent2 / 100)
        tp_pricePercent3_short = strategy.position_avg_price * (1 - tp_level_percent3 / 100)

        // Execute ATR-based exits for Short (using the percentage multiplier for short)
        strategy.exit("TP ATR 1 Short", from_entry="Short", qty_percent=tp_percentATR1_short, limit=tp_priceATR1_short)
        strategy.exit("TP ATR 2 Short", from_entry="Short", qty_percent=tp_percentATR2_short, limit=tp_priceATR2_short)
        strategy.exit("TP ATR 3 Short", from_entry="Short", qty_percent=tp_percentATR3_short, limit=tp_priceATR3_short)
        
        // Execute Percentage-based exits for Short
        strategy.exit("TP Percent 1 Short", from_entry="Short", qty_percent=tp_percent1_short, limit=tp_pricePercent1_short)
        strategy.exit("TP Percent 2 Short", from_entry="Short", qty_percent=tp_percent2_short, limit=tp_pricePercent2_short)
        strategy.exit("TP Percent 3 Short", from_entry="Short", qty_percent=tp_percent3_short, limit=tp_pricePercent3_short)
// Plot VIDYAs
plot(fastVIDYA, color=color.green, title="Fast VIDYA")
plot(slowVIDYA, color=color.red, title="Slow VIDYA")


متعلقہ

مزید