ট্রেডিং ভলিউম দ্বারা DCA কৌশলের গতিশীল সমন্বয়

QFL DCA TP SL ATR ADX EMA SMA RSI MACD
সৃষ্টির তারিখ: 2024-04-12 17:12:07 অবশেষে সংশোধন করুন: 2024-04-12 17:12:07
অনুলিপি: 5 ক্লিকের সংখ্যা: 995
1
ফোকাস
1617
অনুসারী

ট্রেডিং ভলিউম দ্বারা DCA কৌশলের গতিশীল সমন্বয়

ওভারভিউ

এই কৌশলটি একটি গতিশীল ডিসিএ কৌশল যা ট্রেডিং ভলিউম এবং মূল্যের উপর ভিত্তি করে তৈরি করা হয়। এটি সর্বশেষ মূল্যের নিম্নতম পয়েন্টটি সনাক্ত করে এবং যখন দামটি সেই নিম্নতম পয়েন্টটি অতিক্রম করে এবং লেনদেনের পরিমাণ বৃদ্ধি পায় তখন পজিশন শুরু করে। দামগুলি অব্যাহতভাবে হ্রাস পেতে থাকায়, কৌশলটি গতিশীল ক্ষতির আকারের উপর নির্ভর করে প্রতিটি পজিশনের সংখ্যাকে গতিশীলভাবে সামঞ্জস্য করে, যতক্ষণ না সেট করা মোট পজিশনের সংখ্যা পৌঁছে যায়।

কৌশল নীতি

  1. ta.pivotlow () ফাংশন দ্বারা সাম্প্রতিক মূল্য নিম্ন পয়েন্ট সনাক্ত করুন এবং এটিকে সমর্থন হিসাবে ব্যবহার করুন।
  2. ঐতিহাসিক মূল্য সমর্থন স্তর অতিক্রম করার পরে পতনের পরিমাণ গণনা করা হয়, যার সংখ্যাটি নিরাপদ দূরত্ব এবং স্টপ-আপের পরিমাণ হিসাবে উল্লেখ করা হয়।
  3. যখন দাম সমর্থন অতিক্রম করে এবং আপেক্ষিক লেনদেনের পরিমাণ সেট করা গুণকের চেয়ে বেশি হয়, তখন পজিশন তৈরির সংকেত দেওয়া হয়।
  4. স্থিরকৃত মোট ভাণ্ডার নির্মাণের সংখ্যা অনুসারে, মোট মূলধনকে সমান অনুপাতের বিভিন্ন অংশে বিভক্ত করুন, প্রতিটি ভাণ্ডার নির্মাণের সময়, বর্তমান ভাণ্ডার নির্মাণের সংখ্যা অনুসারে গতিশীলভাবে ভাণ্ডার নির্মাণের সংখ্যা সামঞ্জস্য করুন, যাতে ভাণ্ডার অবস্থানের সূচকীয় বৃদ্ধি অর্জন করা যায়।
  5. যদি ভাসমান লোকসান একটি নির্ধারিত প্রান্তিক মান পৌঁছায়, তাহলে পজিশনিং প্রক্রিয়া চলাকালীন, পজিশনিং চালিয়ে যান যতক্ষণ না পজিশনিং সংখ্যা পৌঁছায়।
  6. যখন দাম বৃদ্ধি পায় এবং স্টপ-অফ-প্রাইস হয়, তখন সমস্ত পজিশন খালি করে ফেলুন।

কৌশলগত সুবিধা

  1. ডায়নামিক অ্যাডজাস্ট পজিশনের সংখ্যাঃ দামের পতনের সময় ভাসমান ক্ষতির উপর ভিত্তি করে, ঝুঁকি নিয়ন্ত্রণের পাশাপাশি, দামের পুনরুদ্ধারের সময় আরও বেশি মুনাফা অর্জনের জন্য প্রতিটি পজিশনের সংখ্যাকে গতিশীলভাবে সামঞ্জস্য করুন।
  2. ঐতিহাসিক ডেটা সেট প্যারামিটারগুলিকে রেফারেন্স করুনঃ ঐতিহাসিক মূল্যের পরে সমর্থন ছাড়ার পরে পতনের পরিমাণ গণনা করে, এর মধ্যে থেকে একটি নিরাপদ দূরত্ব এবং স্টপ-আপ প্যারামিটার হিসাবে রেফারেন্স হিসাবে ডাইজেটগুলি গ্রহণ করুন, যাতে কৌশলগত প্যারামিটারগুলি বাজারের প্রকৃত পরিস্থিতির আরও কাছাকাছি থাকে।
  3. মোট পজিশনের সংখ্যা সীমাবদ্ধ করুনঃ মোট পজিশনের সংখ্যা সেট করে, কৌশলটির মোট ঝুঁকির প্রান্তটি নিয়ন্ত্রণ করুন এবং অতিরিক্ত পজিশনের ফলে ক্ষতি এড়ান।

