পরিমাণগত ট্রেডিং ডবল মুভিং এভারেজ কৌশলের উপর ভিত্তি করে


সৃষ্টির তারিখ: 2023-12-29 11:03:14 অবশেষে সংশোধন করুন: 2023-12-29 11:03:14
অনুলিপি: 2 ক্লিকের সংখ্যা: 659
1
ফোকাস
1621
অনুসারী

পরিমাণগত ট্রেডিং ডবল মুভিং এভারেজ কৌশলের উপর ভিত্তি করে

ওভারভিউ

এই কৌশলটি চলমান গড় এবং লেনদেনের পরিমাণের উপর ভিত্তি করে, একটি দীর্ঘ লাইন অনুসরণ করে হ্রাসকে আটকাতে একটি পরিমাণগত কৌশল ডিজাইন করেছে। যখন শেয়ারের দাম 20 দিনের লাইনে থাকে এবং সেই দিনের ক্রয়-বিক্রয় পরিমাণের চেয়ে বেশি হয় এবং গত n দিনের গড় লেনদেনের চেয়ে বেশি হয়, তখন বাজারটি একটি মাল্টি-হেড অবস্থায় রয়েছে বলে মনে করা হয়। যখন শেয়ারের দামটি ট্র্যাকের বাইরে চলে যায় এবং সেই দিনের বিক্রয় ক্রয়-বিক্রয় পরিমাণের চেয়ে বেশি হয় এবং গত n দিনের গড় লেনদেনের চেয়ে বেশি হয়, তখন বাজারটি শূন্য অবস্থায় রয়েছে বলে মনে করা হয়।

কৌশল নীতি

এই কৌশলটি মূলত দুটি সূচকের উপর ভিত্তি করে নির্ণয় করা হয়ঃ

  1. ডাবল মিডল লাইন: ২০ তম লাইন এবং ৬০ তম লাইন গণনা করা হয়, যখন ২০ তম লাইনটি ৬০ তম লাইনটি অতিক্রম করে, বাজারটি মুদ্রাস্ফীতির অবস্থায় বলে মনে করা হয়; যখন ২০ তম লাইনটি ৬০ তম লাইনটি অতিক্রম করে, বাজারটি মুদ্রাস্ফীতির অবস্থায় বলে মনে করা হয়।

  2. লেনদেনের পরিমাণঃ প্রতিদিনের লেনদেনের ক্রয় ও বিক্রয় পরিমাণ গণনা করুন, যদি ক্রয় পরিমাণ বিক্রয় পরিমাণের চেয়ে বেশি হয় এবং গত n দিনের গড় লেনদেনের পরিমাণের চেয়ে বেশি হয় তবে এটিকে একাধিক লেনদেন হিসাবে বিবেচনা করুন; যদি বিক্রয় পরিমাণ ক্রয় পরিমাণের চেয়ে বেশি হয় এবং গত n দিনের গড় লেনদেনের পরিমাণের চেয়ে বেশি হয় তবে এটিকে ফাঁকা লেনদেন হিসাবে বিবেচনা করুন।

ট্রেডিং কৌশল এবং যুক্তি নিম্নরূপঃ

মাল্টি হেড এন্ট্রিঃ যখন ক্লোজিং প্রাইস স্টেশনটি 20 তম লাইনে থাকে এবং সেই দিনের ক্রয় বিক্রয় এবং গত n দিনের গড় লেনদেনের পরিমাণের চেয়ে বেশি হয়, তখন বাজারটি একটি পজিশনে রয়েছে বলে মনে করা হয়। উর্ধ্বমুখীতা অনুসারে ব্রিন ব্যান্ডটি গণনা করা হয়। যদি ক্লোজিং প্রাইসটি ব্রিন ব্যান্ডের মধ্যম ট্র্যাক এবং নীচের ট্র্যাকের মধ্যে থাকে তবে এটি আরও বেশি।

খালি মাথা প্রবেশঃ যখন বন্ধের দামটি নিম্নগামী হয় এবং সেই দিনের বিক্রয় পরিমাণ ক্রয় পরিমাণ এবং গত n দিনের গড় লেনদেনের পরিমাণের চেয়ে বেশি হয়, তখন বাজারকে খালি অবস্থায় বিবেচনা করা হয়। উর্ধ্বমুখী হার অনুসারে ব্রিন ব্যান্ড গণনা করা হয়, যদি বন্ধের দাম ব্রিন ব্যান্ডের নীচের ট্র্যাকের চেয়ে কম হয় তবে খালি প্রবেশ করা হয়।

