এই কৌশলটি মার্কেটের প্রবণতা পরিবর্তনের সময় ট্রেডিংয়ের সুযোগগুলি ক্যাপচার করার জন্য এমএসিডি সূচককে সীমিত মার্টিনগাল মানি ম্যানেজমেন্ট পদ্ধতির সাথে একত্রিত করে। যখন এমএসিডি দ্রুত লাইন ধীর লাইনের উপরে অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয় এবং যখন দ্রুত লাইন ধীর লাইনের নীচে অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। একই সাথে, কৌশলটি সর্বাধিক 3 টি অতিরিক্ত অবস্থানের সাথে ড্রডাউনগুলি নিয়ন্ত্রণ করতে সীমিত মার্টিনগাল পদ্ধতি ব্যবহার করে। কৌশলটি প্রতিটি ব্যবসায়ের জন্য 1% এর একটি নির্দিষ্ট লাভ এবং স্টপ লস সেট করে।
এই কৌশলটি ম্যাকডি সূচকের মাধ্যমে প্রবণতা ক্যাপচার করে, সীমিত মার্টিনগাল ব্যবহার করে ড্রডাউনগুলি নিয়ন্ত্রণ করে, যা ট্রেন্ডিং মার্কেটে ভাল ফলাফল অর্জন করতে পারে। তবে, কৌশলটির কিছু ঝুঁকিও রয়েছে, যেমন সিগন্যাল ব্যর্থতা এবং স্থির স্টপ লস। অন্যান্য সূচক প্রবর্তন করে, প্যারামিটার সেটিংস অনুকূলিতকরণ করে, অবস্থান আকার এবং অন্যান্য পদ্ধতি ব্যবহার করে, এই কৌশলটির দৃust়তা এবং লাভজনকতা আরও উন্নত করা যেতে পারে।
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=100) // MACD 설정 fastLength = 15 slowLength = 30 signalSmoothing = 9 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // 계약수 및 이전 거래 결과 기록 var float contractSize = 0.01 var int martingaleCount = 0 // 마틴게일 카운트 var float lastTradeResult = 0 // 매수 및 매도 조건 longCondition = ta.crossover(macdLine, signalLine) shortCondition = ta.crossunder(macdLine, signalLine) // 매수 신호 if (longCondition) strategy.entry("Long", strategy.long, qty=contractSize) lastTradeResult := strategy.netprofit // 매도 신호 if (shortCondition) strategy.entry("Short", strategy.short, qty=contractSize) lastTradeResult := strategy.netprofit // 익절 및 손절 조건 strategy.close("Long", when=(close / strategy.position_avg_price >= 1.01)) strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01)) strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99)) strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99)) // 마틴게일 전략 적용 if (strategy.netprofit < lastTradeResult) if (martingaleCount < 3) contractSize := contractSize * 2 martingaleCount := martingaleCount + 1 else contractSize := 0.01 martingaleCount := 0 else contractSize := 0.01 martingaleCount := 0 // 매수, 매도 포인트 화살표로 표시 plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")