চলমান গড় ক্রসওভার এবং উপরের রেলের অগ্রগতি উদ্দীপনা কৌশল

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

img

সারসংক্ষেপ

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

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

  1. প্রধান ট্রেডিং সংকেত হিসাবে এমএসিডি দ্রুত লাইন এবং ধীর লাইনের ক্রসওভার ব্যবহার করুন। যখন দ্রুত লাইন ধীর লাইনের উপরে অতিক্রম করে, একটি দীর্ঘ অবস্থান নিন। যখন দ্রুত লাইন ধীর লাইনের নীচে অতিক্রম করে, একটি ছোট অবস্থান নিন।

  2. অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় শর্ত নির্ধারণের জন্য আরএসআই সূচক অন্তর্ভুক্ত করুন। কেন্দ্রীয় রেখার নীচে দীর্ঘ প্রস্তাব দেয়, যখন উপরে সংক্ষিপ্ত প্রস্তাব দেয়।

  3. একটি নির্দিষ্ট সময়ের এসএমএ লাইনের সাথে বর্তমান বন্ধের মূল্য তুলনা করুন। এসএমএর নীচে বন্ধের মূল্য দীর্ঘ প্রস্তাব দেয়, যখন উপরে সংক্ষিপ্ত প্রস্তাব দেয়।

  4. একটি নির্দিষ্ট সময়ের সর্বোচ্চ মানের 0.5 ফাইবোনাচি স্তরকে দীর্ঘ সময়ের জন্য প্রতিরোধ হিসাবে গণনা করুন। একটি নির্দিষ্ট সময়ের সর্বনিম্ন মানের 0.5 ফাইবোনাচি স্তরকে স্বল্প সময়ের জন্য সমর্থন হিসাবে গণনা করুন।

  5. যখন ফাস্ট লাইন উপরে অতিক্রম করে এবং দাম সাপোর্ট এর নিচে থাকে তখন লং নিন। যখন ফাস্ট লাইন নীচে অতিক্রম করে এবং দাম প্রতিরোধের উপরে থাকে তখন শর্ট নিন।

  6. একটি ট্রেলিং স্টপ লস প্রক্রিয়া গ্রহণ করুন। স্টপ লসটি প্রাথমিকভাবে প্রবেশ মূল্যের একটি নির্দিষ্ট শতাংশে স্থির করা হয়। যখন ক্ষতি একটি নির্দিষ্ট স্তরে পৌঁছে যায়, তখন ধীরে ধীরে ট্রেলিং স্টপ লসে স্যুইচ করুন।

সুবিধা

  1. এই কৌশলটি MACD ক্রসওভার সংকেতগুলির পূর্ণ ব্যবহার করে, যা একটি ক্লাসিক এবং কার্যকর প্রযুক্তিগত সূচক ট্রেডিং সংকেত।

  2. RSI এবং SMA এর মতো একাধিক সূচক থেকে নিশ্চিতকরণ অন্তর্ভুক্ত করা মিথ্যা সংকেতগুলি ফিল্টার করতে পারে এবং নির্ভরযোগ্যতা উন্নত করতে পারে।

  3. ব্রেকআউট ট্রেডিংয়ের জন্য ডাইনামিক সাপোর্ট এবং রেসিস্ট্যান্স লেভেল গণনা করে বৃহত্তর প্রবণতা ধরা যায়।

  4. ঝুঁকি নিয়ন্ত্রণের সময় স্টপ লস বেশিরভাগ লাভকে লক করতে পারে।

  5. কৌশল যুক্তি স্পষ্ট এবং সহজ, সহজেই beginners জন্য বুঝতে এবং মাস্টার।

ঝুঁকি

  1. ম্যাকডি সূচকটির সমস্যাগুলি পিছিয়ে রয়েছে এবং অনুকূল প্রবেশ এবং প্রস্থান পয়েন্টগুলি মিস করতে পারে।

  2. একাধিক সূচককে একত্রিত করা জটিলতা এবং দ্বন্দ্বপূর্ণ সংকেতগুলির ঝুঁকি বাড়ায়।

  3. ডায়নামিকভাবে সমর্থন এবং প্রতিরোধের হিসাব করার সময় ভুল ব্রেকআউটের ঝুঁকি রয়েছে।

  4. ট্রেজিং স্টপ লস শক্তিশালী ট্রেন্ডে অকাল প্রস্থান করতে পারে, ট্রেন্ড চালাতে ব্যর্থ হয়।

  5. পরামিতিগুলির পুনরাবৃত্তি পরীক্ষা এবং অপ্টিমাইজেশান প্রয়োজন, অনুপযুক্ত পরামিতিগুলি কর্মক্ষমতাকে নেতিবাচকভাবে প্রভাবিত করে।

অপ্টিমাইজেশান নির্দেশাবলী

  1. ম্যাকডি সময়কালের অপ্টিমাইজেশান করার জন্য বিভিন্ন প্যারামিটার সমন্বয় পরীক্ষা করুন।

  2. বহুমাত্রিক বিশ্লেষণের জন্য বোলিংজার ব্যান্ড, কেডিজে-র মতো আরও সূচক প্রবর্তন করুন।

  3. সমর্থন এবং প্রতিরোধের যুক্তিসঙ্গততা বিচার করার জন্য আরও কারণ অন্তর্ভুক্ত করুন।

  4. সময়ভিত্তিক বা অস্থিরতাভিত্তিক স্টপের মতো আরও উন্নত স্টপ লস প্রক্রিয়া গবেষণা করুন।

  5. স্বয়ংক্রিয় প্যারামিটার অপ্টিমাইজেশান জন্য একটি স্বয়ংক্রিয় অপ্টিমাইজেশান মডিউল যোগ করুন.

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

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


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 23: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/
// © onurenginogutcu