স্টপ এবং লসঃ যুক্তিসঙ্গত স্টপ এবং লস সেট করুন, মুনাফা স্থির করুন বা ক্ষতি হ্রাস করুন। যেমন স্টপ যখন শেয়ারের দাম প্রবেশের দামের তুলনায় 5% বৃদ্ধি পায়; যখন লোকসান 10% পৌঁছে যায়; বা যখন শেয়ারের দাম সাম্প্রতিক নতুন উচ্চতা অতিক্রম করার পরে কিছুটা ফিরে আসে তখন স্টপ।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির সুবিধাগুলো হলঃ

  1. একটি একক প্রযুক্তিগত সূচক দ্বারা বিচার করা অন্ধ এলাকা এড়ানোর জন্য দ্বিগুণ গড় লাইন এবং লেনদেনের পরিমাণের সূচকগুলির সাথে মিলিত।

  2. বিভিন্ন প্যারামিটার ব্যবহার করে ব্রিনের স্ট্রিপগুলি নির্দিষ্ট লেনদেনের দাম নির্ধারণ করে, যা প্রবেশের আরও সুনির্দিষ্ট করে তোলে।

  3. স্টপ-অফ-লস কৌশলটি যুক্তিসঙ্গত, লাভের লকিং এবং ঝুঁকি নিয়ন্ত্রণে সহায়ক।

  4. রিটার্নিং ভাল, আয় স্থিতিশীল, এবং এটি পরিমাণগত লেনদেনের জন্য ব্যবহার করা যেতে পারে।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. ডাবল-ওভাল-লাইন কৌশলটি ত্রুটিযুক্ত সংকেত তৈরি করতে পারে এবং কোয়ান্টাম-এনার্জি সূচকগুলির সাথে মিলিত ফিল্টারিংয়ের প্রয়োজন।

  2. ভুলভাবে ব্রিন-ব্যান্ড প্যারামিটার সেট করা হলে, এটি খুব ঘন ঘন বা বিরলভাবে প্রবেশ করতে পারে।

  3. ফিক্সড স্টপ লস পয়েন্টটি ভুলভাবে সেট করা হয়েছে, যা কৌশলগত লাভের উপর প্রভাব ফেলতে পারে।

  4. “অনেক ঐতিহাসিক তথ্য পুনরায় যাচাইয়ের প্রয়োজন, এবং ডিস্কের মধ্যে অপ্রত্যাশিত ক্ষতির সম্ভাবনা রয়েছে”।

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. সমান্তরাল সিস্টেমের প্যারামিটারগুলিকে অপ্টিমাইজ করুন এবং সর্বোত্তম সমান্তরাল সমন্বয় খুঁজুন।

  2. ব্রিনের প্যারামিটারগুলি অনুকূলিতকরণ করা হয়েছে যাতে এন্ট্রি আরও নির্ভুল হয়।

  3. বাজার পরিস্থিতির উপর ভিত্তি করে যুক্তিসঙ্গত লাভ-ক্ষতির অনুপাত নির্ধারণ করে স্টপ-স্টপ-লস পয়েন্টটি গতিশীলভাবে সামঞ্জস্য করুন।

  4. কৌশলগত সঠিকতা বাড়াতে অন্যান্য প্রযুক্তিগত নির্দেশক যেমন MACD, KD ইত্যাদি যুক্ত করুন।

  5. মেশিন লার্নিং পদ্ধতি ব্যবহার করে স্বয়ংক্রিয়ভাবে সর্বোত্তম প্যারামিটারগুলি খুঁজে বের করুন, যাতে কৌশলগুলি আরও দুর্বল হয়।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
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/
// © KAIST291

//@version=4
strategy("prototype",initial_capital=0.01,commission_type=strategy.commission.percent,commission_value=0.1, format=format.volume, precision=0,overlay=true)
// SETTING //
length1=input(1)
length3=input(3)
length7=input(7)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=(close>Supper and BV>SV and BV>Davgvol)
bull2=(close>ma20  and BV>SV and BV>Davgvol)
bux =(close<Supper and close>Slower and volume<Wavgvol)
bear=(close<Slower and close<lower and SV>BV and SV>Wavgvol)
hi=highest(exit,10)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>ma3 and ma20>ma60 and rsi<70)
    strategy.entry("Long",strategy.long,0.1)

if (strategy.position_avg_price*1.05<close)
    strategy.close("Long",0.1)

else if (highestPriceAfterEntry*0.999<close and close>strategy.position_avg_price*1.002)
    strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.997<close and close>strategy.position_avg_price*1.002)
    strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.995<close and close>strategy.position_avg_price*1.002)
    strategy.close("Long",0.1)
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
    strategy.close("Long",0.1)
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////