ক্রস-টাইমলাইন দ্বি-মুখী যুগান্তকারী ব্যবস্থা


সৃষ্টির তারিখ: 2023-11-22 15:22:49 অবশেষে সংশোধন করুন: 2023-11-22 15:22:49
অনুলিপি: 0 ক্লিকের সংখ্যা: 566
1
ফোকাস
1617
অনুসারী

ক্রস-টাইমলাইন দ্বি-মুখী যুগান্তকারী ব্যবস্থা

ওভারভিউ

এটি একটি পরিমাণগত ট্রেডিং কৌশল যা চলমান গড় এবং MACD সূচক ব্যবহার করে দ্বি-দিকের বিরতি অপারেশন করে। এটির ক্রস-টাইম-এক্সিস অপারেশন বৈশিষ্ট্য রয়েছে, যা দীর্ঘ সময়ের সময়কালে প্রবণতার দিকনির্দেশনা নির্ধারণ করে এবং স্বল্প সময়ের সময়কালে প্রবেশের সুযোগের সন্ধান করে।

কৌশল নীতি

এই কৌশলটি 3 টি বিভিন্ন দৈর্ঘ্যের এসএমএমএ গড় এবং একটি ইএমএ গড় ব্যবহার করে ট্রেন্ডের দিকনির্দেশনা দেয়। একই সাথে, এটি স্বল্পমেয়াদী প্রবণতা এবং প্রবেশের সময় নির্ধারণের জন্য এমএসিডি সূচকগুলির সাথে মিলিত হয়। বিশেষত, এর ক্রয় শর্তটি হ’লঃ দাম সমস্ত গড়ের উপরে এবং সংক্ষিপ্ত গড়টি দীর্ঘ গড়ের উপরে থাকে এবং বিক্রয় শর্তটি বিপরীতভাবে, দাম সমস্ত গড়ের নীচে এবং সংক্ষিপ্ত গড়টি দীর্ঘ গড়ের নীচে থাকে।

দেখা যায় যে, এই কৌশলটি একই সাথে চলমান গড়ের মধ্যমেয়াদী প্রবণতার দিকনির্দেশনা এবং স্বল্পমেয়াদী বিপর্যয়ের জন্য MACD এর সিদ্ধান্ত গ্রহণের জন্য ব্যবহার করা হয়। এই মাল্টি-টাইম-এক্সেল সমন্বিত অপারেশনটি কৌশলটির একটি গুরুত্বপূর্ণ বৈশিষ্ট্য।

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

এই টাইম-এশনে ক্রস-অপারেটিং এর সুবিধা হল যে, উচ্চ সম্ভাব্যতার প্রবণতার দিক থেকে, উপযুক্ত স্বল্পমেয়াদী বিপরীত পয়েন্ট প্রবেশের নির্বাচন করা যায়, যার ফলে ভাল ঝুঁকি রিটার্ন পাওয়া যায়। বিশেষ করে, নিম্নলিখিত 3 টি সুবিধা রয়েছেঃ

  1. 3 টি এসএমএমএ মিডল লাইন এবং 1 টি ইএমএ মিডল লাইন মাল্টি-লেভেল ফিলার, এটি মধ্যম এবং দীর্ঘমেয়াদী প্রবণতার দিকনির্দেশনা কার্যকরভাবে নির্ধারণ করতে পারে, বিপরীতমুখী অপারেশন এড়াতে পারে।

  2. MACD সূচকগুলি স্বল্পমেয়াদী বিপর্যয় পয়েন্ট প্রবেশের জন্য নির্ধারণ করে, যা প্রবেশের জন্য আরও ভাল মূল্য পেতে পারে।

  3. একটি কঠোর চলমান গড় ক্রমিক সম্পর্ক একটি ফিল্টারিং শর্ত হিসাবে কাজ করে, যা ভুল অপারেশন সম্ভাবনা কমাতে পারে।

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

এই কৌশলটির প্রধান ঝুঁকিগুলো হলঃ

  1. মুভিং এভারেজ নিজেই পিছিয়ে আছে এবং স্বল্পমেয়াদী প্রবণতা পাল্টানোর সুযোগ মিস করতে পারে।

  2. MACD সূচকগুলি মিথ্যা সংকেত তৈরি করতে পারে, যার জন্য মূল্য ফিল্টার প্রয়োজন।

  3. মাল্টি-টাইম-এক্সিস বিচার কৌশলগত জটিলতা বৃদ্ধি করে, যার ফলে কার্যকারিতা হ্রাসের সম্ভাবনা থাকে।

