وسائل لوڈ ہو رہے ہیں... لوڈنگ...

رجحان فلٹر پر مبنی تیز QQE کراس اوور ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-25 11:34:58
ٹیگز:

img

جائزہ

رجحان فلٹر پر مبنی تیز QQE کراس اوور ٹریڈنگ حکمت عملی ایک رجحان کی پیروی کرنے والی ٹریڈنگ حکمت عملی ہے جو رجحان کی سمت فلٹرنگ کے لئے چلتی اوسط کے ساتھ تیز QQE کراس کا استعمال کرتی ہے۔ QQE یا کوالٹیٹی کوانٹیٹیٹیو تخمینہ نسبتا strength طاقت انڈیکس پر مبنی ہے لیکن اضافی تبدیلی کے طور پر ہموار کرنے کی تکنیک کا استعمال کرتی ہے۔ تین کراسز کا انتخاب کیا جاسکتا ہے (تمام ڈیفالٹ کے ذریعہ منتخب کردہ):

  • آر ایس آئی سگنل کا عبور صفر (ایکس زیرو)
  • RSI سگنل تیز رفتار RSIatr لائن (XQQE) کو عبور کرتا ہے
  • آر ایس آئی سگنل آر ایس آئی کی حد سے باہر نکلتا ہے (خرید/فروخت)

(خرید/فروخت) انتباہات کو اختیاری طور پر چلتی اوسط کی طرف سے فلٹر کیا جا سکتا ہے:

  • BUY انتباہ کے لئے بند ہونا تیز MA اور تیز MA (EMA8) > میڈیم MA (EMA20) > سست MA (SMA50) سے اوپر ہونا چاہئے۔
  • SELL انتباہ کے لئے بند کرنا تیز رفتار MA اور تیز رفتار MA (EMA8) < میڈیم MA (EMA20) < سست MA (SMA50) سے نیچے ہونا چاہئے۔

اور/یا سمت فلٹر:

  • BUY انتباہ کے لئے بند کرنا سست MA (SMA50) سے اوپر ہونا چاہئے اور سمتی MA (EMA20) سبز ہونا چاہئے۔
  • SELL انتباہ کے لئے بند کرنا سست MA (SMA50) سے نیچے ہونا چاہئے اور سمتی MA (EMA20) سرخ ہونا چاہئے۔

XZERO اور XQQE فلٹرنگ میں شامل نہیں ہیں، وہ زیر التواء خرید / فروخت انتباہات، خاص طور پر XZERO کی نشاندہی کرنے کے لئے استعمال کیا جاتا ہے.

اس حکمت عملی کو کسی بھی کرنسی کی جوڑی اور زیادہ تر چارٹ ٹائم فریم پر کام کرنا چاہئے۔

حکمت عملی کا اصول

اس حکمت عملی کا بنیادی خیال تیزی سے QQE اشارے کی سمت کراس اوور ٹریڈنگ سگنل کے طور پر استعمال کرنا اور رجحان کی سمت کو پکڑنے کے لئے چلتی اوسط کے مجموعہ کے ذریعے شور ٹریڈنگ سگنل کو فلٹر کرنا ہے۔

خاص طور پر، حکمت عملی مندرجہ ذیل اشارے اور سگنل کا استعمال کرتی ہے:

تیز QQE اشارے: یہ ایک آر ایس آئی پر مبنی اشارے ہے جس میں اسے زیادہ حساس اور تیز بنانے کے لئے اضافی ہموار کرنا ہے۔ اشارے میں تین لائنیں شامل ہیں: درمیانی لائن آر ایس آئی کی تیزی سے چلنے والی اوسط ہے ، اوپری لائن درمیانی لائن + فاسٹ اے ٹی آر * ایک عنصر ہے ، اور نچلی لائن درمیانی لائن ہے - فاسٹ اے ٹی آر * ایک عنصر ہے۔ جب آر ایس آئی اوپری لائن سے اوپر جاتا ہے تو ، یہ فروخت کا اشارہ ہے۔ جب آر ایس آئی نچلی لائن سے نیچے جاتا ہے تو ، یہ خرید کا اشارہ ہے۔

