
یہ حکمت عملی ایک مکمل رجحان ٹریڈنگ سسٹم کی تعمیر کے لئے اپنی مرضی کے مطابق سائیکل سادہ منتقل اوسط (ایس ایم اے) اور دو انڈیکس منتقل اوسط (ای ایم اے) کے ساتھ مل کر استعمال کرتا ہے. متحرک سٹاپ نقصان اور منافع کے اہداف کے انتظام کے طریقہ کار کو مربوط کرتے ہوئے ، خطرے کو مؤثر طریقے سے کنٹرول کرنے اور منافع کو مقفل کرنے کے لئے.
حکمت عملی بنیادی طور پر تین مساوی لائنوں کے متحرک تعلقات کی بنیاد پر تجارتی فیصلے کرتی ہے۔ سسٹم رجحان کی سمت کا تعین کرنے کے لئے ایس ایم اے کے مقابلے میں قیمت کی نگرانی کرتا ہے ، اور تیز ای ایم اے اور سست ای ایم اے کے کراسنگ کے ذریعے۔ انٹری سگنل کو دو طرح سے متحرک کیا جاتا ہے: ایک ، قیمت ایس ایم اے کے اوپر سے نیچے () اور تیز ای ایم اے کے اوپر () کے ذریعے گزرتی ہے) سست ای ایم اے؛ دوسرا ، قیمت ایس ایم اے کو توڑ دیتی ہے اور سابقہ قیمت ایس ایم اے کے اوپر () کے نیچے) پر برقرار رہتی ہے۔ حکمت عملی متحرک اسٹاپ نقصان کا طریقہ کار استعمال کرتی ہے ، ابتدائی اسٹاپ نقصان ای ایم اے پوزیشن یا فکسڈ فی صد پر مبنی ہے ، اور منافع میں اضافے کے ساتھ ساتھ اسٹاپ نقصان کی پوزیشن کو اسی طرح ایڈجسٹ کیا جاتا ہے۔
اس حکمت عملی میں ایک سے زیادہ مساوی لائنوں کے ساتھ مل کر ایک مکمل رجحان ٹریکنگ سسٹم بنایا گیا ہے ، جس میں داخلے ، باہر نکلنے اور خطرے کے انتظام جیسے پہلوؤں پر تفصیلی قواعد وضع کیے گئے ہیں۔ حکمت عملی کا فائدہ یہ ہے کہ رجحانات کو مؤثر طریقے سے پہچاننے اور ان کا پیچھا کرنے کے قابل ہو ، جبکہ متحرک اسٹاپ نقصان کے طریقہ کار کے ذریعہ منافع کی حفاظت کریں۔ اگرچہ کچھ موروثی خطرات موجود ہیں ، لیکن تجویز کردہ اصلاح کی سمت سے حکمت عملی کی استحکام اور موافقت کو مزید فروغ دیا جاسکتا ہے۔ حکمت عملی کا مجموعی ڈیزائن معقول ہے ، جس میں بہتر عملی قدر اور اصلاح کی گنجائش ہے۔
/*backtest
start: 2025-02-17 17:00:00
end: 2025-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("交易策略(自定义EMA/SMA参数)", overlay=true, initial_capital=100000, currency=currency.EUR, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// 输入参数:可调的 SMA 和 EMA 周期
smaLength = input.int(120, "SMA Length", minval=1, step=1)
emaFastPeriod = input.int(13, "EMA Fast Period", minval=1, step=1)
emaSlowPeriod = input.int(21, "EMA Slow Period", minval=1, step=1)
// 计算均线
smaVal = ta.sma(close, smaLength)
emaFast = ta.ema(close, emaFastPeriod)
emaSlow = ta.ema(close, emaSlowPeriod)
// 绘制均线
plot(smaVal, color=color.orange, title="SMA")
plot(emaFast, color=color.blue, title="EMA Fast")
plot(emaSlow, color=color.red, title="EMA Slow")
// 入场条件 - 做多
// 条件1:收盘价高于SMA 且 EMA Fast 向上穿越 EMA Slow
longTrigger1 = (close > smaVal) and ta.crossover(emaFast, emaSlow)
// 条件2:收盘价上穿SMA 且前5根K线的最低价均高于各自的SMA
longTrigger2 = ta.crossover(close, smaVal) and (low[1] > smaVal[1] and low[2] > smaVal[2] and low[3] > smaVal[3] and low[4] > smaVal[4] and low[5] > smaVal[5])
longCondition = longTrigger1 or longTrigger2
// 入场条件 - 做空
// 条件1:收盘价低于SMA 且 EMA Fast 向下穿越 EMA Slow
shortTrigger1 = (close < smaVal) and ta.crossunder(emaFast, emaSlow)
// 条件2:收盘价下穿SMA 且前5根K线的最高价均低于各自的SMA
shortTrigger2 = ta.crossunder(close, smaVal) and (high[1] < smaVal[1] and high[2] < smaVal[2] and high[3] < smaVal[3] and high[4] < smaVal[4] and high[5] < smaVal[5])
shortCondition = shortTrigger1 or shortTrigger2
// 定义变量记录入场时的价格与EMA Fast值,用于计算止损
var float entryPriceLong = na
var float entryEMA_Fast_Long = na
var float entryPriceShort = na
var float entryEMA_Fast_Short = na
// 入场与初始止盈止损设置 - 做多
// 止损取“开仓时的EMA Fast价格”与“0.2%止损”中较大者;止盈为止损的5倍
if (longCondition and strategy.position_size == 0)
entryPriceLong := close
entryEMA_Fast_Long := emaFast
strategy.entry("Long", strategy.long)
stopPercLong = math.max(0.002, (entryPriceLong - entryEMA_Fast_Long) / entryPriceLong)
stopLong = entryPriceLong * (1 - stopPercLong)
tpLong = entryPriceLong * (1 + 5 * stopPercLong)
strategy.exit("LongExit", "Long", stop=stopLong, limit=tpLong)
// 入场与初始止盈止损设置 - 做空
// 止损取“开仓时的EMA Fast价格”与“0.2%止损”中较大者;止盈为止损的5倍
if (shortCondition and strategy.position_size == 0)
entryPriceShort := close
entryEMA_Fast_Short := emaFast
strategy.entry("Short", strategy.short)
stopPercShort = math.max(0.002, (entryEMA_Fast_Short - entryPriceShort) / entryPriceShort)
stopShort = entryPriceShort * (1 + stopPercShort)
tpShort = entryPriceShort * (1 - 5 * stopPercShort)
strategy.exit("ShortExit", "Short", stop=stopShort, limit=tpShort)
// 移动止损逻辑
// 当持仓盈利达到0.8%时更新止损和止盈,保持止盈为止损的5倍
var float longHighest = na
if (strategy.position_size > 0)
longHighest := na(longHighest) ? high : math.max(longHighest, high)
if (high >= entryPriceLong * 1.008)
newLongStop = longHighest * (1 - 0.003)
newPerc = (entryPriceLong - newLongStop) / entryPriceLong
newLongTP = entryPriceLong * (1 + 5 * newPerc)
strategy.exit("LongExit", "Long", stop=newLongStop, limit=newLongTP)
else
longHighest := na
var float shortLowest = na
if (strategy.position_size < 0)
shortLowest := na(shortLowest) ? low : math.min(shortLowest, low)
if (low <= entryPriceShort * 0.992)
newShortStop = shortLowest * (1 + 0.003)
newPercShort = (newShortStop - entryPriceShort) / entryPriceShort
newShortTP = entryPriceShort * (1 - 5 * newPercShort)
strategy.exit("ShortExit", "Short", stop=newShortStop, limit=newShortTP)
else
shortLowest := na
// 额外平仓条件
// 如果持多仓时EMA Fast下穿EMA Slow,则立即平多
if (strategy.position_size > 0 and ta.crossunder(emaFast, emaSlow))
strategy.close("Long", comment="EMA下穿平多")
// 如果持空仓时EMA Fast上穿EMA Slow,则立即平空
if (strategy.position_size < 0 and ta.crossover(emaFast, emaSlow))
strategy.close("Short", comment="EMA上穿平空")