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

ڈی سی اے بوٹ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-26 17:28:27
ٹیگز:

جائزہ

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

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

حکمت عملی سب سے پہلے بند قیمت پر ایک طویل پوزیشن کھولتی ہے جب یہ بیک ٹیسٹ ٹائم فریم کے اندر 0 سے اوپر ہوجاتا ہے۔ یہ انٹری قیمت بیس پرائس بو_لیول کے طور پر ریکارڈ کی جاتی ہے۔ اس کے بعد اگر کوئی سیفٹی آرڈر (تو) موجود نہیں ہے تو یہ موجودہ موم بتی پر تمام ممکنہ آؤٹ آرڈرز رکھتی ہے۔ خاص طور پر ، سیفٹی آرڈر کی قیمت کا حساب آخری سیفٹی آرڈر کی قیمت latest_so_level اور سیفٹی آرڈر مرحلہ پیمانے safe_order_step_scale کی بنیاد پر کیا جاتا ہے۔ یہ لوپ ہوتا ہے جب تک کہ زیادہ سے زیادہ سیفٹی آرڈر count_maxsafe_order تک نہیں پہنچ جاتا ہے۔

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

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

  • ڈی سی اے میکانزم کا استعمال کرتا ہے جب قیمت گرتی ہے تو سسٹم کے خطرات کو ہیج کرنے کے لئے لاگت کی بنیاد کو اوسط کرنے کے لئے.

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

  • قیمت کی کارروائی کی بنیاد پر منافع لینے کے لئے خود کار طریقے سے ایڈجسٹ کرنے کے لئے بلٹ ان ٹریلنگ منافع لینے کے افعال ہیں، قبل از وقت منافع لینے کے ٹرگر سے بچنے.

  • لچکدار بیک ٹیسٹ پیرامیٹر کی ترتیبات حکمت عملی کی کارکردگی کا اندازہ کرنے کے لئے مختلف ٹائم فریم ڈیٹا کی جانچ آسان بناتی ہیں۔

  • براہ راست بیک ٹیسٹ کے نتائج کا استعمال کرتے ہوئے اضافی کوڈنگ کے بغیر 3commas پر زندہ بوٹس تشکیل دے سکتے ہیں.

خطرے کا تجزیہ

  • ڈی سی اے کو خطرہ ہے کہ اگر مارکیٹ میں کمی جاری رہی تو پوزیشنوں اور نقصانات میں مزید اضافہ ہوگا۔ معقول اہرام سازی کے قواعد کی ضرورت ہے۔

  • مقررہ فی صد منافع لینے کے لئے مارکیٹ کی اتار چڑھاؤ کو ایڈجسٹ کرنے کے قابل نہیں، ابتدائی یا دیر سے باہر نکلنے کا خطرہ.

  • بیک ٹیسٹ اوور فٹ کا خطرہ ، لین دین کے اخراجات وغیرہ سے متاثرہ براہ راست کارکردگی۔ مناسب تشخیص کی ضرورت ہے۔

  • پلیٹ فارم استحکام خطرات ناکام عملدرآمد. نگرانی کی ضرورت ہے.

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

  • مختلف اثاثوں کی اتار چڑھاؤ کی بنیاد پر قیمت کے انحراف کو متحرک طور پر ایڈجسٹ کریں تاکہ اہرام سازی کے قوانین کو بہتر بنایا جاسکے۔

  • زیادہ سائنسی منافع کا تناسب طے کرنے کے لئے اتار چڑھاؤ کے اشارے شامل کریں.

  • مخصوص اثاثوں کے ٹریڈنگ سیشنز کی بنیاد پر معقول بیک ٹسٹ ٹائم فریم مقرر کریں۔

  • نقصانات کو کم کرنے کے لئے سٹاپ نقصان کا تعارف کروانا جب پوزیشن کو نمایاں طور پر نیچے لایا جائے.

  • پیرامیٹرز کو متحرک طور پر بہتر بنانے کے لیے مشین لرننگ کا استعمال کریں۔

نتیجہ

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


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 15h
basePeriod: 15m
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/
// © rouxam

// Author: rouxam
// Inspired by the original work of ericlin0122

//@version=4
// strategy("Backtesting 3commas DCA Bot", overlay=true, pyramiding=99, process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.1)

// Strategy Inputs
price_deviation         = input(1.0, type=input.float,  title='Price deviation to open safety orders (%)', minval=0.0, step=0.1)/100
take_profit             = input(1.0, type=input.float,  title='Target Take Profit (%)', minval=0.0, step=0.1)/100
ttp                     = input(0.5, type=input.float,  title='Trailing Take Profit (%) [0 = Disabled]', minval=0.0, step=0.1)/100
base_order              = input(10.0, type=input.float, title='base order') 
safe_order              = input(20.0, type=input.float, title='safe order') 
safe_order_volume_scale = input(2.0, type=input.float,  title='Safety order volume scale', step=0.1) 
safe_order_step_scale   = input(1.5, type=input.float,  title='Safety order step scale', step=0.1) 
max_safe_order          = input(5,                      title='Max safe order', minval=1, maxval=99, step=1) 

// Date Inputs
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = time >= start and time <= finish ? true : false // create function "within window of time"

var bo_level = 0.0
var latest_so_level = 0.0
var next_so_level = 0.0
var ttp_active = false
var ttp_max = 0.0
var ttp_level = 0.0
var take_profit_level = 0.0

if strategy.position_size <= 0.0
    ttp_max := 0.0
    ttp_active := false


// First Position
if(strategy.opentrades == 0 and window and close > 0)
    // Place Buy Order ASAP
    bo_level := open
    strategy.entry("BO", limit=bo_level, long=strategy.long, qty=base_order/bo_level)
    latest_so_level := open

// Dollar Cost Averaging
place_safety_orders = latest_so_level == bo_level
if place_safety_orders
    // Placing all possible exit orders on that candle
    for i = 1 to max_safe_order
        next_so_level := latest_so_level * (1 - price_deviation * pow(safe_order_step_scale,  i - 1))
        so_name = "SO" + tostring(i) 
        strategy.entry(so_name, long=strategy.long, limit=next_so_level, qty=safe_order * pow(safe_order_volume_scale, i - 1)/next_so_level)
        latest_so_level := next_so_level

// Take Profit
if strategy.position_size > 0
    take_profit_level := strategy.position_avg_price * (1 + take_profit)
    if ttp <= 0.0
        // No trailing take profit
        strategy.exit(id="TP", limit=take_profit_level)
    else
        // Trailing take profit
        if take_profit_level <= close
            ttp_max := max(high, ttp_max)
            ttp_active := true
        if ttp_active 
            // Update exit order
            ttp_level := ttp_max * (1 - ttp)
            strategy.exit(id="TTP", stop=ttp_level)


مزید