صفر لائن کراس اوور: یہ اشارے پیدا کرتا ہے جب آر ایس آئی کی درمیانی لائن صفر لائن کو عبور کرتی ہے۔ اوپر کی طرف کراس اوور خرید کا اشارہ ہے اور نیچے کی طرف کراس اوور فروخت کا اشارہ ہے۔ یہ اشارے رجحان کی تبدیلیوں کا آغاز ظاہر کرتے ہیں۔

چینل توڑ: یہ اس وقت سگنل پیدا کرتا ہے جب آر ایس آئی کی وسط لائن مقررہ حد کے چینل میں داخل ہوتی ہے۔ اوپری چینل کو توڑنا فروخت کا سگنل ہے اور نچلے چینل کو توڑنا خریدنے کا سگنل ہے۔ یہ مضبوط رجحان سگنل ہیں۔

اوسط حرکت پذیر مجموعہ: تیز (8 ادوار) ، درمیانے (20 ادوار) اور سست (50 ادوار) چلتی اوسط کا ایک مجموعہ استعمال کریں۔ جب تین لائنوں کو ترتیب دیا جاتا ہے: تیز > درمیانے > سست ، یہ ایک اوپر کا رجحان ہے۔ جب تیز < درمیانے < سست کے طور پر ترتیب دیا جاتا ہے ، تو یہ ایک نیچے کا رجحان ہے۔ مجموعی رجحان کی سمت کا تعین کرنے کے لئے کمبو کا استعمال کیا جاتا ہے۔

رجحان سمت فلٹر: ایک خرید سگنل صرف اس وقت تیار کیا جاتا ہے جب بند قیمت سست حرکت پذیر اوسط سے اوپر ہو اور درمیانی حرکت پذیر اوسط (20 ادوار) اوپر کی طرف ہو (مدت کی سب سے زیادہ قیمت > سب سے کم قیمت) ۔ ایک فروخت سگنل صرف اس وقت تیار کیا جاتا ہے جب بند قیمت سست حرکت پذیر اوسط سے نیچے ہو اور درمیانی حرکت پذیر اوسط (20 ادوار) نیچے کی طرف ہو۔ اس سے کچھ الٹ جعلی سگنل فلٹر ہوسکتے ہیں۔

تیز رفتار QQE اشارے سے کراس اوور سگنلز کے استعمال اور چلتی اوسط سے رجحان فلٹرنگ کو یکجا کرکے ، یہ ایک نسبتا complete مکمل تجارتی نظام بنانے کے لئے بڑے ٹائم فریم کے رجحانات پر قلیل مدتی الٹ پوائنٹس کو پکڑتا ہے۔ اسی وقت ، اشارے کے پیرامیٹرز کو نسبتا sensitive حساس ہونے کے لئے ترتیب دیا جاتا ہے تاکہ رجحانات کے موڑ کو جلد سے جلد پکڑ سکے۔

خلاصہ یہ ہے کہ یہ ایک ایسی حکمت عملی ہے جو درمیانی اور طویل مدتی رجحانات کو ٹریک کرتی ہے، داخلہ / باہر نکلنے کے لئے مختصر مدت کے الٹ کے وقت کو پکڑنے کے لئے تیز اشارے استعمال کرتی ہے، اور سمت کے خلاف تجارت کے خطرے کو کم کرنے اور اس طرح واپسی کو زیادہ سے زیادہ کرنے کے لئے حرکت پذیر اوسط فلٹرنگ کا استعمال کرتی ہے.

