
হাজার হাজার পাইন স্ক্রিপ্ট কোড দেখে, এই “মাস্টার ট্রেডিং বট” এর দুটি ব্রাশ রয়েছে। লেখক ডিসিএকে নতুন উচ্চতায় নিয়ে এসেছেনঃ মস্তিষ্কের ভিত্তিতে নয়, বরং প্রযুক্তিগত সূচকগুলির উপর ভিত্তি করে একটি বুদ্ধিমান ইনভেস্টমেন্ট সিস্টেম। প্রাথমিক পজিশন 5% এবং প্রতিবার ডিসিএ বৃদ্ধি 2.5% এবং সর্বোচ্চ 100% অতিক্রম করে না। এই প্রগতিশীল তহবিল পরিচালনাটি traditionalতিহ্যবাহী ইত্যাদির তুলনায় আরও বৈজ্ঞানিক।
DCA ট্রিগার করার মূল শর্ত হলঃ দাম অবশ্যই গড় খরচ মূল্যের নীচে নেমে আসতে হবে, এবং এই পতনটি 2% + ধাপ × 4% গতিশীল অবমূল্যায়ন পর্যন্ত পৌঁছাতে হবে। প্রথম DCA 2%, দ্বিতীয়টি 6% এবং তৃতীয়টি 10% হ্রাস করতে হবে। এই নকশাটি কেবলমাত্র একটি সত্যিকারের পুনরুদ্ধারের সময় বাড়তে থাকে, ছোটখাট ওঠানামার মধ্যে ঘন ঘন পজিশনিং এড়াতে।
কৌশলটি 3 / 7 / 18 পিরিয়ড ইএমএ ব্যবহার করে একটি প্রবণতা কাঠামো তৈরি করে, 20 পিরিয়ডের ব্রিন বন্ডের সাথে দামের অবস্থান নির্ধারণ করে, 52/200/3 এর ম্যাকড প্যারামিটারটি মধ্যম-দীর্ঘমেয়াদী সংকেতকে অগ্রাধিকার দেয়, 14 পিরিয়ডের আরএসআই ওভারবাইট ওভারসোল্ড সিদ্ধান্তের জন্য ব্যবহৃত হয়। এই সংমিশ্রণটি প্রবণতা, গতিশীলতা এবং অস্থিরতার তিনটি মাত্রা জুড়েছে, যা একক সূচক কৌশলটির চেয়ে বেশি নির্ভরযোগ্য।
ক্রয় শর্ত কঠোরঃ দ্রুত ইএমএ> ধীর ইএমএ+এমএসিডি গোল্ডফোর্ক+মূল্য বুলিনের মধ্যম ট্র্যাকের উপরে + আরএসআই <65। এই চারটি শর্ত একসাথে পূরণ করা হয় যাতে পজিশন খোলা যায়, বেশিরভাগ মিথ্যা সংকেতগুলি ফিল্টার করে। বিক্রয় শর্তগুলিও কঠোরঃ সর্বনিম্ন 2% লাভ + প্রবণতা দুর্বল + এমএসিডি ডেডফোর্ক থাকতে হবে। এই “লাভজনকভাবে বিক্রয় করুন” নকশাটি অর্থহীন স্টপ লস এড়াতে পারে।
কোডে ১০০% স্টপ লস বলাটা অযৌক্তিক মনে হতে পারে, কিন্তু টীকাতে স্পষ্টভাবে বলা হয়েছে, “মূল্যটি ট্রিগার করার জন্য অবশ্যই ০-এ নামতে হবে”। এটি প্রকৃতপক্ষে ঐতিহ্যগত স্টপ লস বন্ধ করে দেয় এবং সম্পূর্ণরূপে প্রযুক্তিগত সূচক এবং মুনাফার লক্ষ্যের উপর নির্ভর করে ঝুঁকি পরিচালনা করে। ডিসিএ কৌশলটির জন্য, এই নকশাটি যুক্তিসঙ্গত কারণ পতনের সময় স্টপ লস করা ঐতিহ্যগতভাবে অর্থহীন।
আসল ঝুঁকি নিয়ন্ত্রণ হলঃ ২% মূল্য হ্রাস সংকেত + গতিশীল ডিসিএ হ্রাস + বাধ্যতামূলক মুনাফা প্রত্যাহার। কৌশলটি 500 চক্রের মধ্যে সর্বোচ্চ মূল্য অনুসরণ করে, এবং যদি বর্তমান মূল্য সর্বোচ্চ থেকে ২% এর বেশি হ্রাস পায় তবে এটি একটি বিক্রয় সংকেত ট্রিগার করে। এটি স্থির স্টপ লস থেকে আরও নমনীয় এবং বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে।
প্রতিটি ক্রয়ের পরিমাণ = বর্তমান ইকুইটি × ডিসিএ শতাংশ × বর্তমান মূল্য, এই ইকুইটি অনুপাতের নকশা, স্থির পরিমাণের পরিবর্তে, কৌশলটি অ্যাকাউন্টের বৃদ্ধির সাথে সাথে অবস্থানগুলি প্রসারিত করতে দেয়। প্রাথমিক 5% অবস্থান একক ঝুঁকি নিয়ন্ত্রণ করে, এবং ধীরে ধীরে বাড়ানো পজিশনগুলি সত্যিকারের সুযোগের সামনে পর্যাপ্ত আগুন নিশ্চিত করে।
“just_sold” স্ট্যাটাস ম্যানেজমেন্টের মধ্যে সবচেয়ে চতুর হলঃ বিক্রি হওয়ার পর, যদি না একটি শক্তিশালী bullish সংকেত দেখা যায়, তবে তাৎক্ষণিকভাবে আবার কেনা হবে না। এটি একটি অস্থির বাজারে ঘন ঘন লেনদেন এড়াতে পারে, যা প্রক্রিয়াকরণ খরচ এবং আবেগগত অপারেশন ঝুঁকি হ্রাস করে।
এই কৌশলটি মধ্যম ও দীর্ঘমেয়াদী উর্ধ্বমুখী প্রবণতার মধ্যে রিটার্ন কেনার জন্য সবচেয়ে উপযুক্ত এবং এটি সাধারণত একটি ভাল বা দীর্ঘমেয়াদী ওভারহোলের সময় কাজ করে। MACD এর 52⁄200 প্যারামিটার সেটিংটি নির্ধারণ করে যে এটি একটি বৃহত্তর স্তরের প্রবণতা বিচার করার জন্য আরও উপযুক্ত, এটি সংক্ষিপ্ত লাইনের জন্য উপযুক্ত নয়।
আরএসআই ওভারসোল্ড থ্রেশহোল্ডটি 25 এর পরিবর্তে 30 এ সেট করা হয়েছে, যা নির্দেশ করে যে কৌশলটি আরও গভীর পুনর্নির্মাণের মধ্যে কেনা পছন্দ করে। এই নকশাটি একটি ষাঁড়ের বাজারে আরও ভাল ক্রয় পয়েন্ট অর্জন করতে পারে, তবে এটি একটি ভাল বাজারে “ছুরি ছুরি” নিতে পারে। এটি সুস্পষ্ট উত্থান প্রবণতার মধ্যে ব্যবহার করার পরামর্শ দেওয়া হয়, বাজার শীর্ষে বা পতনের প্রবণতার মধ্যে শুরু হওয়া এড়াতে।
কৌশলটির তাত্ত্বিক লজিকটি নিখুঁত, তবে প্রকৃত পারফরম্যান্সের জন্য নির্দিষ্ট ব্যাকআপ ডেটা প্রয়োজন। সর্বাধিক প্রত্যাহার গ্রহণযোগ্য সীমার মধ্যে রয়েছে কিনা, ক্রমাগত ক্ষতির সংখ্যা খুব বেশি কিনা, বিভিন্ন বাজার পরিবেশে পারফরম্যান্সের পার্থক্য রয়েছে কিনা।
ডিসিএ কৌশলগুলির প্রাকৃতিক বৈশিষ্ট্য হ’ল পতনের সময় ধারাবাহিকভাবে পজিশনিং করা, যার অর্থ অ্যাকাউন্টের নিট মূল্য প্রথমে হ্রাস পাবে এবং তারপরে বৃদ্ধি পাবে। বিনিয়োগকারীদের পর্যাপ্ত মানসিক সহনশীলতা এবং তহবিলের রিজার্ভ থাকা দরকার। এটি প্রথমে ছোট তহবিলের উপর পরীক্ষা করার পরামর্শ দেওয়া হয়, কৌশলটির বৈশিষ্ট্যগুলি নিশ্চিত হওয়ার পরে ধীরে ধীরে বিনিয়োগের আকার বাড়ানো উচিত।
ঝুঁকিপূর্ণ পরামর্শঃ যে কোন পরিমাণগত কৌশলতে ক্ষতির ঝুঁকি থাকে, ঐতিহাসিক পুনর্বিবেচনা ভবিষ্যতে লাভের প্রতিনিধিত্ব করে না, কঠোর ঝুঁকি ব্যবস্থাপনা এবং যথাযথ তহবিল বরাদ্দের প্রয়োজন।
/*backtest
start: 2024-10-20 00:00:00
end: 2025-10-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/
// This Pine Script™ code is subject to the terms of the MPL 2.0 at https://mozilla.org/MPL/2.0/
// © MTB by Neurodoc
// By Nicolás Astorga
//@version=5
strategy("Master Trading Bot by Neurodoc",
shorttitle="MTB Adaptation",
overlay=true,
initial_capital=10000,
pyramiding=100,
commission_value=0.1,
commission_type=strategy.commission.percent,
default_qty_type = strategy.cash)
// —————— CONFIGURATION (Based on ve.env) ——————
// Purchase and DCA Percentages
var GRP_DCA = "DCA Configuration"
start_percentage = input.float(5.0, "Initial Buy Percentage (%)", group=GRP_DCA)
increment_percentage = input.float(2.5, "Increment per DCA Buy (%)", group=GRP_DCA)
max_percentage = input.float(100.0, "Maximum Buy Percentage (%)", group=GRP_DCA)
min_profit_percent = input.float(2.0, "Minimum Profit for Sell (%)", group=GRP_DCA)
// Stop Loss and Drop Signal
var GRP_RISK = "Risk Management"
stop_loss_percent = input.float(100.0, "Stop Loss (%)", group=GRP_RISK, tooltip="A value of 100 means there’s no real stop loss, as price would have to go to 0.")
drop_percent_signal = input.float(2.0, "Price Drop for Sell Signal (%)", group=GRP_RISK)
// Indicator Parameters
var GRP_INDICATORS = "Indicator Parameters"
ema_fast_period = input.int(3, "Fast EMA", group=GRP_INDICATORS)
ema_mid_period = input.int(7, "Medium EMA", group=GRP_INDICATORS)
ema_slow_period = input.int(18, "Slow EMA", group=GRP_INDICATORS)
bb_length = input.int(20, "Bollinger Bands Length", group=GRP_INDICATORS)
bb_stddev = input.float(2.0, "BB Standard Deviation", group=GRP_INDICATORS)
macd_fast = input.int(52, "MACD Fast", group=GRP_INDICATORS)
macd_slow = input.int(200, "MACD Slow", group=GRP_INDICATORS)
macd_signal = input.int(3, "MACD Signal", group=GRP_INDICATORS)
rsi_length = input.int(14, "RSI Length", group=GRP_INDICATORS)
rsi_oversold_threshold = input.int(25, "RSI Oversold (for divergence)", group=GRP_INDICATORS)
// —————— INDICATOR CALCULATIONS ——————
// EMAs
ema_fast = ta.ema(open, ema_fast_period)
ema_mid = ta.ema(open, ema_mid_period)
ema_slow = ta.ema(open, ema_slow_period)
// Bollinger Bands
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bb_length, bb_stddev)
bb_width = (bb_upper - bb_lower) / bb_middle * 100
is_bb_expanding = bb_width > bb_width[1]
// MACD
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
// RSI
rsi = ta.rsi(close, rsi_length)
// Price drop signal from highest price (similar to `cummax` in Python)
highest_price = ta.highest(high, 500) // Using 500-bar lookback to approximate the high
price_drop_percent = ((highest_price - close) / highest_price) * 100
is_price_drop_signal = price_drop_percent >= drop_percent_signal
// —————— TRADING LOGIC ——————
// Trend Conditions
is_bullish = ema_fast > ema_slow and macd_line > signal_line and close > bb_middle
is_bearish = ema_fast < ema_slow and macd_line < signal_line and close < bb_middle
is_weakening = rsi < rsi[1]
// Variables to manage strategy state
var bool just_sold = false
var int dca_step = 0
// Determine next buy percentage of capital
dca_buy_percentage = start_percentage + (dca_step * increment_percentage)
if dca_buy_percentage > max_percentage
dca_buy_percentage := max_percentage
avg_buy_price = strategy.position_avg_price
// Initial Long Condition
long_signal_initial = strategy.position_size == 0 and is_bullish and macd_line > signal_line and rsi < 65
// DCA Condition
price_drop_from_avg = ((avg_buy_price - close) / avg_buy_price) * 100
dca_required_drop = 2.0 + (dca_step * 4.0) // DCA price drop start and increment logic
long_signal_dca = strategy.position_size > 0 and is_bearish and close < avg_buy_price and price_drop_from_avg >= dca_required_drop
// Manage `just_sold` state
if strategy.position_size > 0
just_sold := false
if strategy.position_size == 0 and strategy.position_size[1] > 0
just_sold := true
// Avoid immediate repurchase after sell unless bullish condition is strong
long_signal = (just_sold and is_bullish) ? long_signal_initial : (not just_sold ? (long_signal_initial or long_signal_dca) : false)
// Sell (Close) Condition
current_profit_percent = ((close - avg_buy_price) / avg_buy_price) * 100
has_min_profit = current_profit_percent >= min_profit_percent
stop_loss_price = avg_buy_price * (1 - stop_loss_percent / 100)
is_stoploss_triggered = close <= stop_loss_price
short_signal = strategy.position_size > 0 and has_min_profit and ((is_bearish and is_weakening) or is_price_drop_signal or is_stoploss_triggered or (macd_line < signal_line))
// —————— ORDER EXECUTION ——————
if (long_signal)
// Calculate how much MONEY (USDT) to invest in this trade
cash_to_invest = (strategy.equity * dca_buy_percentage / 100) / close
strategy.entry("Buy", strategy.long, qty=cash_to_invest)
dca_step := dca_step + 1
if (short_signal)
strategy.close_all(comment="Sell")
dca_step := 0 // Reset DCA counter after selling
// —————— VISUALIZATION ——————
// Background color by trend
bgcolor(is_bullish ? color.new(color.green, 90) : is_bearish ? color.new(color.red, 90) : na)
// Plot EMAs and Bollinger Bands
plot(ema_fast, "Fast EMA", color.blue)
plot(ema_slow, "Slow EMA", color.orange)
p1 = plot(bb_upper, "Upper BB", color=color.gray)
p2 = plot(bb_lower, "Lower BB", color=color.gray)
fill(p1, p2, color=color.new(color.gray, 90))
// Plot average buy price when in position
plot(strategy.position_size > 0 ? avg_buy_price : na, "Average Buy Price", color.yellow, style=plot.style_linebr, linewidth=2)
// Plot Take Profit target
plot(strategy.position_size > 0 ? avg_buy_price * (1 + min_profit_percent / 100) : na, "Sell Price (TP)", color.aqua, style=plot.style_linebr, linewidth=2)
// Plot Stop Loss level
plot(strategy.position_size > 0 ? stop_loss_price : na, "Stop Loss", color.fuchsia, style=plot.style_linebr, linewidth=2)