কৌশলগত ঝুঁকি

  1. সহায়ক স্তর ব্যর্থতার ঝুঁকিঃ যদি বাজারে চরম পরিস্থিতি দেখা দেয় এবং দামগুলি সহায়ক স্তর অতিক্রম করার পরে ক্রমাগতভাবে হ্রাস পায়, তবে কৌশলগত পজিশনিং প্রক্রিয়াটি বড় ক্ষতির কারণ হতে পারে।
  2. প্যারামিটার সেটিংয়ের ঝুঁকিঃ কৌশলটির কার্যকারিতা প্যারামিটার সেটিংয়ের উপর নির্ভর করে, এবং প্যারামিটার সেটিংটি ভুল হলে, কৌশলটি দুর্বল হতে পারে।
  3. স্টপ প্রাইস সেট করার ঝুঁকিঃ যদি স্টপ প্রাইস খুব বেশি সেট করা হয়, তবে মুনাফার কিছু অংশ হারাতে পারে; যদি এটি খুব কম সেট করা হয়, তবে খুব তাড়াতাড়ি পজিশনটি বন্ধ হয়ে যেতে পারে এবং দামের প্রত্যাবর্তনের সুযোগটি পুরোপুরি কাজে লাগানো যায় না।

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  1. আরও সূচক প্রবর্তন করুনঃ সংকেতের নির্ভুলতা বাড়ানোর জন্য আরও প্রযুক্তিগত সূচক যেমন আরএসআই, এমএসিডি ইত্যাদি সংকেতের সিদ্ধান্তে প্রবর্তন করা যেতে পারে।
  2. অপ্টিমাইজড ফান্ড ম্যানেজমেন্টঃ বাজারের অস্থিরতা, অ্যাকাউন্টের ঝুঁকি সহনশীলতা ইত্যাদির মতো বিষয়গুলির উপর ভিত্তি করে, ঝুঁকিগুলি আরও ভালভাবে নিয়ন্ত্রণ করার জন্য প্রতিটি পোজিশনের জন্য তহবিলের অনুপাতটি গতিশীলভাবে সামঞ্জস্য করা যেতে পারে।
  3. স্বনির্ধারিত স্টপ লসঃ বাজারের পরিবর্তনশীলতার উপর নির্ভর করে স্টপ লসের মাত্রা গতিশীলভাবে সামঞ্জস্য করে যাতে বাজারের পরিবর্তনের সাথে আরও ভালভাবে মানিয়ে নেওয়া যায়।

সারসংক্ষেপ

এই কৌশলটি পজিশনের সংখ্যা এবং ইতিহাসের ডেটা রেফারেন্সের মাধ্যমে প্যারামিটার সেট করার পদ্ধতিটি গতিশীলভাবে সামঞ্জস্য করে, ঝুঁকি নিয়ন্ত্রণের পাশাপাশি, দামের বিপর্যয় হলে আরও বেশি লাভ অর্জনের চেষ্টা করে। তবে, কৌশলটির কার্যকারিতা প্যারামিটার সেট এবং বাজারের অবস্থার উপর নির্ভর করে। এখনও কিছু ঝুঁকি রয়েছে। আরও সূচক, তহবিল পরিচালনার অপ্টিমাইজেশন এবং স্বয়ংক্রিয় স্টপ লস ইত্যাদির প্রবর্তনের মাধ্যমে কৌশলটির কার্যকারিতা আরও উন্নত করা যেতে পারে।