حکمت عملی کے فوائد

  • تیزی سے الٹ سگنل پکڑنے کے لئے تیز رفتار اور حساس QQE اشارے کا استعمال کرتا ہے
  • بڑے سائیکل کی سمت کا تعین کرنے اور رجحانات کے خلاف تجارت سے بچنے کے لئے متعدد چلتی اوسط کا اطلاق کرتا ہے
  • متعدد کراس سگنل شامل ہیں جو منافع کے مواقع کو بڑھانے کے لئے مجموعی طور پر استعمال کیا جا سکتا ہے
  • مختلف مصنوعات اور ٹائم فریم کے لئے بہتر بنایا جا سکتا ہے کہ ایڈجسٹ پیرامیٹرز
  • الگ الگ چینلز کو ڈرائنگ کرنے کے بجائے اشارے کے اپنے چینل بریک آؤٹ سگنل کا استعمال کرتا ہے، پیرامیٹر انحصار سے بچنے
  • بڑے رجحان کے دوروں کے تحت بہت اچھی طرح سے قلیل مدتی الٹ حرکتوں کو پکڑ سکتا ہے
  • سادہ اور واضح تصورات، سمجھنے اور لاگو کرنے میں آسان

اسٹریٹجی کے خطرات

اس حکمت عملی کے ساتھ کچھ ممکنہ خطرات بھی ہیں:

  • تیز اشارے جھوٹے سگنل پیدا کرنے کا رجحان رکھتے ہیں جن کو حرکت پذیر اوسط کے ذریعہ مکمل طور پر فلٹر نہیں کیا جاسکتا ہے ، غلط سمت کی پیروی کا خطرہ موجود ہے
  • جب بڑے سائیکل رجحان الٹ واقع ہوتا ہے، الٹ ٹریڈ سگنل بننے کی کوشش کرتے ہیں جس میں خطرات پیدا ہوتے ہیں
  • پیسے کے انتظام کے عوامل، زیادہ تجارت اور نقصانات کے خطرات پر کوئی غور نہیں ہے
  • جگہ پر کوئی سٹاپ نقصان نہیں، نقصانات کی توسیع کا خطرہ بڑا ہے
  • بیک ٹسٹ ڈیٹا فٹنس رسک، اصل کارکردگی کی تصدیق کرنا باقی ہے

انسداد اقدامات اور حل میں شامل ہیں:

  • چلتی اوسط پیرامیٹرز کو ایڈجسٹ کریں، رجحانات کا تعین کرنے کے لئے زیادہ سائیکل کی لمبائی کا استعمال کریں
  • کمپو فلٹرنگ کے لئے MACD، تعصب وغیرہ جیسے دیگر اشارے شامل کریں
  • ایک ہی تجارت کے نقصان کے سائز کو کنٹرول کرنے کے لئے سٹاپ نقصان کی حکمت عملی شامل کریں
  • اصلی پیسے کی جانچ، پیرامیٹرز کو بہتر بنانا

اصلاح کی ہدایات

اس حکمت عملی کو مزید بہتر بنانے کی گنجائش ہے:

  1. بہترین پیرامیٹر مجموعہ تلاش کرنے کے لئے QQE اشارے کے تیز اور سست لائن پیرامیٹرز کو بہتر بنائیں
  2. فلٹرنگ کی بہترین کارکردگی تلاش کرنے کے لئے زیادہ چلتی اوسط کمبو ٹیسٹ کریں
  3. معاون سگنل فلٹرنگ کے لئے MACD جیسے دیگر اشارے شامل کریں
  4. پوزیشن سائزنگ کو بہتر بنانے کے لئے منی مینجمنٹ کی حکمت عملی کا اطلاق کریں
  5. ہر تجارت کے لئے نیچے کی طرف خطرے کو کنٹرول کرنے کے لئے سٹاپ نقصان کی حکمت عملی مقرر کریں
  6. مختلف مصنوعات کی بنیاد پر پیرامیٹرز کو بہتر بنائیں
  7. قلیل مدتی تبدیلیوں سے گمراہ ہونے سے بچنے کے لئے یہاں تک کہ طویل مدتی فریم پر رجحان کا تعین کریں