ঝুঁকি 1 এবং ঝুঁকি 2 এর জন্য, স্বল্পমেয়াদী প্রবণতা বিপরীতের জন্য দ্রুত প্রতিক্রিয়া জানাতে, গড় লাইন চক্র এবং সংকেত চক্রের যথাযথভাবে সংক্ষিপ্ত করে অপ্টিমাইজ করা যেতে পারে। ঝুঁকি 3 এর জন্য, বিভিন্ন জাত এবং চক্রের জন্য অপ্টিমাইজেশান পরীক্ষা করা প্রয়োজন, যাতে কৌশল প্যারামিটারগুলি কঠোরভাবে জাতের বৈশিষ্ট্যগুলির সাথে খাপ খায়।

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

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

  1. চলমান গড় এবং MACD এর প্যারামিটারগুলিকে অনুকূলিত করুন যাতে তারা বিভিন্ন সময়কাল এবং জাতের বৈশিষ্ট্যগুলির সাথে সর্বোত্তমভাবে মেলে। যেমন গড় দৈর্ঘ্য সংক্ষিপ্ত করা, সিগন্যাল প্যারামিটার বাড়ানো ইত্যাদি।

  2. স্টপ-ডাউন কৌশল যোগ করুন, এটিআর বা অন্যান্য সূচক ব্যবহার করে যুক্তিসঙ্গতভাবে চলমান স্টপ-ডাউন সেট করুন। এটি কৌশলটির ঝুঁকি নিয়ন্ত্রণে উল্লেখযোগ্যভাবে উন্নতি করতে পারে।

  3. বিকল্প MACD সংকেতগুলির জন্য আরও ভাল সূচক বা ফিল্টারিংয়ের উপায় সন্ধান করুন। যেমন, একটি ওঠানামা সূচক প্রবর্তন করা, সংকেতগুলি ফিল্টার করা ইত্যাদি।

  4. বিভিন্ন স্টপ-অফ-লস অনুপাত পরীক্ষা করে এমন একটি প্যারামিটার সমন্বয় তৈরি করুন যা রিস্ক-রিটার্নের চেয়ে ভাল।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-10-22 00:00:00
end: 2023-11-21 00:00:00
period: 1h
basePeriod: 15m
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/
// © SoftKill21

//@version=4
strategy("Koala Script",initial_capital=1000, 
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.000065,
     slippage=3)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2031, title = "To Year", minval = 1970)
 


startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)




len = input(3, minval=1, title="Length")
src = input(hl2, title="Source")
smma = 0.0
sma1 = sma(src, len)
smma := na(smma[1]) ? sma1 : (smma[1] * (len - 1) + src) / len

len2 = input(6, minval=1, title="Length")
src2 = input(hl2, title="Source")
smma2 = 0.0
sma2 = sma(src2, len2)
smma2 := na(smma2[1]) ? sma2 : (smma2[1] * (len2 - 1) + src2) / len2

len3 = input(9, minval=1, title="Length")
src3 = input(hl2, title="Source")
smma3 = 0.0
sma3 = sma(src3, len3)
smma3 := na(smma3[1]) ? sma3 : (smma3[1] * (len3 - 1) + src3) / len3

len4 = input(50, minval=1, title="Length")
src4 = input(close, title="Source")
smma4 = 0.0
sma4 = sma(src4, len4)
smma4 := na(smma4[1]) ? sma4  : (smma4[1] * (len4 - 1) + src4) / len4

len5 = input(200, minval=1, title="Length")
src5 = input(close, title="Source")
out5 = ema(src5, len5)

timeinrange(res, sess) => time(res, sess) != 0
london=timeinrange(timeframe.period, "0300-1045")
londonEntry=timeinrange(timeframe.period, "0300-0845")

time_cond = time >= startDate and time <= finishDate and londonEntry

fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
srcc = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)


// Calculating
fast_ma = sma_source ? sma(srcc, fast_length) : ema(srcc, fast_length)
slow_ma = sma_source ? sma(srcc, slow_length) : ema(srcc, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma and londonEntry and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 
shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma and londonEntry and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 
//longCond2 = crossover(close,out5) and crossover(close,smma4) and crossover(close,smma3) and crossover(close,smma2) and crossover(close,smma) and time_cond
//shortCond2 = crossunder(close,out5) and crossunder(close,smma4) and crossunder(close,smma3) and crossunder(close,smma2) and crossunder(close,smma) and time_cond

length=input(14, title="ATR Length")
mult=input(1.0, title="Percentage Multiplier (for ex., 0.7 = 70%)", step=0.1, minval=0.1, maxval=5.0)

oa=input(false, title="Show actual ATR")

ii=syminfo.pointvalue==0
s=ii?na:oa?atr(length):(syminfo.pointvalue * mult * atr(length))

tp=input(300,title="tp")
sl=input(300,title="sl")


//tp = s*10000
//sl= s*10000



//if(tp>300)
//    tp:=300
//if(sl>300)
//    sl:=300
//if(sl<150)
//    sl:=150
//if(tp<150)
//    tp:=150
strategy.initial_capital = 50000
//MONEY MANAGEMENT--------------------------------------------------------------''
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(3,type=input.float,title="Risk %")/100           //risk % per trade


    //Calculate the size of the next trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 10000)
    size := 10000           //Set min. lot size



strategy.entry("long",1,when=longCond )
strategy.exit("closelong","long", profit=tp,loss=sl)
//strategy.close("long",when= crossunder(close[4],smma4) and close[4] > close[3] and close[3]>close[2] and close[2] > close[1] and close[1] > close)
strategy.entry("short",0,when=shortCond )
strategy.exit("closeshort","short", profit=tp,loss=sl)
//strategy.close("short",when= crossover(close[4],smma4) and close[4] < close[3] and close[3]< close[2] and close[2] < close[1] and close[1] < close)

strategy.close_all(when = not london)

maxEntry=input(2,title="max entries")
// strategy.risk.max_intraday_filled_orders(maxEntry)