رینج والیوم کے ساتھ پوزیشنوں کو بڑھانے کے لیے DCA حکمت عملی


تخلیق کی تاریخ: 2023-09-21 10:41:52 آخر میں ترمیم کریں: 2023-09-21 10:41:52
کاپی: 0 کلکس کی تعداد: 806
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

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

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

اس خطرے کو کم کرنے کے لئے ، پیرامیٹرز کو بہتر بنانے اور رجحانات کو فلٹر کرنے کے طریقوں کو متعارف کرایا جاسکتا ہے۔

اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-09-20 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_8",500]]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Ranged Volume DCA Strategy - R3c0nTrader ver 2022-04-19
// For backtesting with 3Commas DCA Bot settings
// Thank you "EvoCrypto" for granting me permission to use "Ranged Volume" to create this strategy
// Thank you "junyou0424" for granting me permission to use "DCA Bot with SuperTrend Emulator" which I used for adding bot inputs, calculations, and strategy
//@version=5
strategy("Ranged Volume DCA Strategy - R3c0nTrader", shorttitle="Ranged Vol DCA Strategy", format=format.volume, overlay=true, pyramiding=999, default_qty_type=strategy.cash, initial_capital=50000, commission_value=0.0)

// INPUTS {
// Start and End Dates
i_startTime = input(defval=timestamp('01 Jan 2015 00:00 +0000'), title='Start Time')
i_endTime = input(defval=timestamp('31 Dec 2050 23:59 +0000'), title='End Time')
inDateRange = true

//Ranged Volume Settings
Range_Length    =   input.int(5,        title="Volume Range Length",                       minval=1)

Heikin_Ashi     =   input(true,     title="Heikin Ashi  (Try toggling for different results)")
Display_Bars    =   input(true,     title="Show Bar Colors")
Display_Break   =   input(true,     title="Show Break-Out")
Display_Range   =   input(true,     title="Show Range")

truncate(number, decimals) =>
    factor = math.pow(10, decimals)
    int(number * factor) / factor

// Strategy Inputs
//sourceInput = input.source(close, "Source")
sourceInput = close
price_deviation = input.float(6.0, title='Price deviation to open safety orders (%)', step=0.25, minval=0.0) / 100
take_profit = input.float(22.0, title='Target Take Profit (%)', step=0.5, minval=0.0) / 100
trailing = input.float(0.0, title='Trailing deviation. Default= 0.0 (%)', step=0.5, minval=0.0) / 100
base_order = input(100.0, title='Base order')
safe_order = input(500.0, title='Safety order')
safe_order_volume_scale = input.float(2.0, step=0.5, title='Safety order volume scale')
safe_order_step_scale = input.float(1.4, step=0.1, title='Safety order step scale')
max_safe_order = input(5, title='Max safety orders')

var current_so = 0
var initial_order = 0.0
var previous_high_value = 0.0
var original_ttp_value = 0.0
// Calculate our key levels
take_profit_level = strategy.position_avg_price * (1 + take_profit)

// }


// SETTINGS {
Close = Heikin_Ashi ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : close
//Close = Heikin_Ashi ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : sourceInput
Open = Heikin_Ashi ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, open) : open


Positive        =    volume
Negative        =   -volume

Highest         =   ta.highest(volume, Range_Length)
Lowest          =   ta.lowest(-volume, Range_Length)

Up              =   Highest > Highest[1] and Close > Open
Dn              =   Highest > Highest[1] and Close < Open

