এই কৌশলটি একটি দীর্ঘমেয়াদী প্রবণতা অনুসরণকারী পরিমাণগত কৌশল জন্য চলমান গড় এবং ট্রেডিং ভলিউম প্রযুক্তিগত সূচক উপর ভিত্তি করে ডিজাইন করা হয়। যখন বন্ধ মূল্য 20 দিনের চলমান গড় লাইন উপরে দাঁড়িয়েছে এবং দিনের ক্রয় ভলিউম বিক্রয় ভলিউম এবং গত n দিনের মধ্যে গড় ট্রেডিং ভলিউম বেশী, বাজার একটি উত্থান রাষ্ট্র বিবেচনা করা হয় এবং এটি কিনতে সময়। যখন বন্ধ মূল্য নিম্ন রেল অধীনে বিরতি এবং দিনের বিক্রয় ভলিউম ক্রয় ভলিউম এবং গত n দিনের মধ্যে গড় ট্রেডিং ভলিউম বেশী, বাজার একটি bearish রাষ্ট্র বিবেচনা করা হয় এবং এটি বিক্রি করার সময়।
কৌশলটি মূলত মূল্যায়নের জন্য দুটি সূচকের উপর ভিত্তি করেঃ
দ্বৈত চলমান গড় রেখা: ২০ দিনের রেখা এবং ৬০ দিনের রেখা গণনা করুন। যখন ২০ দিনের রেখা ৬০ দিনের রেখার উপরে অতিক্রম করে, তখন বাজারকে উর্ধ্বমুখী বলে মনে করা হয়। যখন ২০ দিনের রেখা ৬০ দিনের রেখার নীচে অতিক্রম করে, তখন বাজারকে নিম্নমুখী বলে মনে করা হয়।
ট্রেডিং ভলিউমঃ দৈনিক ক্রয় ভলিউম এবং বিক্রয় ভলিউম গণনা করুন। যদি ক্রয় ভলিউম বিক্রয় ভলিউম এবং গত n দিনের গড় ট্রেডিং ভলিউমের চেয়ে বড় হয় তবে এটি নির্ধারিত হয় যে বাজারটি উত্থানমুখী। যদি বিক্রয় ভলিউম ক্রয় ভলিউম এবং গত n দিনের গড় ট্রেডিং ভলিউমের চেয়ে বড় হয় তবে এটি নির্ধারিত হয় যে বাজারটি হ্রাসমুখী।
নির্দিষ্ট ট্রেডিং কৌশল এবং যুক্তি নিম্নরূপঃ
লং যানঃ যখন বন্ধের মূল্য 20 দিনের চলমান গড় রেখার উপরে থাকে এবং দিনের ক্রয়ের পরিমাণ বিক্রয় পরিমাণ এবং গত n দিনের মধ্যে গড় ব্যবসায়ের পরিমাণের চেয়ে বেশি হয়, তখন বাজারকে উত্থান বলে মনে করা হয়। অস্থিরতার উপর ভিত্তি করে বোলিংজার ব্যান্ডগুলি গণনা করুন, যদি বন্ধের মূল্য বোলিংজার ব্যান্ডগুলির মাঝারি লাইন এবং নিম্ন রেলের মধ্যে থাকে তবে দীর্ঘ যান।
সংক্ষিপ্ত যানঃ যখন বন্ধের মূল্য নিম্ন রেলের নীচে ভাঙ্গবে এবং দিনের বিক্রয় পরিমাণ ক্রয়ের পরিমাণ এবং গত এন দিনের গড় ট্রেডিং ভলিউমের চেয়ে বেশি হবে, তখন বাজারটি হ্রাসকারী বলে মনে করা হয়। অস্থিরতার উপর ভিত্তি করে বলিংজার ব্যান্ডগুলি গণনা করুন, যদি বন্ধের মূল্য বলিংজার ব্যান্ডগুলির নিম্ন রেলের নীচে থাকে তবে সংক্ষিপ্ত যান।
মুনাফা গ্রহণ এবং স্টপ লসঃ মুনাফা লক করতে বা ক্ষতি হ্রাস করার জন্য যুক্তিসঙ্গত মুনাফা গ্রহণ এবং স্টপ লস স্তর সেট করুন। উদাহরণস্বরূপ, যখন দাম প্রবেশ মূল্যের তুলনায় 5% বৃদ্ধি পায়, তখন মুনাফা নিন; যখন ক্ষতি 10% এ পৌঁছে যায়, তখন ক্ষতি বন্ধ করুন; অথবা যখন দাম সাম্প্রতিক নতুন উচ্চতা পায় এবং তারপর কিছু পরিমাণে ফিরে আসে, তখন মুনাফা নিন।
এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:
দুটি চলমান গড় রেখা এবং ট্রেডিং ভলিউম সূচক একত্রিত করা একক প্রযুক্তিগত সূচকের বিচারের অন্ধ দাগগুলি এড়ায়।
বিভিন্ন প্যারামিটার সহ বোলিংজার ব্যান্ড ব্যবহার করে আরও সুনির্দিষ্ট এন্ট্রি মূল্য নির্ধারণ করা হয়।
মুনাফা গ্রহণ এবং স্টপ লস কৌশল যুক্তিসঙ্গত, যা মুনাফা লক করতে এবং ঝুঁকি নিয়ন্ত্রণ করতে সহায়তা করে।
স্থিতিশীল আয় সহ ভাল ব্যাকটেস্টিং ফলাফল, যা প্রকৃতপক্ষে পরিমাণগত ট্রেডিংয়ে প্রয়োগ করা যেতে পারে।
এই কৌশলের কিছু ঝুঁকিও রয়েছে:
দ্বৈত চলমান গড় কৌশলগুলি মিথ্যা সংকেত উত্পাদন করে এবং ভলিউম সূচক দ্বারা ফিল্টার করা প্রয়োজন।
Bollinger Bands প্যারামিটার সেটিং ভুল হলে খুব ঘন ঘন বা বিরল এন্ট্রি হতে পারে।
ভুল ফিক্সড লাভ গ্রহণ এবং স্টপ লস পয়েন্ট কৌশল রিটার্ন প্রভাবিত করতে পারে।
ব্যাকটেস্টিংয়ের জন্য প্রচুর পরিমাণে ঐতিহাসিক তথ্যের প্রয়োজন হয় এবং লাইভ ট্রেডিংয়ে অপ্রত্যাশিত ক্ষতি এখনও ঘটতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
সর্বোত্তম চলমান গড় সংমিশ্রণ খুঁজে পেতে চলমান গড় সিস্টেমের পরামিতিগুলি অনুকূল করুন।
আরও সুনির্দিষ্ট এন্ট্রি জন্য Bollinger Bands পরামিতি অপ্টিমাইজ করুন।
যুক্তিসঙ্গত ঝুঁকি-প্রতিদান অনুপাত নির্ধারণের জন্য বাজারের অবস্থার উপর ভিত্তি করে লাভ গ্রহণ এবং স্টপ লস পয়েন্টগুলি গতিশীলভাবে সামঞ্জস্য করুন।
কৌশলগত নির্ভুলতার উন্নতির জন্য অন্যান্য প্রযুক্তিগত সূচক যেমন MACD, KD ইত্যাদির বিচার বৃদ্ধি করুন।
মেশিন লার্নিং পদ্ধতি ব্যবহার করে স্বয়ংক্রিয়ভাবে সর্বোত্তম প্যারামিটার খুঁজে বের করুন যাতে কৌশলগুলি আরও শক্তিশালী হয়।
সামগ্রিকভাবে, এটি ভাল ব্যাকটেস্টিং পারফরম্যান্স সহ একটি খুব ব্যবহারিক পরিমাণগত ট্রেডিং কৌশল। এটি বাস্তবায়ন করা সহজ, নিয়ন্ত্রণযোগ্য ঝুঁকি সহ, এবং লাইভ ট্রেডিংয়ের জন্য উপযুক্ত একটি স্থিতিশীল কৌশল, যা পরিমাণগত ব্যবসায়ীদের জন্য শেখার যোগ্য। অবশ্যই, কৌশল অপ্টিমাইজেশনের জন্য এখনও অনেক জায়গা রয়েছে এবং আমি আরও পরিমাণগত ট্রেডিং বিশেষজ্ঞদের এটি উন্নত করার প্রত্যাশায় রয়েছি।
/*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) ////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////