//@version=4
strategy("R19 STRATEGY", overlay=true, calc_on_every_tick=true , margin_long=100, margin_short=100 ,  process_orders_on_close=true )



sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT" , group = "SYMBOL") 
timeFrame = input(title="Strategy Decision Time Frame", type = input.resolution ,  defval="60")

adxlen = input(14, title="ADX Smoothing" , group = "ADX")
dilen = input(14, title="ADX DI Length", group = "ADX")
adxemalenght = input(30, title="ADX EMA", group = "ADX")
adxconstant = input(19, title="ADX CONSTANT", group = "ADX")

fibvar = input (title = "Fibo Look Back Canles" , defval = 50 , minval = 0 , group = "FIBO MACD SMA")
smaLookback = input (title = "SMA Look Back Candles" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDFast = input (title = "MACD Fast Lenght" , defval = 15 , minval = 0 , group = "FIBO MACD SMA")
MACDSlow = input (title = "MACD Slow Lenght" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDSmooth = input (title = "MACD Signal Smoothing" , defval = 9 , minval = 0 , group = "FIBO MACD SMA")
MACDLookback = input (title = "MACD Look Back Candles" , defval = 100 , minval = 0 , group = "FIBO MACD SMA")

trailingStopLong = input (title = "Trailing Long Stop %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
trailingStopShort = input (title = "Trailing Short Stop %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
LongTrailingProfitStart = input (title = "Long Profit Start %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
ShortTrailingProfitStart = input (title = "Short Profit Start %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01

lsl = input(title="Max Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=3.0, group = "TP & SL") * 0.01
     
ssl = input(title="Max Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5, group = "TP & SL") * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=95, group = "CAPITAL TO INVEST") * 0.01
     

symClose = security(sym, timeFrame, close)
symHigh = security(sym, timeFrame, high)
symLow = security(sym, timeFrame, low)

atr = atr (14) 

/////////adx code

dirmov(len) =>
	up = change(symHigh)
	down = -change(symLow)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
emasig = ema (sig , adxemalenght )


////////adx code over



i = ema (symClose , MACDFast) - ema (symClose , MACDSlow) 
r = ema (i , MACDSmooth)

sapust = highest (i , MACDLookback) * 0.729 
sapalt = lowest (i , MACDLookback) * 0.729  


simRSI = rsi (symClose , 50 ) 




fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)





cond1 = 0
cond2 = 0
cond3 = 0
cond4 = 0


longCondition = crossover(i, r) and i < sapalt and sig > adxconstant and symClose < sma (symClose , smaLookback) and simRSI < sma (simRSI , 50) and symClose < fibbottom 
shortCondition = crossunder(i, r) and i > sapust and sig > adxconstant and  symClose > sma (symClose , smaLookback) and simRSI > sma (simRSI , 50) and symClose > fibtop 


//////////////////////probability long/short
if (crossover(i, r) and i < sapalt)
    cond1 := 35
else if (crossunder(i, r) and i > sapust)
    cond1 := -35
else
    cond1 := 0
    
if (symClose < sma (symClose , smaLookback))
    cond2 := 30
else if (symClose > sma (symClose , smaLookback))
    cond2 := -30
else
    cond2 := 0
    
if (simRSI < sma (simRSI , 50))
    cond3 := 25
else if (simRSI > sma (simRSI , 50))
    cond3 := -25
else
    cond3 := 0
    
if (symClose < fibbottom)
    cond4 := 10
else if (symClose > fibbottom)
    cond4 := -10
else
    cond4 := 0
    
probab = cond1 + cond2 + cond3 + cond4
////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////
var startTrail = 0
var trailingLongPrice = 0.0
var trailingShortPrice = 0.0

if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close )

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close )
    
    
if (strategy.position_size == 0)    
    trailingShortPrice := 0.0
    trailingLongPrice := 0.0  
    startTrail := 0
/////////////////////////////////strategy exit

if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + LongTrailingProfitStart))
    startTrail := 1

if (strategy.position_size < 0 and close <= strategy.position_avg_price * (1 - ShortTrailingProfitStart))
    startTrail := -1
    



trailingLongPrice := if strategy.position_size > 0 and startTrail == 1
    stopMeasure = close * (1 - trailingStopLong)
    max (stopMeasure , trailingLongPrice [1])
else if strategy.position_size > 0 and startTrail == 0
    strategy.position_avg_price * (1 - lsl)


trailingShortPrice := if strategy.position_size < 0 and startTrail == -1
    stopMeasure = close * (1 + trailingStopShort)
    min (stopMeasure , trailingShortPrice [1])
else if strategy.position_size < 0 and startTrail == 0
    strategy.position_avg_price * (1 + ssl)




if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop = trailingLongPrice , limit=strategy.position_avg_price*(1 + longtp))
 

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop = trailingShortPrice , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)

plot (trailingLongPrice , color = color.green) ///long price trailing stop
plot (trailingShortPrice , color = color.red) /// short price trailing stop
plot (startTrail , color = color.yellow)
plot (probab , color = color.white) ////probability


আরো