কৌশল সোর্স কোড
/*backtest
start: 2024-04-04 00:00:00
end: 2024-04-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AHMEDABDELAZIZZIZO

//@version=5

strategy("Qfl Dca strategy", overlay=true)

// Parameters
swing = input(3 , title = "Swing Points")
mediandropmult = input.float(1.1, "Median drop Mult", step=0.1 , tooltip = "The script Calculate The Median Drop for all last Bases That Was cracked you can Increase or decrease it")
floatinglossvalue = input(-5 , "Floating Loss" , tooltip = "Position Floating Loss to start firs DCA order")
num_orders = input(5 , "Number of all orders" , tooltip = " The number of orders is including the base order and the DCA orders the script will alculate every order qty based on the orders number So that the position size doubles with every order")
length = input(20, title="Length of relative volume" ,tooltip =  " the length of relative volume indicator")
mult = input(2.0, title="Volume Multiplier" , tooltip = "you can adjust the relative volume multiplier to find best parameter")
tpmult = input.float(1, step=0.1 ,title = "Take Profit Multiplier" ,tooltip =  " By default, the script is set to take profits based on the same median drop percent you can adjust it as you like")



// Pivot Calculation
p = ta.pivotlow(low, swing, swing)
v = ta.valuewhen(p, low[swing], 0)

// Variables
var float[] lows = array.new_float()
var float chn = na

// Calculate drops
if v < v[1]
    chn := (v[1] - v) / v[1] * 100
    if array.size(lows) < 4000
        array.push(lows, chn)
    else
        array.shift(lows)
        array.push(lows, chn)

mediandrop = array.avg(lows)
maxdrop = array.max(lows)
mindrop = array.min(lows)

// Table display
textcolor = color.white
// tabl = table.new(position=position.top_right, columns=4, rows=4)
// table.cell(table_id=tabl, column=1, row=1, text="Avg Drop %", width=15, text_color=textcolor)
// table.cell(table_id=tabl, column=2, row=1, text="Min Drop %", width=15, text_color=textcolor)
// table.cell(table_id=tabl, column=3, row=1, text="Max Drop %", width=15, text_color=textcolor)
// table.cell(table_id=tabl, column=1, row=2, text=str.tostring(mediandrop), width=10, text_color=textcolor)
// table.cell(table_id=tabl, column=2, row=2, text=str.tostring(mindrop), width=10, text_color=textcolor)
// table.cell(table_id=tabl, column=3, row=2, text=str.tostring(maxdrop), width=10, text_color=textcolor)

// Plot support
t = fixnan(ta.pivotlow(low, swing, swing))
plot(t, color=ta.change(t) ? na : #03f590b6, linewidth=3, offset=-(swing), title="Support")

// Calculate relative volume
avgVolume = ta.sma(volume, length)
relVolume = volume / avgVolume

// Base Activation
var bool baseisactive = na
if not na(p)
    baseisactive := true

// Buy Signal Calculation
buyprice = v * (1 - (mediandrop / 100) * mediandropmult)
signal = close <= buyprice and relVolume > mult and baseisactive

// Take Profit Calculation
tpsl = (mediandrop / 100)
tp = (strategy.position_avg_price * (1 + (tpsl * tpmult)))

// Position Sizing
capital_per_order(num_orders, equity) =>
    equity / math.pow(2, (num_orders - 1))

equity_per_order = capital_per_order(num_orders, strategy.equity)

qty_per_order(equity_per_order, order_number) =>
    equity_per_order * order_number / close

// Calculate floating loss
floatingLoss = ((close - strategy.position_avg_price) / strategy.position_avg_price) * 100

// Strategy Entries
if signal and strategy.opentrades == 0
    strategy.entry("Buy", strategy.long, qty=qty_per_order(equity_per_order, 1))
    baseisactive := false

for i = 1 to num_orders -1
    if signal and strategy.opentrades == i and floatingLoss <= floatinglossvalue
        strategy.entry("Buy", strategy.long, qty=qty_per_order(equity_per_order, i), comment="DCA Order" + str.tostring(i))
        baseisactive := false

// Strategy Exit
strategy.exit("exit", "Buy", limit=tp)

// Plot
plot(strategy.position_avg_price, color=color.rgb(238, 255, 0), style=plot.style_linebr, linewidth=2)