এই কৌশলটি ঝুঁকি নিয়ন্ত্রণের সময় ট্রেন্ডিং বাজার চলাচল ক্যাপচার করার জন্য এমএসিডি সূচক এবং মার্টিনগেল মানি ম্যানেজমেন্ট পদ্ধতিকে একত্রিত করে। কৌশলটি ট্রেডিং সংকেত হিসাবে এমএসিডি দ্রুত লাইন এবং ধীর লাইনের ক্রসওভার ব্যবহার করে এবং অবস্থান আকার নিয়ন্ত্রণের জন্য সীমিত সংখ্যক মার্টিনগাল পদ্ধতি গ্রহণ করে। যখন একটি হারানো বাণিজ্য ঘটে, তখন কৌশলটি পূর্ববর্তী ক্ষতি পুনরুদ্ধার করার জন্য পরবর্তী বাণিজ্যের জন্য চুক্তির সংখ্যা দ্বিগুণ করবে, সর্বোচ্চ তিনগুণ পর্যন্ত। একই সময়ে, কৌশলটি ঝুঁকি নিয়ন্ত্রণের জন্য লাভ এবং স্টপ-লস শর্তগুলি সেট করে।
ম্যাকডি সূচক এবং মার্টিনগেল মানি ম্যানেজমেন্ট পদ্ধতিকে একত্রিত করে, এই কৌশলটি ঝুঁকি নিয়ন্ত্রণের সময় ট্রেন্ডিং বাজার থেকে মুনাফা অর্জনের চেষ্টা করে। কৌশল যৌক্তিকতা পরিষ্কার এবং বাস্তবায়ন করা সহজ, তবে মার্টিনগেল লিভারেজিংয়ের সাথে যুক্ত ঝুঁকি এবং স্থির লাভ এবং স্টপ-লস অনুপাতের সীমাবদ্ধতা এখনও রয়েছে। ভবিষ্যতে, কৌশলটি গতিশীলভাবে লিভারেজিং পদ্ধতির সমন্বয়, ট্রেডিং সংকেতগুলি অনুকূলিতকরণ, অভিযোজিত লাভ এবং স্টপ-লস পদ্ধতি গ্রহণ এবং কৌশলটির দৃust়তা এবং লাভজনকতা উন্নত করতে অবস্থান পরিচালনা বাস্তবায়ন করে অনুকূলিত করা যেতে পারে।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 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=500) // MACD 설정 변경 fastLength = 15 slowLength = 30 signalSmoothing = 9 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // 계약수 및 이전 거래 결과 기록 var float contractSize = 0.02 // 계약 수를 0.05로 시작 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.015)) 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.02 // 리셋 할 때 0.05로 리셋 martingaleCount := 0 else contractSize := 0.02 // 초기화 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")