
এই কৌশলটি একটি উচ্চ কার্যকর পরিমাণে ট্রেডিং কৌশল যা একটি পরিমাণগত মডেলের উপর ভিত্তি করে তৈরি করা হয়েছে। এই কৌশলটি মডেলিয়াস ভলিউম মডেলকে একটি বেস মডেল হিসাবে ব্যবহার করে এবং এর উপর ভিত্তি করে এটি প্রসারিত এবং অপ্টিমাইজ করা হয়েছে। এই কৌশলটি বাজারে পরিমাণগত ব্যবসায়ের সুযোগগুলি ক্যাপচার করে এবং স্থিতিশীল মুনাফা অর্জন করে।
এই কৌশলটির কেন্দ্রবিন্দু হল মডেলিয়াস ভলিউম মডেল। এই মডেলটি বাজারে পরিমাণগত লেনদেনের সুযোগগুলি সনাক্ত করতে দাম, লেনদেনের পরিমাণের পরিবর্তনগুলি ব্যবহার করে। বিশেষত, কৌশলটি বন্ধ মূল্য, খোলার মূল্য, সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য ব্যবহার করে এবং একটি নির্দিষ্ট নিয়ম অনুসারে বর্তমান কে-লাইনের দিকনির্দেশ গণনা করে। যখন কে-লাইনের দিকটি পরিবর্তিত হয়, লেনদেনের আকারের উপর ভিত্তি করে লেনদেনের সুযোগের গুণমান নির্ধারণ করা হয়।
মৌলিক ট্রেডিং লজিক হল, যখন সূচকটি নেগেটিভ থেকে পজিটিভ ব্রেকডাউন হয়, তখন বেশি করা হয়; যখন সূচকটি পজিটিভ থেকে নেগেটিভ ব্রেকডাউন হয়, তখন শূন্য করা হয়। এছাড়াও, কৌশলটি ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস, স্টপ স্টপ এবং ট্র্যাকিং স্টপ লস সেট করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল মডেলিয়াস ভলিউম মডেলটি কার্যকরভাবে পরিমাণের ব্যবসায়ের সুযোগগুলি সনাক্ত করতে সক্ষম। traditionalতিহ্যবাহী প্রযুক্তিগত সূচকগুলির তুলনায় এই মডেলটি লেনদেনের পরিমাণের পরিবর্তনের দিকে বেশি মনোযোগ দেয়, যা বর্তমান উচ্চ-ফ্রিকোয়েন্সির পরিমাণের ব্যবসায়ের ক্ষেত্রে খুব কার্যকর। এছাড়াও, কৌশলটির প্রবেশের নিয়মগুলি আরও কঠোর, যা কার্যকরভাবে পরিমাণের ব্যবসায়ের সুযোগগুলি মিস করা এড়াতে পারে এবং একই সাথে অনিয়মের সম্ভাবনা হ্রাস করতে পারে।
এই কৌশলটির প্রধান ঝুঁকিটি হ’ল মডেলিয়াস ভলিউম মডেলটি নিজেই সম্পূর্ণরূপে গোলমাল এড়াতে পারে না। যখন বাজারে অস্বাভাবিক ওঠানামা হয়, তখন ট্রেডিং সিগন্যালের ত্রুটি হতে পারে। তদতিরিক্ত, কৌশলটিতে প্যারামিটার সেটিংগুলি চূড়ান্ত ফলাফলকে প্রভাবিত করে।
ঝুঁকি নিয়ন্ত্রণের জন্য, প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করা যেতে পারে এবং অন্যান্য সূচকগুলির সাথে সহযোগিতামূলক বিচার করা যেতে পারে। এছাড়াও, স্টপ লস এবং স্টপ পজিশনগুলি যুক্তিসঙ্গতভাবে সেট করা দরকার।
এই কৌশলটির কিছু অপ্টিমাইজেশনের জায়গাও রয়েছে। উদাহরণস্বরূপ, মেশিন লার্নিং অ্যালগরিদমের সাথে মিলিত হয়ে প্যারামিটার সেটিংগুলিকে গতিশীলভাবে অনুকূলিতকরণের বিষয়টি বিবেচনা করা যেতে পারে। বা সিদ্ধান্তের নির্ভুলতা বাড়ানোর জন্য আবেগ বিশ্লেষণের মতো সূচকগুলির সাথে মিলিত হতে পারে। এছাড়াও, বিভিন্ন জাতের মধ্যে সম্পর্কগুলি অধ্যয়ন করা এবং বহু জাতের অ্যারেজ মডেল তৈরি করা যেতে পারে।
সামগ্রিকভাবে, এই কৌশলটি মডেলিয়াস ভলিউম কোয়ান্টাম মডেলের সুবিধাগুলি ব্যবহার করে, একটি ক্যাপাসিটরি ট্রেডিং কৌশল ডিজাইন করে যা আরও কার্যকর। এটি প্যারামিটার সমন্বয়, মডেল এক্সটেনশন এবং মেশিন লার্নিংয়ের মাধ্যমে অপ্টিমাইজ করা যেতে পারে, যা প্রকৃত লেনদেনের ক্ষেত্রে আরও ভাল এবং স্থিতিশীল আয় করে।
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="strategy modelius volume model ", shorttitle="mvm",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)
method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating=input(defval=true, type=bool, title="Oscillating")
normalize=input(defval=false, type=bool, title="Normalize")
vol = useTrueRange == "Always" or (useTrueRange == "Auto" and na(volume))? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low
if method == "ATR"
methodvalue := atr(round(methodvalue))
if method == "Part of Price"
methodvalue := close/methodvalue
currclose = na
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose
direction = na
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0
barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol/barcount : vol
x=isOscillating and directionIsDown ? -res : res
TP = input(0) * 10
SL = input(0) * 10
TS = input(1) * 10
TO = input(3) * 10
CQ = 100
TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na
longCondition = crossover(x,0)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(x,0)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)