
মাল্টিপল মিডল লাইন ট্র্যাকিং কৌশল এবং ডায়নামিক পজিশন ম্যানেজমেন্ট সিস্টেম হল একটি পরিমাণগত ট্রেডিং কৌশল যা মাল্টিপল ইন্ডেক্সাল মুভিং এভারেজ (ইএমএ) এর উপর ভিত্তি করে। এই কৌশলটি পাঁচটি বিভিন্ন চক্র (১২, ১৪৪, ১৬৯, ৫৭৬ এবং ৬৭৬) এর ইএমএ সূচকগুলি পর্যবেক্ষণ করে একটি সম্পূর্ণ ট্রেডিং সিস্টেম তৈরি করে, যার মধ্যে রয়েছে প্রবণতা বিচার, প্রবেশের সংকেত সনাক্তকরণ, ব্যাচ বিল্ডিং, পজিশন গতিশীল স্টপ লস এবং গতিশীল স্টপ। এই কৌশলটি কেবলমাত্র একাধিক পজিশন অপারেশনকে সমর্থন করে না, তবে সর্বোচ্চ ৫ টি ট্রেডিং পজিশন স্থাপন করতে পারে এবং প্রতিটি পজিশনের জন্য স্বতন্ত্র ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা রয়েছে। সিস্টেমটি ইএমএ সূচকগুলির সারি এবং মূল্যের সাথে সমান্তরালীর সাথে সমান্তরিতভাবে সম্পর্কিত, বাজারের প্রবণতাগুলির ঘাটলকে সঠিকভাবে ক্যাপচার করে এবং প্রবণতাগুলি বজায়
এই কৌশলটির কেন্দ্রীয় যুক্তিটি একাধিক ইএমএ সূচকগুলির মধ্যে অবস্থানগত সম্পর্ক এবং মূল ইএমএর সাথে দামের মিথস্ক্রিয়া উপর ভিত্তি করেঃ
প্রবণতা নির্ণয় প্রক্রিয়া:
প্রবেশের সংকেত:
ব্যাচ নির্মাণ:
ডায়নামিক স্টপডাউন:
সামগ্রিক ঝুঁকি নিয়ন্ত্রণ:
সামগ্রিকভাবে, এই কৌশলটি একাধিক ইএমএর সারিবদ্ধকরণের মাধ্যমে বাজারের প্রবণতার দিকনির্দেশ স্থাপন করে, দামের সাথে ইএমএ144 এর মিথস্ক্রিয়া দ্বারা প্রবেশের সময় নির্ধারণ করে এবং সাম্প্রতিক মূল্যের ওঠানামার অঞ্চলগুলির মাধ্যমে গতিশীল স্টপ লস স্টপ পয়েন্ট সেট করে, পাশাপাশি স্টক বিল্ডিং এবং অনুমোদিত মুনাফা ভাগ করে তহবিল পরিচালনার অপ্টিমাইজ করে, শেষ পর্যন্ত একটি সম্পূর্ণ ব্যবসায়ের সিস্টেম গঠন করে।
প্রবণতা বিচার:
সঠিক ভর্তি প্রক্রিয়া:
স্মার্ট অর্থ ব্যবস্থাপনা:
নমনীয় মুনাফা অর্জনের কৌশল:
কঠোর ঝুঁকি নিয়ন্ত্রণ:
অভিযোজনযোগ্য:
গড় রেখার পিছনে ঝুঁকি:
ধারাবাহিক ভাণ্ডার নির্মাণের জন্য আর্থিক চাপ:
নির্দিষ্ট সময়সীমার সীমাবদ্ধতা:
সমীকরণ প্রতিরোধের সম্ভাব্য সমস্যা:
ভর্তির শর্ত খুব কঠোর:
ডেটা নির্ভরতা ঝুঁকি:
অভিযোজিত প্যারামিটার মেকানিজম প্রবর্তন করুন:
প্রবেশের সংকেত ফিল্টারিং:
তহবিল ব্যবস্থাপনার উন্নতি:
স্টপ লস সিস্টেম অপ্টিমাইজ করুন:
সময় ফিল্টার যোগ করুন:
প্রবণতা শক্তির মূল্যায়ন যোগ করুন:
মাল্টি-পিরিয়ড সমন্বয় সিস্টেম তৈরি করা:
মাল্টিপল মিডল লাইন ট্র্যাকিং কৌশল এবং ডায়নামিক পজিশন ম্যানেজমেন্ট সিস্টেম একটি কাঠামোগত, যুক্তিসঙ্গতভাবে স্পষ্ট পরিমাণে ট্রেডিং কৌশল। এই কৌশলটি একাধিক ইএমএর সারিযুক্ত পোর্টফোলিও দ্বারা প্রবণতা বিচার করার কাঠামো তৈরি করে, মূল্য এবং সমান্তরাল সমান্তরালের সাথে মিথস্ক্রিয়া দ্বারা প্রবেশের সময় নির্ধারণ করে, এবং ব্যাচেলারি পজিশন এবং গতিশীল স্টপ লস স্টপ দ্বারা সূক্ষ্ম তহবিল পরিচালনা এবং ঝুঁকি নিয়ন্ত্রণের জন্য। কৌশলটির সুবিধা হ’ল প্রবণতা বিচার, সঠিক প্রবেশের প্রক্রিয়া, বুদ্ধিমান তহবিল পরিচালনা এবং কঠোর ঝুঁকি নিয়ন্ত্রণের পদ্ধতিগতীকরণ, যা বিভিন্ন বাজারের পরিবেশে উপযুক্ততা দেয়।
যাইহোক, এই কৌশলটি গড়ের পিছনে, স্থির প্যারামিটার সীমাবদ্ধতা এবং তহবিল পরিচালনার চাপের মতো ঝুঁকিও রয়েছে। কৌশলটির কার্যকারিতা আরও বাড়ানোর জন্য, অভিযোজিত প্যারামিটার ব্যবস্থা চালু করা, সংকেত ফিল্টারিং বাড়ানো, তহবিল পরিচালনা ব্যবস্থা উন্নত করা, স্টপ লস ব্যবস্থা অপ্টিমাইজ করা এবং বহু-চক্রের সমন্বয় ব্যবস্থা তৈরি করা ইত্যাদির মতো অপ্টিমাইজেশন দিকগুলি বিবেচনা করা যেতে পারে।
সামগ্রিকভাবে, এই কৌশলটি প্রবণতা ট্র্যাকিং এবং ঝুঁকি নিয়ন্ত্রণের ভারসাম্য দিয়ে পরিমাণগত ব্যবসায়ের জন্য একটি কার্যক্ষম কাঠামো সরবরাহ করে। ক্রমাগত অপ্টিমাইজেশন এবং নির্দিষ্ট বাজার পরিবেশের জন্য প্যারামিটারগুলি সামঞ্জস্য করার মাধ্যমে, কৌশলটি প্রকৃত ব্যবসায়ের ক্ষেত্রে স্থিতিশীল পারফরম্যান্সের প্রত্যাশা করে।
/*backtest
start: 2024-09-08 00:00:00
end: 2024-12-08 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("专业级交易系统", overlay=false, close_entries_rule = "ANY")
x1 = input.float(1.5,"atr倍数",step=0.1)
x2 = input.int(50,"k线数量",step=1)
s1 = strategy.opentrades.entry_price(0)
s2 = strategy.opentrades.entry_price(1)
s3 = strategy.opentrades.entry_price(2)
s4 = strategy.opentrades.entry_price(3)
s5 = strategy.opentrades.entry_price(4)
s6 = strategy.opentrades.entry_price(5)
s7 = strategy.opentrades.entry_price(6)
s8 = strategy.opentrades.entry_price(7)
s9 = strategy.opentrades.entry_price(8)
c = strategy.position_size,o = strategy.opentrades
ema12_len = input.int(12,"EMA12长度")
ema144_len = input.int(144, "EMA144长度")
ema169_len = input.int(169,"EMA169长度")
ema576_len = input.int(376, "EMA576长度")
ema676_len = input.int(576,"EMA676长度")
ema12 = ta.ema(close,ema12_len)
ema144 = ta.ema(close, ema144_len)
ema169 = ta.ema(close, ema169_len)
ema576 = ta.ema(close, ema576_len)
ema676 = ta.ema(close, ema676_len)
e3 = ta.valuewhen(o ==2 and o[1] == 1 and c > 0,bar_index,0)
e4 = ta.valuewhen(o ==3 and o[1] == 2 and c > 0,bar_index,0)
e5 = ta.valuewhen(o ==4 and o[1] == 3 and c > 0,bar_index,0)
le1 = false
le1 := c <= 0 and ema12 > ema144 and ema144 > ema169 and ema169 > ema576 and ema576 > ema676 and low < ema144 and low[1] > ema144 and close > ema169? true : close < ema169 or ema12 < ema144 ? false : le1[1]
le11 = false
le11 := le1 and bar_index - ta.valuewhen(low < ema144 and low[1] > ema144,bar_index,0) < 12 ? true : false
le2 = false
le2 := c > 0 and o == 1 and o[1] == 1 and ema12 > ema144 and ema144 > ema169 and ema169 > ema576 and ema576 > ema676 and low < ema144 and low[1] > ema144 and close > ema169? true : close < ema169 or ema12 < ema144 or o < 1? false : le2[1]
le21 = false
le21 := le2 and bar_index - ta.valuewhen(low < ema144 and low[1] > ema144 and o == 1 and o[1]==1,bar_index,0) < 12 ? true : false
le3 = false
le3 := c > 0 and o == 2 and o[1] == 2 and ema12 > ema144 and ema144 > ema169 and ema169 > ema576 and ema576 > ema676 and low < ema144 and low[1] > ema144 and close > ema169? true : close < ema169 or ema12 < ema144 or o < 2? false : le3[1]
le31 = false
le31 := le3 and bar_index - e3 > 50 and bar_index - ta.valuewhen(low < ema144 and low[1] > ema144 and o == 2 and o[1]==2,bar_index,0) < 12 ? true : false
le4 = false
le4 := c > 0 and o == 3 and o[1] == 3 and ema12 > ema144 and ema144 > ema169 and ema169 > ema576 and ema576 > ema676 and low < ema144 and low[1] > ema144 and close > ema169? true : close < ema169 or ema12 < ema144 or o < 3? false : le4[1]
le41 = false
le41 := le4 and bar_index - e4 > 50 and bar_index - ta.valuewhen(low < ema144 and low[1] > ema144 and o == 3 and o[1]==3,bar_index,0) < 12 ? true : false
le5 = false
le5 := c > 0 and o == 4 and o[1] == 4 and ema12 > ema144 and ema144 > ema169 and ema169 > ema576 and ema576 > ema676 and low < ema144 and low[1] > ema144 and close > ema169? true : close < ema169 or ema12 < ema144 or o < 4? false : le5[1]
le51 = false
le51 := le5 and bar_index - e5 > 50 and bar_index - ta.valuewhen(low < ema144 and low[1] > ema144 and o == 4 and o[1]==4,bar_index,0) < 12 ? true : false
d1 = ta.valuewhen(o == 1 and o[1] == 0 and c > 0,ta.lowest(12),0)
d2 = ta.valuewhen(o == 2 and o[1] == 1 and c > 0,ta.lowest(12),0)
d3 = ta.valuewhen(o == 3 and o[1] == 2 and c > 0,ta.lowest(12),0)
d4 = ta.valuewhen(o == 4 and o[1] == 3 and c > 0,ta.lowest(12),0)
d5 = ta.valuewhen(o == 5 and o[1] == 4 and c > 0,ta.lowest(12),0)
if le11 and close > ema12 and o == 0
strategy.order("l1",strategy.long,comment="第一单")
if c > 0 and o > 0
strategy.exit("出场1","l1",limit = 2*s1- d1,stop= d1,qty_percent = 50)
strategy.exit("出场11","l1",stop= d1)
if le21 and close > ema12 and o == 1
strategy.order("l2",strategy.long,comment="第二单")
if c > 0 and o == 2
strategy.exit("出场2","l2",limit = 2*s2- d2,stop= d2,qty_percent = 50)
strategy.exit("出场21","l2",stop= d2)
if le31 and close > ema12 and o == 2
strategy.order("l3",strategy.long,comment="第三单")
if c > 0 and o == 3
strategy.exit("出场3","l3",limit = 2*s3- d3,stop= d3,qty_percent = 50)
strategy.exit("出场31","l3",stop= d3)
if le41 and close > ema12 and o == 3
strategy.order("l4",strategy.long,comment="第四单")
if c > 0 and o == 4
strategy.exit("出场4","l4",limit = 2*s4- d4,stop= d4,qty_percent = 50)
strategy.exit("出场41","l4",stop= d4)
if le51 and close > ema12 and o == 4
strategy.order("l5",strategy.long,comment="第五单")
if c > 0 and o == 5
strategy.exit("出场5","l5",limit = 2*s5- d5,stop= d5,qty_percent = 50)
strategy.exit("出场51","l5",stop= d5)
bgcolor(le2?color.red:na)
if c > 0 and ema12 < ema144
strategy.close_all("跌破均线全部出场")
//做空
es3 = ta.valuewhen(o ==2 and o[1] == 1 and c < 0,bar_index,0)
es4 = ta.valuewhen(o ==3 and o[1] == 2 and c < 0,bar_index,0)
es5 = ta.valuewhen(o ==4 and o[1] == 3 and c < 0,bar_index,0)
se1 = false
se1 := c >= 0 and ema12 < ema144 and ema144 < ema169 and ema169 < ema576 and ema576 < ema676 and high > ema144 and high[1] < ema144 and close < ema169? true : close > ema169 or ema12 > ema144 ? false : se1[1]
se11 = false
se11 := se1 and bar_index - ta.valuewhen(high > ema144 and high[1] < ema144,bar_index,0) < 12 ? true : false
se2 = false
se2 := c < 0 and o == 1 and o[1] == 1 and ema12 < ema144 and ema144 < ema169 and ema169 < ema576 and ema576 < ema676 and high > ema144 and high[1] < ema144 and close < ema169? true : close > ema169 or ema12 > ema144 or o < 1? false : se2[1]
se21 = false
se21 := se2 and bar_index - ta.valuewhen(high > ema144 and high[1] < ema144 and o == 1 and o[1]==1,bar_index,0) < 12 ? true : false
se3 = false
se3 := c < 0 and o == 2 and o[1] == 2 and ema12 < ema144 and ema144 < ema169 and ema169 < ema576 and ema576 < ema676 and high > ema144 and high[1] < ema144 and close < ema169 ? true : close > ema169 or ema12 > ema144 or o < 2? false : se3[1]
se31 = false
se31 := se3 and bar_index - es3 > 50 and bar_index - ta.valuewhen(high > ema144 and high[1] < ema144 and o == 2 and o[1]==2,bar_index,0) < 12 ? true : false
se4 = false
se4 := c < 0 and o == 3 and o[1] == 3 and ema12 < ema144 and ema144 < ema169 and ema169 < ema576 and ema576 < ema676 and high > ema144 and high[1] < ema144 and close < ema169? true : close > ema169 or ema12 > ema144 or o < 3? false : se4[1]
se41 = false
se41 := se4 and bar_index - es4 > 50 and bar_index - ta.valuewhen(high > ema144 and high[1] < ema144 and o == 3 and o[1]==3,bar_index,0) < 12 ? true : false
se5 = false
se5 := c < 0 and o == 4 and o[1] == 4 and ema12 < ema144 and ema144 < ema169 and ema169 < ema576 and ema576 < ema676 and high > ema144 and high[1] < ema144 and close < ema169 ? true : close > ema169 or ema12 > ema144 or o < 4? false : se5[1]
se51 = false
se51 := se5 and bar_index - es5 > 50 and bar_index - ta.valuewhen(high > ema144 and high[1] < ema144 and o == 4 and o[1]==4,bar_index,0) < 12 ? true : false
ds1 = ta.valuewhen(o == 1 and o[1] == 0 and c < 0 ,ta.highest(12),0)
ds2 = ta.valuewhen(o == 2 and o[1] == 1 and c < 0,ta.highest(12),0)
ds3 = ta.valuewhen(o == 3 and o[1] == 2 and c < 0,ta.highest(12),0)
ds4 = ta.valuewhen(o == 4 and o[1] == 3 and c < 0,ta.highest(12),0)
ds5 = ta.valuewhen(o == 5 and o[1] == 4 and c < 0,ta.highest(12),0)
if se11 and close < ema12 and o == 0
strategy.order("s1",strategy.short,comment="第一单")
if c < 0 and o > 0
strategy.exit("出场1","s1",limit = 2*s1- ds1,stop= ds1,qty_percent = 50)
strategy.exit("出场11","s1",stop= ds1)
if se21 and close < ema12 and o == 1
strategy.order("s2",strategy.short,comment="第二单")
if c < 0 and o == 2
strategy.exit("出场2","s2",limit = 2*s2- ds2,stop= ds2,qty_percent = 50)
strategy.exit("出场21","s2",stop= ds2)
if se31 and close < ema12 and o == 2
strategy.order("s3",strategy.short,comment="第三单")
if c < 0 and o == 3
strategy.exit("出场3","s3",limit = 2*s3- ds3,stop= ds3,qty_percent = 50)
strategy.exit("出场31","s3",stop= ds3)
if se41 and close < ema12 and o == 3
strategy.order("s4",strategy.short,comment="第四单")
if c < 0 and o == 4
strategy.exit("出场4","s4",limit = 2*s4- ds4,stop= ds4,qty_percent = 50)
strategy.exit("出场41","s4",stop= ds4)
if se51 and close < ema12 and o == 4
strategy.order("s5",strategy.short,comment="第五单")
if c < 0 and o == 5
strategy.exit("出场5","s5",limit = 2*s5- ds5,stop= ds5,qty_percent = 50)
strategy.exit("出场51","s5",stop= ds5)
bgcolor(se1?color.red:na)
if c < 0 and ema12 > ema144
strategy.close_all("跌破均线全部出场")
kaiguan = input.bool(true,"均线开关")
plot(ema12,force_overlay=true)
plot(ema144, "EMA144", color=color.new(#008000, 0),force_overlay=true)
plot(ema169, "EMA169", color=color.red,force_overlay=true)
plot(kaiguan?ema576:na,color=color.yellow,force_overlay=true)
plot(kaiguan?ema676:na,color=color.yellow,force_overlay=true)
//plotshape(series=entrySignal,title="买入信号",location=location.belowbar,color=color.new(color.green, 0),style=shape.labelup,text="BUY",textcolor=color.new(color.white, 0))