এই কৌশলটি সহজ চলমান গড় (এসএমএ) এবং কিছু গণিত গণনা ব্যবহার করে ক্রয় / বিক্রয় পয়েন্টগুলি নির্ধারণ করতে। আমরা আমাদের ভিত্তি হিসাবে একটি 100-দিনের এসএমএ লাইন রাখি। যদি বন্ধের দাম এই লাইনের নীচে থাকে তবে আমরা লাইনটির নীচে দামের শতাংশের ভিত্তিতে খোলার অবস্থান নির্ধারণ করি (নিম্ন অফসেট), যা কনফিগারযোগ্য। একইভাবে, আমরা লং পজিশন বন্ধ করার আগে 100-দিনের এসএমএর উপরে একটি উচ্চ অফসেট শতাংশ সেট করি। যদি আমরা দাম এখনও বাড়ার সময় খুব তাড়াতাড়ি বন্ধ করার চেষ্টা করি তবে ট্রেইলিং স্টপ লস ট্রিগার হবে।
কৌশলটি তিনটি এসএমএ লাইন ব্যবহার করেঃ দ্রুত লাইন (ডিফল্ট 14 দিন), ধীর লাইন (ডিফল্ট 100 দিন), এবং রেফারেন্স লাইন (ডিফল্ট 30 দিন) ।
এটি দীর্ঘ হয় যখন বন্ধের মূল্য রেফারেন্স লাইনের নীচে থাকে, ধীর লাইনের নিচে শতাংশ (নিম্ন অফসেট) কনফিগার করা মানের চেয়ে বেশি, দ্রুত লাইন বাড়ছে এবং ধীর লাইন হ্রাস পাচ্ছে। যখন এই শর্তটি সন্তুষ্ট হয়, দ্রুত এবং ধীর লাইন খুব শীঘ্রই অতিক্রম করার সম্ভাবনা রয়েছে, তাই এটি একটি ভাল প্রবেশের বিন্দু।
এটি দীর্ঘ বন্ধ হয় যখন বন্ধের মূল্য রেফারেন্স লাইনের উপরে থাকে, ধীর রেখার উপরে শতাংশ (উচ্চ অফসেট) কনফিগার করা মানের চেয়ে বেশি, বন্ধের দাম 3 টি ক্রমাগত মোমবাতিতে বেড়েছে, আমাদের খোলা মুনাফা রয়েছে এবং দ্রুত লাইন ধীর রেখার উপরে রয়েছে। দীর্ঘ বন্ধের পরে যদি দাম বাড়তে থাকে তবে ট্রেলিং স্টপ লস ট্রিগার হবে।
অর্ডারের আকার মোট মূলধনের শতাংশের উপর ভিত্তি করে, এটি আমাদের অবস্থানের আকার নিয়ন্ত্রণ করে।
সংশ্লিষ্ট উন্নতিঃ
এসএমএ অফসেট ফ্লাকুয়েশন ট্রেডিং কৌশলটি বিভিন্ন এসএমএ লাইনের উপর ভিত্তি করে অফসেট সেট করে সর্বোত্তম এন্ট্রি পয়েন্টগুলি সনাক্ত করে। প্রস্থান প্রক্রিয়াটি লাভগুলি লক করার জন্য একটি ট্রেলিং স্টপ লস সেট করে। এই কৌশলটি বোঝা এবং বাস্তবায়ন করা সহজ। এসএমএ সময়কাল, অফসেট, স্টপ লস স্তরের মতো পরামিতিগুলি অনুকূল করে আরও ভাল ফলাফল অর্জন করা যায়। এটি স্থিতিশীল মুনাফা অর্জনের জন্য মাঝারি-দীর্ঘমেয়াদী বিনিয়োগকারীদের জন্য উপযুক্ত।
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // Author: Sonny Parlin (highschool dropout) strategy(shorttitle="SMA+Strategy", title="SMA Offset Strategy", overlay=true, currency=currency.USD, initial_capital=10000) // Inputs and variables ss = input(14, minval=10, maxval=50, title="SMA Fast (days)") ff = input(100, minval=55, maxval=200, title="SMA Slow (days)") ref = input(30, minval=20, maxval=50, title="SMA Reference (days)") lowOffset = input(0.001, "Low Offset (%)", minval=0, step=0.001) highOffset = input(0.0164, "High Offset (%)", minval=0, step=0.0001) orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01) // SMA smaFast = sma(close, ss) smaSlow = sma(close, ff) smaRef = sma(close, ref) distanceLow = (close - smaSlow) / close distanceHigh = (close - smaSlow) / close // Set up SMA plot but don't show by default plot(smaFast, "smaFast", color=#00ff00, display = 0) plot(smaSlow, "smaSlow", color=#ff0000, display = 0) plot(smaRef, "smaRef", color=#ffffff, display = 0) // The buy stratey: // guard that the low is under our sma low reference line by our lowOffset %, // default is 0.001. (low < smaRef) and (distanceLow > lowOffset) // SMA fast is on the rise and SMA slow is falling and they are very likely // to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) enterLong = (low < smaRef) and (distanceLow > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow, 1)) // The sell Strategy: // Guard that close is higher than our sma high reference line by our // highOffset %, default is 0.0164. (close > smaRef) and (distanceHigh > highOffset) // Guard that close has risen by 3 candles in a row (rising(close,3)) // Guard that we currently have profit (strategy.openprofit > 0) // Guard that SMA fast is higher than smaSlow (smaFast > smaSlow) // If it keeps going up past our close position the trailing stoploss will kick in! enterShort = (close > smaRef) and (distanceHigh > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow) // Order size is based on total equity // Example 1: // startingEquity = 2000 // close = 47434.93 // orderStake = 0.45 // (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900 // Example 2: // startingEquity = 2000 // close = 1.272 // orderStake = 0.45 // (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900 orderSize = (strategy.equity * orderStake) / close // Trailing Stoploss // I'm using 1.35 as my default value, play with this for different results. longTrailPerc = input(title="Trailing Stoploss (%)", type=input.float, minval=0.0, step=0.1, defval=1.35) * 0.01 longStopPrice = 0.0 longStopPrice := if (strategy.position_size > 0) stopValue = close * (1 - longTrailPerc) max(stopValue, longStopPrice[1]) else 0 if (enterLong) strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0) if (enterShort) strategy.exit(id="Close Long Position", stop=longStopPrice) //plot(strategy.equity)