پیرامیٹر کی اصلاح کے ساتھ، زیادہ اشارے کو یکجا کرنے، اور قابل عمل پیسے اور خطرے کے انتظام کے طریقوں کی مدد سے، اس حکمت عملی کی کارکردگی کو حقیقی ٹریڈنگ کے لئے بہتر بنایا جا سکتا ہے.

نتیجہ

مجموعی طور پر ، رجحان فلٹر پر مبنی تیز QQE کراس اوور ٹریڈنگ حکمت عملی ایک بہت ہی قابل ذکر انتخاب ہے۔ اس کی طاقت اہم رجحانات کا تعین کرنے اور ان کے خلاف زیادہ سے زیادہ تجارت سے بچنے کے لئے متعدد حرکت پذیر اوسط کا استعمال کرتے ہوئے تیزی سے الٹ ٹریڈنگ کے مواقع حاصل کرنے میں ہے۔ اشارے کے پیرامیٹرز اور فلٹرنگ کے معیار کی اصلاح کے ساتھ ، سخت منی مینجمنٹ کے ساتھ مل کر ، یہ حکمت عملی نسبتا ste مستحکم سرمایہ کاری کی واپسی پیدا کرسکتی ہے۔

یقینا risks خطرات کو نظرانداز نہیں کیا جاسکتا ہے۔ حکمت عملی کی عملی اور وشوسنییتا کو یقینی بنانے کے لئے حقیقی رقم کی جانچ اور مسلسل اصلاح کی ایڈجسٹمنٹ ضروری ہے۔ آخر میں ، سرمایہ کاروں کے لئے طویل مدتی مشق کے لئے مطالعہ اور ٹریک کرنے کے قابل ہے۔ یہ خیال کیا جاتا ہے کہ الگورتھم ٹریڈنگ ٹیکنالوجیز کی ترقی کے ساتھ ، تیز اشارے اور رجحان فلٹرنگ پر مبنی اس قسم کی حکمت عملی میں مزید بہتری اور پھیلاؤ آئے گا۔


/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//
// Title:   [STRATEGY][UL]QQE Cross v1.1
// Author:  JustUncleL
// Date:    22-Oct-2016
// Version: v1.1
//
// Description:
//  A trend following trading Strategy that uses fast QQE crosses with Moving Averages
//  for trend direction filtering. QQE or Qualitative Quantitative Estimation is based 
//  on the relative strength index, but uses a smoothing technique as an additional 
//  transformation. Three crosses can be selected (all selected by default): 
//    - RSI signal crossing ZERO (XZERO)
//    - RSI signal crossing Fast RSIatr line (XQQE)
//    - RSI signal exiting the RSI Threshhold Channel (BUY/SELL)
//  The (BUY/SELL) alerts can be optionally filtered by the Moving averages:
//    - For BUY alert the Close must be above the fast MA and 
//        fast MA (EMA8) > medium MA (EMA20) > slow MA (SMA50).
//    - For SELL alert the Close must be below the fast MA and
//        fast MA (EMA8) < medium MA (EMA20) < slow MA (SMA50).
//  and/or directional filter:
//    - For BUY alert the Close must be above the slow MA (SMA50) and the
//      directional MA (EMA20) must be green.
//    - For SELL alert the Close must be below the slow MA (SMA50) and the
//      directional MA (EMA20) must be red.
//. The XZERO and XQQE are not included in the filtering, they are used to indicate
//  pending BUY/SELL alerts, particularly the XZERO. 
//
//  This Strategy should work on any currency pair and most chart timeframes.
//  *** USE AT YOUR OWN RISK ***
//  
// 
//
// Mofidifications:
//  1.1 - Added Target Profit option, cleaned up the risk management code.
//        Changed Trade Close to EMA20 direction change instead of opposite BUY/SELL
//        signal, which will be earlier, this means stop loss setting should not be
//        required when an AutoTrader is available.
//        Modified code to prevent potential repaint issues.
//  1.0 - original
//
// References:
//  Some Code borrowed from:
//  - "Scalp Jockey - MTF MA Cross Visual Strategizer by JayRogers"
//  - "QQE MT4 by glaz"
//  - "Strategy Code Example by JayRogers"  
//  Inspiration from:
//  - http://www.forexstrategiesresources.com/binary-options-strategies-ii/189-aurora-binary-trading/
//  - http://www.forexstrategiesresources.com/metatrader-4-trading-systems-v/652-qqe-smoothed-trading/
//  - http://dewinforex.com/forex-indicators/qqe-indicator-not-quite-grail-but-accurately-defines-trend-and-flat.html
//