Volume_Color = 
 Display_Break and Up ? color.new(#ffeb3b, 20) : 
 Display_Break and Dn ? color.new(#f44336, 20) : 
 Close > Open ? color.new(#00c0ff, 20) : 
 Close < Open ? color.new(#0001f6, 20) : na
// }

//Plot bar color for volume range indicator
barcolor(Volume_Color, title='Ranged Volume Bar Coloring: (You must disable bar coloring in any studies you added or this may not work properly)')
//barcolor(Display_Bars ? Volume_Color : na)

//

// First Position
if strategy.position_size == 0 and sourceInput > 0 and (Up) and inDateRange
    strategy.entry('Long @' + str.tostring(sourceInput)+'💎✋🤚', strategy.long, qty=base_order / sourceInput)
    initial_order := sourceInput
    current_so := 1
    previous_high_value := 0.0
    original_ttp_value := 0
    original_ttp_value

threshold = 0.0

if safe_order_step_scale == 1.0
    threshold := initial_order - initial_order * price_deviation * safe_order_step_scale * current_so
    threshold

else if current_so <= max_safe_order
    threshold := initial_order - initial_order * ((price_deviation * math.pow(safe_order_step_scale, current_so) - price_deviation) / (safe_order_step_scale - 1))
    threshold

else if current_so > max_safe_order
    threshold := initial_order - initial_order * ((price_deviation * math.pow(safe_order_step_scale, max_safe_order) - price_deviation) / (safe_order_step_scale - 1))
    threshold
    

// Average Down
if current_so > 0 and sourceInput <= threshold and current_so <= max_safe_order and previous_high_value == 0.0
    strategy.entry('😨🙏 SO ' + str.tostring(current_so) + '@' + str.tostring(sourceInput), direction=strategy.long, qty=safe_order * math.pow(safe_order_volume_scale, current_so - 1) / sourceInput)
    current_so += 1
    current_so

// Take Profit!
if take_profit_level <= sourceInput and strategy.position_size > 0 or previous_high_value > 0.0
    if trailing > 0.0
        if previous_high_value > 0.0
            if sourceInput >= previous_high_value
                previous_high_value := sourceInput
                previous_high_value
            else
                previous_high_percent = (previous_high_value - original_ttp_value) * 1.0 / original_ttp_value
                current_high_percent = (sourceInput - original_ttp_value) * 1.0 / original_ttp_value
                if previous_high_percent - current_high_percent >= trailing
                    strategy.close_all(comment='Close (trailing) @' + str.tostring(truncate(current_high_percent * 100, 3)) + '%')
                    current_so := 0
                    previous_high_value := 0
                    original_ttp_value := 0
                    original_ttp_value
        else
            previous_high_value := sourceInput
            original_ttp_value := sourceInput
            original_ttp_value
    else
        strategy.close_all(comment='💰 Close @' + str.tostring(sourceInput))
        current_so := 0
        previous_high_value := 0
        original_ttp_value := 0
        original_ttp_value

// Plot TP
plot(strategy.position_size > 0 ? take_profit_level : na, style=plot.style_linebr, color=color.green, linewidth=2, title="Take Profit")

// Plot All Safety Order lines except for last one as bright blue
plot(strategy.position_size > 0 and current_so <= max_safe_order and current_so > 0 ? threshold : na, style=plot.style_linebr, color=color.new(#00ffff,0), linewidth=2, title="Safety Order")

// Plot Last Safety Order Line as Red
plot(strategy.position_size > 0 and current_so > max_safe_order ? threshold : na, style=plot.style_linebr, color=color.red, linewidth=2, title="No Safety Orders Left")

// Plot Average Position Price Line as Orange
plot(strategy.position_size > 0 ? strategy.position_avg_price : na, style=plot.style_linebr, color=color.orange, linewidth=2, title="Avg Position Price")

// Fill TP Area and SO Area
h1 = plot(strategy.position_avg_price, color=color.new(#000000,100), title="Avg Price Plot Area", display=display.none, editable=false)
h2 = plot(take_profit_level, color=color.new(#000000,100), title="Take Profit Plot Area", display=display.none, editable=false)
h3 = plot(threshold, color=color.new(#000000,100), title="SO Plot Area", display=display.none, editable=false)

// TP Area
fill(h1,h2,color=color.new(#38761d,70), title="Take Profit Plot Area")
// Current SO Area
fill(h1,h3,color=color.new(#3d85c6,70), title="SO Plot Area")