সিএমএফ ইম্পোমেন্টাম ব্রেকথ্রু মুভিং এভারেজ কৌশল

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

এই কৌশলটি ট্রেডিং সিগন্যাল তৈরির জন্য সিএমএফ মম্পটম সূচক এবং ২০০ দিনের ইএমএকে একত্রিত করে।

বিশেষত, সিএমএফ গতি অর্থ প্রবাহের পরিবর্তনের হারের প্রতিফলন করে। আপক্রসিং 0 হল ক্রয় সংকেত, এবং ডাউনক্রসিং 0 হল বিক্রয় সংকেত। এদিকে, 200 দিনের ইএমএর উপরে কেবল দীর্ঘ, এবং এর নীচে কেবল শর্ট।

স্টপ লস 2 বার এটিআর এ সেট করা হয়। লাভ নিন 2 বার স্টপ লস, 2: 1 মুনাফা / ক্ষতি অনুপাত অর্জন।

এই কৌশলটির সুবিধা হ'ল প্রধান প্রবণতার জন্য EMA এর সাথে মিলিত তহবিল প্রবাহের দিক বিচার করতে সিএমএফ গতি ব্যবহার করা। লাভ / ক্ষতি অনুপাত স্থিতিশীল লাভ অর্জনে সহায়তা করে। তবে পিছিয়ে থাকা সূচকগুলির কারণে, প্রবেশের সময়টি অনুকূল হতে পারে না।

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


/*backtest
start: 2023-08-11 00:00:00
end: 2023-09-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// ***************************************************
// CMF Velocity with 200 EMA Strategy
// CMF Velocity Indicator by TheSadRhinoInvesting
// Author: TheSadRhinoInvesting, v1.0, 2021.05.16
//                   INITIAL RELEASE
// ***************************************************

//@version=4
strategy("CMF Velocity with 200EMA Strategy")

// ***************************************************
//              Strategy & Rules
// ***************************************************
// This strategy is a demonstration of my new Indicator: CMF Velocity
// CMF Velocity: https://www.tradingview.com/script/zsTl96Gd-CMF-Velocity/
// The strategy works best in a strongly trending market

// === Indicators ===
// EMA 
// @ 200
// CMF Velocity
// @ 11, 7
// ATR
// @ 10

// === Rules ===
// long only 
// - price above EMA200
// short only 
// - price below EMA200
// Stop Loss = 2x ATR
// Profit = 2x SL/risk (Profit Ratio x Max Loss)

// === Entries ===
// LONG
// - long entry (Typical): 
// - CMF Velocity crosses above 0

// SHORT
// - short entry (Typical): 
// - CMF Velocity crosses below 0

// ***************************************************
// Backtest Parameters
// ***************************************************
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(5, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)

testEndYear = input(2021, "Backtest End Year")
testEndMonth = input(5, "Backtest End Month")
testEndDay = input(16, "Backtest End Day")
testEndHour = input(0, "Backtest End Hour")
testPeriodEnd = timestamp(testEndYear, testEndMonth, testEndDay, testEndHour, 0)

timeBacktesting = true
direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

// ***************************************************
// Inputs
// ***************************************************
// Profit/Loss Ratio
pLRatioMultiplier = input(2, title="Profit/Loss Multiplier", step=0.1, minval=0.1)

// EMA Period
emaPeriod = input(200, title="EMA Period", step=1, minval=1)
// ATR Multiplier
atrMultiplier = input(2, title="ATR Multiplier", step=0.1, minval=0.1)
// ATR Period
atrPeriod = input(10, title="ATR Period", step=1, minval=1)
// CMF Period
cmfPeriod = input(11, title="CMF Period", step=1, minval=1)
// CMF Velocity Period
cmfVelocityPeriod = input(7, title="CMF Velocity Period", step=1, minval=1)

// ***************************************************
// Indicator Functions
// ***************************************************
// CMF Function
cmf(period) =>
    moneyFlowMultiplier = (((close - low) - (high - close)) / (high - low)) * volume
    notNaMoneyFlowMultiplier = na(moneyFlowMultiplier) ? 0 : moneyFlowMultiplier
    moneyFlowAverage = sma(notNaMoneyFlowMultiplier, period)
    volumeAverage = sma(volume, period)
    moneyFlowAverage / volumeAverage

// CMF Velocity Function    
cmfVelocity(cmf, period) =>
    difference = change(cmf)
    sma(difference, period)
    
// ***************************************************
// Indicator Calculation and Plotting
// ***************************************************
cmfSeries = cmf(cmfPeriod)
cmfVelocitySeries = cmfVelocity(cmfSeries, cmfVelocityPeriod)
atrSeries = atr(atrPeriod)
triggerEMA = ema(close, emaPeriod)
plot(triggerEMA)    

// ***************************************************
// Strategy Execution
// ***************************************************
if (crossover(cmfVelocitySeries, 0.0) and triggerEMA < close and timeBacktesting)
    stopOffset = atrSeries * atrMultiplier
    profitOffset = stopOffset * pLRatioMultiplier
    stopLoss = close - stopOffset
    takeProfit = close + profitOffset
    strategy.entry("Long Entry", true)
    strategy.exit("Exit", "Long Entry", stop=stopLoss, limit=takeProfit)
    
if (crossunder(cmfVelocitySeries, 0.0) and triggerEMA > close and timeBacktesting)
    stopOffset = atrSeries * atrMultiplier
    profitOffset = stopOffset * pLRatioMultiplier
    stopLoss = close + stopOffset
    takeProfit = close - profitOffset
    strategy.entry("Short Entry", false)
    strategy.exit("Exit", "Short Entry", stop=stopLoss, limit=takeProfit)


আরো