strategy(title='[STRATEGY][UL]QQE Cross v1.1', pyramiding=0, overlay=true )


// - INPUTS START
// Fast MA - type, source, length
type1   = input(defval="EMA", title="Fast MA Type: SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, ZEMA ( case sensitive )")
len1    = input(defval=8, title="Fast - Length", minval=1)
// Medium Fast MA - type, source, length
type2   = input(defval="EMA", title="Medium Fast MA Type: SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, ZEMA ( case sensitive )")
len2    = input(defval=20, title="Medium Fast - Length", minval=1)
// Slow MA - type, source, length
type3   = input(defval="SMA", title="Slow MA Type: SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, LSMA, ZEMA ( case sensitive )")
len3    = input(defval=50, title="Slow Length", minval=1)
//
// QQE rsi Length, Smoothing, fast ATR factor, source
RSILen  = input(6,title='RSI Length')
SF      = input(3,title='RSI Smoothing Factor')
QQE     = input(2.618,title='Fast QQE Factor')
threshhold = input(10, title="RSI Threshhold")
//
sQQEx   = input(false,title="Show QQE Signal crosses")
sQQEz   = input(false,title="Show QQE Zero crosses")
//
filter  = input(false,title="Use Moving Average Filter")
dfilter = input(true, title="Use Trend Directional Filter" )
RSIsrc  = input(close,title="Source")
srcclose= RSIsrc

// - INPUTS END

// - FUNCTIONS

// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v3 = wma(src, len)                                                  // Weighted
    v4 = vwma(src, len)                                                 // Volume Weighted
    v5 = na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len    // Smoothed
    v6 = 2 * v2 - ema(v2, len)                                          // Double Exponential
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)               // Triple Exponential
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))   // Hull
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    v10 = ema1+(ema1-ema2)                                              // Zero Lag Exponential
    // return variant, defaults to SMA if input invalid.
    type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="ZEMA"?v10 : v1

// - FUNCTIONS END

// - Fast ATR QQE
//
Wilders_Period = RSILen * 2 - 1
//
Rsi = rsi(RSIsrc,RSILen)
RSIndex = ema(Rsi, SF)
AtrRsi = abs(RSIndex[1] - RSIndex)
MaAtrRsi = ema(AtrRsi, Wilders_Period)
DeltaFastAtrRsi = ema(MaAtrRsi,Wilders_Period) * QQE
//
newshortband=  RSIndex + DeltaFastAtrRsi
newlongband= RSIndex - DeltaFastAtrRsi
longband=RSIndex[1] > longband[1] and RSIndex > longband[1] ? max(longband[1],newlongband) : newlongband
shortband=RSIndex[1] < shortband[1] and  RSIndex < shortband[1] ? min(shortband[1],newshortband) : newshortband
trend=cross(RSIndex, shortband[1])? 1 : cross(longband[1], RSIndex) ? -1 : nz(trend[1],1)
FastAtrRsiTL = trend==1 ? longband : shortband


