এলোমেলো হাঁটার কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-০৯-১৬ঃ১০ঃ২৪
ট্যাগঃ

সারসংক্ষেপ

র্যান্ডম ওয়াক কৌশল হল র্যান্ডম নাম্বার জেনারেশনের উপর ভিত্তি করে একটি স্বয়ংক্রিয় ট্রেডিং কৌশল। এটি একটি সেট বীজের উপর ভিত্তি করে র্যান্ডমভাবে সংখ্যা তৈরি করতে একটি রৈখিক সম্মিলিত জেনারেটর ব্যবহার করে। যখন সংখ্যাটি একটি থ্রেশহোল্ডের চেয়ে বড় হয় তখন এটি দীর্ঘ হয়, যখন কম হয় তখন এটি সংক্ষিপ্ত হয়, র্যান্ডম এন্ট্রি দীর্ঘ / সংক্ষিপ্ত বাস্তবায়ন করে।

কৌশলগত যুক্তি

র্যান্ডম ট্রেডিং বাস্তবায়নের প্রধান অংশগুলি হলঃ

  1. এলোমেলো সংখ্যা উৎপন্ন করার জন্য পরামিতি a, c এবং মডুলাস m, পাশাপাশি প্রাথমিক বীজ সেট করুন।

  2. 0-m এর মধ্যে র্যান্ডম সংখ্যা উৎপন্ন করার জন্য রৈখিক সমান্তরাল অ্যালগরিদম ব্যবহার করে র্যান্ডম নম্বর জেনারেশন ফাংশন GetRandom সংজ্ঞায়িত করুন।

  3. প্রতিটি মোমবাতিতে, যদি কোন অবস্থান না থাকে, তাহলে তৈরি র্যান্ডম নম্বর আকারের তুলনা করুন, m/2 এর চেয়ে বড় হলে লম্বা যান, অন্যথায় শর্ট যান।

  4. স্টপ লস সেট করুন এবং শতাংশে লাভের শর্ত নিন।

  5. টাইমফ্রেম অনুসারে ব্যাকটেস্ট সময় নির্ধারণ করুন।

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

সুবিধা বিশ্লেষণ

  • সহজ এবং স্পষ্ট কৌশল যুক্তি, সহজেই বুঝতে এবং বাস্তবায়ন।

  • র্যান্ডম ট্রেডিং কার্যকরভাবে মানসিক প্রভাব এড়ায় এবং বিষয়গত ভুল অপারেশন হ্রাস করে।

  • কাস্টমাইজযোগ্য র্যান্ডম নম্বর জেনারেশন প্যারামিটার র্যান্ডমালিটি সামঞ্জস্য করতে।

  • একক লাভ/হানি নিয়ন্ত্রণের জন্য নমনীয় স্টপ লস এবং লাভ গ্রহণের সেটিংস।

  • মোট মুনাফার উপর বিভিন্ন পরামিতির প্রভাব ব্যাকটেস্টিংয়ের মাধ্যমে পরামিতি অপ্টিমাইজেশান সমর্থন করে।

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

  • র্যান্ডম ট্রেডিংয়ের ফলে অনির্ধারিত দীর্ঘমেয়াদী প্রবণতা এবং অনিশ্চিত মুনাফা হতে পারে।

  • বাজারের অবস্থার উপর ভিত্তি করে অবস্থানগুলি সামঞ্জস্য করতে অক্ষম, ট্রেন্ড সুযোগগুলি মিস করতে পারে।

  • সীমিত একক মুনাফা, উচ্চ ড্রোন ঝুঁকি।

  • উল্লেখযোগ্য ক্ষতি এড়াতে যুক্তিসঙ্গত স্টপ লস/ট্যাক প্রফিট রেসিও প্রয়োজন।

  • এলোমেলোতার কারণে ঘন ঘন খোলা/বন্ধ পজিশন ট্রেডিং খরচ বৃদ্ধি করে।

  • যুক্তিসঙ্গত প্যারামিটার সেটিং যাচাই করার জন্য পর্যাপ্ত ব্যাকটেস্টিং প্রয়োজন, অন্ধভাবে ব্যবহার করবেন না।

প্রবণতা মূল্যায়ন, স্টপ লস প্রক্রিয়া অপ্টিমাইজেশন, একক মুনাফা/ক্ষতি নিয়ন্ত্রণ ইত্যাদির মাধ্যমে ঝুঁকি হ্রাস করা যেতে পারে।

উন্নতির দিকনির্দেশ

  • ট্রেন্ডের বিরুদ্ধে ট্রেডিং এড়াতে ট্রেন্ড বিচার যোগ করুন।

  • মূলধন পরিবর্তনের উপর ভিত্তি করে পজিশনের আকার যোগ করুন।

  • আরও ভাল র্যান্ডমাইজেশনের জন্য র্যান্ডম নাম্বার জেনারেশন অ্যালগরিদম অপ্টিমাইজ করুন।

  • ডায়নামিক স্টপ লস/টেক প্রফিট শতাংশ।

  • অর্ডার ফ্রিকোয়েন্সি সীমাবদ্ধ করুন।

  • মাল্টি-প্যারামিটার ব্যাকটেস্ট অপ্টিমাইজেশান।

সংক্ষিপ্তসার

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


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

a = 16
c = 10
m = 1000
GetRandom(prev) =>
    GetRandom = (a * prev + c) % m

seed = input(200, minval = 2, maxval = m)
stopLoss = input(30, title = "Stop loss percentage(0.1%)")
takeProfit = input(30, title = "Take profit percentage(0.1%)")


curRandom = na
curRandom := nz(curRandom[1]) == 0 ? seed : GetRandom(curRandom[1])
if (strategy.position_size == 0)
    if (curRandom >= m / 2)
        strategy.entry("Enter", strategy.long)
    else
        strategy.entry("Enter", strategy.short)
        
    strategy.exit("Exit", "Enter", loss = close * stopLoss / 1000 / syminfo.mintick, profit = close * takeProfit / 1000 / syminfo.mintick)            

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()

আরো