ڈی سی اے حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-21 10:41:52
ٹیگز:

جائزہ

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

حکمت عملی منطق

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

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

فوائد کا تجزیہ

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

خطرے کا تجزیہ

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

خطرات کو پیرامیٹر کی اصلاح، رجحان فلٹر وغیرہ کے ذریعے کم کیا جا سکتا ہے.

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

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

خلاصہ

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


/*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")

مزید