// - SERIES VARIABLES
// MA's
ma_fast    = variant(type1, srcclose, len1)
ma_medium  = variant(type2, srcclose, len2)
ma_slow    = variant(type3, srcclose, len3)
// Get Direction From Medium Moving Average
direction = rising(ma_medium,3) ? 1 : falling(ma_medium,3) ? -1 : 0
//
// Find all the QQE Crosses
QQExshort = sQQEx and crossover(FastAtrRsiTL, RSIndex)
QQExlong  = sQQEx and crossunder(FastAtrRsiTL, RSIndex)
// Zero cross
QQEzlong = sQQEz and crossover(RSIndex,50)
QQEzshort  = sQQEz and crossunder(RSIndex,50)
//  
// Thresh Hold channel Crosses give the BUY/SELL alerts.
QQEclong = RSIndex>(50+threshhold) ? na(QQEclong[1]) ? 1 : QQEclong[1]+1 : 0
QQEcshort = RSIndex<(50-threshhold) ? na(QQEcshort[1]) ? 1 : QQEcshort[1]+1 : 0

//
// Check Filtering.
QQEflong = (not filter or (srcclose>ma_fast and ma_medium>ma_slow and ma_fast>ma_medium)) and 
  (not dfilter or (direction>0 and srcclose>ma_slow))
QQEfshort = (not filter or (srcclose<ma_fast and ma_medium<ma_slow and ma_fast<ma_medium)) and
  (not dfilter or (direction<0 and srcclose<ma_slow))
//
// Get final BUY / SELL alert determination
buy = QQEclong>0 and QQEflong ? na(buy[1]) ? 1 : buy[1]+1 : 0
sell= QQEcshort>0 and QQEfshort ? na(sell[1]) ? 1 : sell[1]+1 : 0

// - SERIES VARIABLES END

// - PLOTTING
// Ma's
plot(ma_fast, title="MA Fast", color=olive, linewidth=2, transp=20)
plot(ma_medium, title="MA Medium Fast", color=direction<0?red:green, linewidth=3, transp=0)
plot(ma_slow, title="MA Slow", color=blue, linewidth=2, transp=20)
// QQE crosses
plotshape(QQExlong and buy!=1, title="QQE Cross Over", style=shape.triangleup, location=location.belowbar, text="XQQE", color=blue, transp=20, size=size.tiny)
plotshape(QQExshort and sell!=1, title="QQE Cross Under", style=shape.triangledown, location=location.abovebar, text="XQQE", color=black, transp=20, size=size.tiny)
// Signal crosses zero line
plotshape(QQEzlong and buy!=1 and not QQExlong, title="QQE Zero Cross Over", style=shape.triangleup, location=location.belowbar, text="XZERO", color=aqua, transp=20, size=size.tiny)
plotshape(QQEzshort and sell!=1 and not QQExshort, title="QQE Zero Cross Under", style=shape.triangledown, location=location.abovebar, text="XZERO", color=fuchsia, transp=20, size=size.tiny)

// - PLOTTING END

// Create alert for cross, shunt back 1 if source is not 'open', this should prevent repaint issue.
//shunt = RSIsrc == open ? 0 : 1
shunt = 0
c_alert = (buy[shunt]==1 or sell[shunt]==1)
//alertcondition(c_alert, title="QQECROSS Alert", message="QQECROSS Alert")
// show only when alert condition is met and bar closed.
plotshape(c_alert,title= "Alert Indicator Closed", location=location.bottom, color=sell[shunt]==1?red:green, transp=0, style=shape.circle)


//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 100, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
strategy.entry(id = "Buy", long = true, when = buy[shunt]==1 )// use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = direction[shunt]!=direction[shunt+1])// ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
strategy.entry(id = "Sell", long = false, when = sell[shunt]==1)
strategy.close(id = "Sell", when = direction[shunt]!=direction[shunt+1])

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

//eof

مزید