মাল্টি-টাইম ফ্রেম ডায়নামিক ব্যাকটেস্ট কৌশল


সৃষ্টির তারিখ: 2023-11-21 17:07:17 অবশেষে সংশোধন করুন: 2023-11-21 17:07:17
অনুলিপি: 1 ক্লিকের সংখ্যা: 698
1
ফোকাস
1617
অনুসারী

মাল্টি-টাইম ফ্রেম ডায়নামিক ব্যাকটেস্ট কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি একটি কাস্টম ফাংশন f_get_htfHighLow কল করে বিভিন্ন সময়কালের জন্য সর্বোচ্চ মূল্য nhigh এবং সর্বনিম্ন মূল্য nlow পেতে পারে। বিশেষ করে, ব্যবহারকারীর সেট করা সময়কালের রেজোলিউশন, সময়কালের গুণক HTFMultiplier, lookahead এবং gaps, এবং ওভারফ্লো অফসেট প্যারামিটারগুলির উপর নির্ভর করে security ফাংশনটি বিভিন্ন সময়কালের জন্য সর্বোচ্চ এবং সর্বনিম্ন মূল্য পেতে পারে।

উদাহরণস্বরূপ, যখন অফসেট 0 হয়, তখন বর্তমান K লাইনের সর্বোচ্চ এবং সর্বনিম্ন মূল্য পাওয়া যায়; যখন অফসেট 1 হয়, তখন পূর্ববর্তী K লাইনের সর্বোচ্চ এবং সর্বনিম্ন মূল্য পাওয়া যায়। দুটি K লাইনের মধ্যে দামের পরিবর্তনের তুলনা করে প্রবণতার দিকটি বিচার করুন।

যদি সর্বোচ্চ মূল্য বৃদ্ধি পায় এবং সর্বনিম্ন মূল্য বৃদ্ধি পায়, তবে এটি একটি মুদ্রাস্ফীতির প্রবণতা হিসাবে বিচার করা হবে; যদি সর্বোচ্চ মূল্য হ্রাস পায় এবং সর্বনিম্ন মূল্য হ্রাস পায়, তবে এটি একটি পতনশীল প্রবণতা হিসাবে বিচার করা হবে। প্রবণতার দিকনির্দেশের উপর নির্ভর করে দীর্ঘায়িত বা সংক্ষিপ্ত, লিভারেজ ট্রেডিংয়ের জন্য।

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

  1. মাল্টি-টাইম ফ্রেম বিশ্লেষণ ব্যবহার করে বিচার সঠিকতা বাড়ান
  2. ডায়নামিক রিটার্ন পদ্ধতি ব্যবহার করুন, পুনরায় রঙ করা এড়িয়ে চলুন
  3. বাজারের পরিবর্তনের সাথে সামঞ্জস্য রেখে বিভিন্ন প্যারামিটার সমন্বয়ে নমনীয়তা
  4. প্রবণতা স্পষ্ট হলেই পজিশন খুলুন এবং ঝুঁকি নিয়ন্ত্রণ করুন

কৌশলগত ঝুঁকি

  1. মাল্টিটাইম ফ্রেমওয়ার্ক সিদ্ধান্তে ভুল বোঝাবুঝির ঝুঁকি থাকতে পারে
  2. Repainting এর কারণ হতে পারে ভুল রিভার্স প্যারামিটার সেট করা
  3. ট্রেডিং ফ্রিকোয়েন্সি খুব বেশি হতে পারে, যার ফলে ট্রেডিং খরচ এবং স্লাইড পয়েন্টের ঝুঁকি বাড়তে পারে

সমাধানঃ

  1. সময় চক্রের প্যারামিটার অপ্টিমাইজ করুন, বিচার সঠিকতা উন্নত করুন
  2. রিপেইন্টিং এড়াতে কঠোরভাবে রিপেইন্টিং পরামিতি পরীক্ষা করুন
  3. পজিশন খোলার শর্তাবলী যথাযথভাবে সামঞ্জস্য করুন এবং লেনদেনের ঘনত্ব নিয়ন্ত্রণ করুন

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

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("HTF High/Low Repaint Strategy", overlay=true, initial_capital = 20000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01)

i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true

resolution = input("3M", type=input.resolution)
HTFMultiplier = input(22, minval=1, step=1)
offset = input(0, minval=0, step=1)
lookahead = input(true)
gaps = false

f_secureSecurity_on_on(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on, gaps=barmerge.gaps_on)
f_secureSecurity_on_off(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on, gaps=barmerge.gaps_off)
f_secureSecurity_off_on(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_off, gaps=barmerge.gaps_on)
f_secureSecurity_off_off(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_off, gaps=barmerge.gaps_off)

f_multiple_resolution(HTFMultiplier) => 
    target_Res_In_Min = timeframe.multiplier * HTFMultiplier * (
      timeframe.isseconds   ? 1. / 60. :
      timeframe.isminutes   ? 1. :
      timeframe.isdaily     ? 1440. :
      timeframe.isweekly    ? 7. * 24. * 60. :
      timeframe.ismonthly   ? 30.417 * 24. * 60. : na)

    target_Res_In_Min     <= 0.0417       ? "1S"  :
      target_Res_In_Min   <= 0.167        ? "5S"  :
      target_Res_In_Min   <= 0.376        ? "15S" :
      target_Res_In_Min   <= 0.751        ? "30S" :
      target_Res_In_Min   <= 1440         ? tostring(round(target_Res_In_Min)) :
      tostring(round(min(target_Res_In_Min / 1440, 365))) + "D"

f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset)=>
    derivedResolution = resolution == ""?f_multiple_resolution(HTFMultiplier):resolution
    nhigh_on_on = f_secureSecurity_on_on(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_on_on = f_secureSecurity_on_on(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh_on_off = f_secureSecurity_on_off(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_on_off = f_secureSecurity_on_off(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh_off_on = f_secureSecurity_off_on(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_off_on = f_secureSecurity_off_on(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh_off_off = f_secureSecurity_off_off(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_off_off = f_secureSecurity_off_off(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh = lookahead and gaps ? nhigh_on_on :
             lookahead and not gaps ? nhigh_on_off :
             not lookahead and gaps ? nhigh_off_on :
             not lookahead and not gaps ? nhigh_off_off : na
    nlow = lookahead and gaps ? nlow_on_on :
             lookahead and not gaps ? nlow_on_off :
             not lookahead and gaps ? nlow_off_on :
             not lookahead and not gaps ? nlow_off_off : na
    [nhigh, nlow]
    
[nhigh, nlow] = f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset)
[nhighlast, nlowlast] = f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset+1)
plot(nhigh , title="HTF High",style=plot.style_circles, color=color.green, linewidth=1) 
plot(nlow , title="HTF Low",style=plot.style_circles, color=color.red, linewidth=1)

buyCondition = nhigh > nhighlast and nlow > nlowlast
sellCondition = nhigh < nhighlast and nlow < nlowlast

strategy.entry("Buy", strategy.long, when= buyCondition and inDateRange, oca_name="oca_buy")
strategy.entry("Sell", strategy.short, when= sellCondition and inDateRange, oca_name="oca_sell")