রিসোর্স লোড হচ্ছে... লোডিং...

এমএসিডি উইলি কৌশল

লেখক:চাওঝাং, তারিখ: ২০২২-০৫-০৯ ১৫ঃ১৭ঃ৫৭
ট্যাগঃএমএসিডি

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

ইএমএঃ ডিফল্ট হল 200 EMA লাইন।

এমএসিডিঃ ডিফল্টভাবে দ্রুত / ধীর সংকেত ইনপুট জন্য 12/26 দৈর্ঘ্য।

উইলিয়াম %R - মসৃণ (প্রকাশিত): এটি একটি কাস্টম সূচক যা মূল উইলিয়াম %R লাইন থেকে দুটি চলমান গড় লাইন তৈরি করে।

এটি কিভাবে কাজ করে: প্রবেশের শর্তাবলী:

  1. EMA লাইনের ঊর্ধ্বে/নীচে বার বন্ধ হলে দীর্ঘ/ছোট এন্ট্রি
  2. যখন MACD লাইন সিগন্যাল লাইনের উপরে/নীচে থাকে (long এর জন্য হিস্টোগ্রাম > 0, short এর জন্য হিস্টোগ্রাম < 0)
  3. দীর্ঘ/সংক্ষিপ্ত এন্ট্রি যখন উইলিয়াম %R দ্রুত এমএ লাইন ধীর এমএ লাইনের উপরে/নীচে থাকে

প্রস্থান শর্তাবলীঃ

  1. ম্যাকডি লাইন সিগন্যাল লাইনের নিচে থাকলে লং থেকে বেরিয়ে আসা, লং থেকে বেরিয়ে আসার ক্ষেত্রে বিপরীত
  2. উইলিয়াম %R দ্রুত এমএ লাইন ধীর এমএ লাইন নীচে যখন দীর্ঘ প্রস্থান, বিপরীতভাবে প্রস্থান সংক্ষিপ্ত জন্য
  3. যখন উইলিয়াম %R দ্রুত এমএ লাইনটি ওভারক্রয় (-20) সীমার নীচে থাকতে হবে, যখন ওভারসোল্ড (-80) সীমা অতিক্রম করবে তখন লম্বা থেকে বেরিয়ে আসুন।

মনে রাখবেন যে নির্দিষ্ট স্টক / যন্ত্রের জন্য পরামিতিগুলি অপ্টিমাইজ করা হয় না।

উপভোগ করুন।

ব্যাকটেস্ট

img


/*backtest
start: 2022-04-08 00:00:00
end: 2022-05-07 23:59: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/
// © platsn

//@version=5
strategy("MACD Willy Strategy", overlay=true, pyramiding=1, initial_capital=10000) 

// ******************** Trade Period **************************************
startY = input(title='Start Year', defval=2011, group = "Trading window")
startM = input.int(title='Start Month', defval=1, minval=1, maxval=12, group = "Trading window")
startD = input.int(title='Start Day', defval=1, minval=1, maxval=31, group = "Trading window")
finishY = input(title='Finish Year', defval=2050, group = "Trading window")
finishM = input.int(title='Finish Month', defval=12, minval=1, maxval=12, group = "Trading window")
finishD = input.int(title='Finish Day', defval=31, minval=1, maxval=31, group = "Trading window")
//timestart = timestamp(startY, startM, startD, 00, 00)
//timefinish = timestamp(finishY, finishM, finishD, 23, 59)
// t1 = time(timeframe.period, "0945-1545:23456") 
// window = time >= timestart and time <= timefinish and t1 ? true : false 
// t2 = time(timeframe.period, "0930-1555:23456")
// window2 = time >= timestart and time <= timefinish and t2 ? true : false 

leverage = input.float(1, title="Leverage (if applicable)", step=0.1, group = "Trading Options")
reinvest = input.bool(defval=false,title="Reinvest profit", group = "Trading Options")
reinvest_percent = input.float(defval=20, title = "Reinvest percentage", group="Trading Options")
// entry_lookback = input.int(defval=10, title="Lookback period for entry condition", group = "Trading Options")

// -------------------------------------------- Data Source --------------------------------------------

src = input(title="Source", defval=close)

// ***************************************************************************************************** Daily ATR *****************************************************
atrlen = input.int(14, minval=1, title="ATR period", group = "Daily ATR")
iPercent = input.float(5, minval=1, maxval=100, step=0.1, title="% ATR to use for SL / PT", group = "Daily ATR")
 
percentage = iPercent * 0.01
datr = request.security(syminfo.tickerid, "1D", ta.rma(ta.tr, atrlen))
datrp = datr * percentage

// plot(datr,"Daily ATR")
// plot(datrp, "Daily % ATR")

//*********************************************************** VIX volatility index ****************************************

//VIX = request.security("VIX", timeframe.period, close)
//vix_thres = input.float(20.0, "VIX Threshold for entry", step=0.5, group="VIX Volatility Index")

// ************************************************ Volume ******************************************************

vol_len = input(50, 'Volume MA Period')
avg_vol = ta.sma(volume, vol_len)

//-------------------------------------------------------- Moving Average ------------------------------------

emalen1 = input.int(200, minval=1, title='EMA', group= "Moving Averages")
ema1 = ta.ema(src, emalen1)

// ------------------------------------------ MACD ------------------------------------------
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Plot colors
col_macd = input(#2962FF, "MACD Line  ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line  ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// ---------------------------------------- William %R --------------------------------------
w_length = input.int(defval=34, minval=1)
w_upper = ta.highest(w_length)
w_lower = ta.lowest(w_length)

w_output = 100 * (close - w_upper) / (w_upper - w_lower)

fast_period = input(defval=5, title='Smoothed %R Length')
slow_period = input(defval=13, title='Slow EMA Length')

w_fast_ma = ta.wma(w_output,fast_period)
w_slow_ma = ta.ema(w_output,slow_period)



// ------------------------------------------------ Entry Conditions ----------------------------------------

L_entry1 = close > ema1 and hist > 0 and w_fast_ma > w_slow_ma 
S_entry1 = close < ema1 and hist < 0 and w_fast_ma < w_slow_ma 

// -------------------------------------------------- Entry -----------------------------------------------

//profit = strategy.netprofit
//trade_amount = math.floor(strategy.initial_capital*leverage / close) 

//if strategy.netprofit > 0 and reinvest
//    trade_amount := math.floor((strategy.initial_capital+(profit*reinvest_percent*0.01))*leverage / close) 
//else
//    trade_amount := math.floor(strategy.initial_capital*leverage/ close) 


if L_entry1 //and window
    strategy.entry("Long", strategy.long)

if S_entry1 //and window
    strategy.entry("Short", strategy.short)

// --------------------------------------------------- Exit Conditions -------------------------------------

L_exit1 = hist < 0 and w_fast_ma < w_slow_ma and w_fast_ma < -20
S_exit1 = hist > 0 and w_fast_ma > w_slow_ma and w_fast_ma > -80

// ----------------------------------------------------- Exit ---------------------------------------------

if L_exit1 //and window2
    strategy.close("Long")
    
if S_exit1 //and window2
    strategy.close("Short")

// if time(timeframe.period, "1530-1600:23456")
//     strategy.close_all()

সম্পর্কিত

আরো