یہ حکمت عملی ڈالر لاگت اوسط (ڈی سی اے) کے اصولوں کا استعمال کرتے ہوئے ذخیرہ اندوزی کی تجارت کے لئے ایک ریٹرننگ طریقہ کار ہے۔ یہ ابتدائی پوزیشن کھولنے کے بعد ، مقررہ قیمت کے انحراف فیصد اور ذخیرہ اندوزی کی تعداد کے قواعد کے مطابق پوزیشن میں اضافہ کرسکتا ہے۔ اس کے علاوہ ، اس حکمت عملی میں اسٹاپ اسٹاپ حکمت عملی اور ٹریکنگ اسٹاپ اسٹاپ کی خصوصیات بھی شامل ہیں۔
اس حکمت عملی میں پہلے پیمائش کے وقت کی ونڈو کے اندر ، جب دن کی اختتامی قیمت 0 سے زیادہ ہو تو فوری طور پر پوزیشن کھول دی جاتی ہے ، اس وقت کی افتتاحی قیمت بنیادی قیمت bo_level کے طور پر ہے۔ اس کے بعد ، اگر کوئی محفوظ آرڈر موجود نہیں ہے تو ، () so) ، اس کے نتیجے میں ، ممکنہ خالی پوزیشن کے تمام آرڈرز کو موجودہ قطار میں ڈال دیا جائے گا ، اس کی بنیاد پر جو قیمت مقرر کی گئی ہے۔ خاص طور پر ، محفوظ آرڈر کی قیمت آخری محفوظ آرڈر کی قیمت پر مبنی ہوگی۔
پوزیشن رکھنے کے مرحلے میں ، اگر پوزیشن کی مقدار 0 سے زیادہ ہے تو ، بیس قیمت اور ہدف اسٹاپ فی صد کی بنیاد پر اسٹاپ قیمت کا حساب کتاب کیا جائے گا۔ اگر ٹریکنگ اسٹاپ کی خصوصیت بند کردی گئی ہے تو ، اس فکسڈ اسٹاپ قیمت کا استعمال کریں۔ دوسری صورت میں ، اسٹاپ ٹریکنگ کی اعلی ترین قیمت کے مطابق ، اسٹاپ ٹریکنگ کی اعلی ترین قیمت کو مسلسل اپ ڈیٹ کیا جائے گا ، اور اس کے مطابق اسٹاپ قیمت کو ایڈجسٹ کیا جائے ، تاکہ ٹریکنگ اسٹاپ کو پورا کیا جاسکے۔
ڈی سی اے حکمت عملی کا استعمال کرتے ہوئے ، قیمتوں میں کمی کے بعد خود بخود پوزیشن میں اضافہ کیا جاسکتا ہے ، جس سے اوسط پوزیشن رکھنے کی لاگت کو کم کیا جاسکتا ہے ، جس سے سسٹم کے خطرے کو خطرہ لاحق ہوتا ہے۔
اپنی مرضی کے مطابق پیرامیٹرز کی حمایت کرتا ہے، پوزیشن کھولنے کے قواعد اور سٹاپ کی حکمت عملی کو مختلف اقسام اور ٹریڈنگ سٹائل کے مطابق لچکدار ترتیب دے سکتا ہے.
بلٹ ان ٹریکنگ اسٹاپ فنکشن ، جو اسٹاپ کی پوزیشن کو خود بخود ایڈجسٹ کرسکتا ہے ، تاکہ اسٹاپ کو جلدی سے متحرک نہ کیا جاسکے۔
پیمائش کے پیرامیٹرز کی لچکدار ترتیب سے مختلف وقت کے اعداد و شمار کی جانچ پڑتال اور حکمت عملی کی تاثیر کا اندازہ لگایا جاسکتا ہے۔
3commas پلیٹ فارم کے ساتھ مل کر، آپ کو اضافی ترقی کی ضرورت کے بغیر، براہ راست نتائج کی جانچ پڑتال کے ساتھ ایک حقیقی روبوٹ تشکیل دے سکتے ہیں.
ڈی سی اے حکمت عملی میں ذخیرہ اندوزی کا خطرہ موجود ہے ، اگر مارکیٹ میں کمی جاری رہی تو ، ذخیرہ اندوزی میں مزید اضافہ ہوگا اور نقصان بھی بڑھ جائے گا۔ ذخیرہ اندوزی کے اصولوں کو مناسب طریقے سے ترتیب دینے کی ضرورت ہے۔
فکسڈ فی صد اسٹاپ مارکیٹ کے اتار چڑھاؤ کی شدت کے مطابق ایڈجسٹ نہیں کیا جاسکتا ہے ، اور اس سے قبل اسٹاپ یا اسٹاپ اسٹاپ کو چھوڑ دیا جاسکتا ہے۔ اسٹاپ ٹریکنگ کو ترتیب دینے کی ضرورت ہے۔
ہم آہنگی کا خطرہ موجود ہے ، اور ٹرانزیکشن کی لاگت جیسے عوامل کے ذریعہ فلیٹ اثر پڑتا ہے۔ خطرے کی تشخیص کی ضرورت ہے۔
اس کے علاوہ ، اس بات کو یقینی بنانا ہے کہ ایکسچینج اور 3commas کے نظام کی استحکام پر توجہ دی جائے تاکہ اس بات کو یقینی بنایا جاسکے کہ منصوبہ بند تجارت کی ناکامی کو روکا جاسکے۔
مختلف اقسام کے اتار چڑھاؤ کی رفتار کے مطابق قیمتوں کو فی صد سے مختلف کرنے کے لئے ، ذخیرہ اندوزی کے قواعد کو بہتر بنانے کے لئے۔
اس کے علاوہ، آپ کو زیادہ سائنسی روک تھام فی صد کا تعین کرنے کے لئے اتار چڑھاؤ کی شرح کے اشارے کے ساتھ مل کر کر سکتے ہیں.
مناسب واپسی کے وقت کی کھڑکیوں کو مخصوص اقسام کے لئے مختلف ٹرانزیکشن اوقات کے مطابق مقرر کیا جاسکتا ہے۔
نقصانات کو روکنے کی حکمت عملی متعارف کروائی جاسکتی ہے اور بڑے نقصانات کے دوران نقصانات کو روکنے کے لئے نکل سکتے ہیں۔
حکمت عملی کو متحرک طور پر پیرامیٹرز کو بہتر بنانے کے لئے مشین لرننگ الگورتھم کے ساتھ جوڑا جاسکتا ہے۔
یہ حکمت عملی مجموعی طور پر ایک بہت ہی عملی ڈی سی اے ریٹرننگ پروگرام ہے۔ یہ اچھی طرح سے اپنی مرضی کے مطابق پیرامیٹرز کی ترتیبات کی حمایت کرتا ہے ، پوزیشن کھولنے اور روکنے کے قواعد کو لچکدار طریقے سے تشکیل دے سکتا ہے۔ اس کے ساتھ ہی ، اسٹاپ ٹریک کرنے کی خصوصیات کو فکسڈ اسٹاپ کی کمی کو پورا کرتی ہیں۔ ریٹرننگ پیرامیٹرز بھی بہت لچکدار ہیں ، مختلف اقسام اور وقت کے اعداد و شمار کی جانچ کی جاسکتی ہے۔ اگر پیرامیٹرز کو صحیح طریقے سے ترتیب دیا گیا ہو تو ، تجارت کے بہت سارے مواقع والی اقسام میں ، ڈی سی اے حکمت عملی کا استعمال کرتے ہوئے سیکیورٹی سسٹم کا خطرہ ، اس حکمت عملی سے بہت اچھا ریٹرننگ حاصل کیا جاسکتا ہے۔
/*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)