اسٹاک اور ای ایم اے پر مبنی مقداری تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-15 11:31:16
ٹیگز:

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

I. حکمت عملی منطق

اہم اوزار اور منطق یہ ہیں:

  1. K اور D اقدار کے ساتھ اسٹاک اشارے کا حساب لگائیں، جہاں K تیزی سے قیمت کی تبدیلیوں کی عکاسی کرتا ہے اور D ہموار سگنل ہے.

  2. اسٹاک کے لئے اوور بکڈ / اوور سیلڈ زون مقرر کریں۔ سگنل K اور D کی متعلقہ اقدار پر مبنی ہیں۔

  3. قیمتوں کے مرکزی دھارے کے رجحان کا اندازہ کرنے کے لئے ایک مدت کے دوران ای ایم اے کا حساب لگائیں۔

  4. صرف تب ہی تجارت کریں جب اسٹاک سگنل ای ایم اے کی سمت سے متفق ہوں۔

  5. سٹاپ نقصان کے ساتھ سگنلز پر طویل / مختصر پوزیشن قائم کریں اور منافع لیں.

اسٹاک ایک ساتھ مل کر زیادہ خریدنے/زیادہ فروخت کرنے کے مواقع کو پکڑتا ہے اور ای ایم اے غلط سگنل کو فلٹر کرتا ہے، ایک مضبوط حکمت عملی تشکیل دیتا ہے۔

II۔ اسٹریٹیجی کے فوائد

سب سے بڑا فائدہ اشارے کی تکمیل ہے۔ اسٹاک او / ایس کی سطح اور ای ایم اے کو مرکزی دھارے کے رجحان کا جائزہ لیتا ہے ، جو غلطیوں کو کم کرنے کے لئے مل کر کام کرتا ہے۔

اس کے علاوہ، سایڈست K / D اقدار مختلف مصنوعات میں اصلاح کی اجازت دیتے ہیں.

آخر میں، سٹاپ نقصان/فائدہ حاصل کرنے کے طریقہ کار میں احتیاطی پیسہ کے انتظام کے لیے خطرہ/فوائد کی واضح تعریف کی گئی ہے۔

III. ممکنہ کمزوریاں

تاہم، کچھ ممکنہ مسائل یہ ہیں:

سب سے پہلے، اسٹاک اور ای ایم اے دونوں پیچھے رہ سکتے ہیں، جس کی وجہ سے زیادہ سے زیادہ اندراجات کو یاد کیا جا سکتا ہے.

دوسری بات، تنگ رکاوٹوں سے بہت سے نااہلیوں کو قبل از وقت شروع کیا جا سکتا ہے۔

آخر میں، وسیع پیمانے پر پیرامیٹر کی اصلاح کی ضرورت ہے تاکہ زیادہ سے زیادہ فٹنگ سے بچنے کے لئے.

IV. خلاصہ

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


/*backtest
start: 2023-08-15 00:00:00
end: 2023-08-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

//@version=5
strategy(title="EMA Stoch Strategy For ProfitView", overlay=true, calc_on_every_tick=true, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, initial_capital=1000)

// take profit e stop loss
TakeProfitPercent = input.float(defval = 0.0, title="Take Profit (%) [0 = Disabled]",minval = 0, step=.25,group='TP / SL')
StopLossPercent = input.float(defval = 0.0, title="Stop Loss (%) [0 = Disabled]",minval = 0, step=.25,group='TP / SL')

// Stoch
smoothK = input.int(1, title="K Smoothing", minval=1,group='Stochastic')
periodD = input.int(3, title="D Smoothing", minval=1,group='Stochastic')
lenghtRSI= input.int(14, "RSI Length", minval=1) 
lenghtStoch = input.int(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")

rsi1 = ta.rsi(src, lenghtRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lenghtStoch), smoothK)
d = ta.sma(k, periodD)

plot(k, title="K", color=#2962FF)
plot(d, title="D", color=#FF6D00)
// bgcolor(color=color.from_gradient(k, 0, 100, color.new(#2962FF, 100), color.new(#2962FF, 95)), title="K BG")
// bgcolor(color=color.from_gradient(d, 0, 100, color.new(#FF6D00, 100), color.new(#FF6D00, 95)), title="D BG")


// ema
src1= input(close,title='Source EMA ',group='EMA')
len1= input(200,title='Length EMA ',group='EMA')
ema1= ta.ema(src1,len1)
plot(ema1,title='EMA',color= color.blue ,linewidth=2)

// signals
LongVal= input(20,title='Stoch below/cross this value for Long signals',group='Signal Options')
scegliLong= input.string('Stoch Below Value', options= ['Stoch Below Value' , 'K&D Cross Below Value' , 'Stoch CrossUp the Value'] , title='Long Signal Type')

long1=  scegliLong == 'Stoch Below Value' ?  k < LongVal and d < LongVal and close > ema1 : na
long2=  scegliLong == 'K&D Cross Below Value' ? ta.cross(k,d) and k < LongVal and d < LongVal and close > ema1 : na
long3=  scegliLong == 'Stoch CrossUp the Value' ? ta.crossover(k,LongVal) and close > ema1 : na

shortVal= input(80,title='Stoch above/cross this value for Short signals',group='Signal Options')
scegliShort= input.string('Stoch Above Value', options= ['Stoch Above Value' , 'K&D Cross Above Value' , 'Stoch CrossDown the Value'] , title='Short Signal Type' )

short1= scegliShort == 'Stoch Above Value' ? k > shortVal and d > shortVal and close < ema1 : na
short2= scegliShort == 'K&D Cross Above Value' ?  ta.cross(k,d) and k > shortVal and d > shortVal and close < ema1 : na
short3= scegliShort == 'Stoch CrossDown the Value' ?  ta.crossunder(k,shortVal) and close < ema1 : na


//  Strategy Backtest Limiting Algorithm/
i_startTime = input(defval = timestamp("01 Jan 2014 00:00 +0000"), title = "Backtesting Start Time", inline="timestart", group='Backtesting')
i_endTime = input(defval = timestamp("01 Jan 2100 23:59 +0000"), title = "Backtesting End Time", inline="timeend", group='Backtesting')
timeCond = true

pv_ex = input.string("deribit-testnet", title="Exchange", group='PV Settings')
pv_sym = input.string("btc-perpetual", title="Symbol", group='PV Settings')
pv_acc = input.string("", title="Account", group='PV Settings')
pv_alert_long = input.string("", title="PV Alert Name Longs", group='PV Settings')
pv_alert_short = input.string("", title="PV Alert Name Shorts", group='PV Settings')
pv_alert_cancel = input.string("", title="PV Alert Name TP/SL", group='PV Settings')

profit_abs = (close * (TakeProfitPercent / 100))
stop_abs = (close * (StopLossPercent / 100))

ProfitTarget = TakeProfitPercent > 0 ? profit_abs / syminfo.mintick : na
LossTarget = StopLossPercent > 0 ? stop_abs / syminfo.mintick : na

// Make sure we are within the bar range, Set up entries and exit conditions
var entryprice = 0.0
var profitprice = 0.0
var stopprice = 0.0
exsym = pv_ex == "" ? "" : "ex=" + pv_ex + ","
exsym := pv_sym == "" ? exsym : exsym + "sym=" + pv_sym

if ((long1 or long2 or long3) and timeCond and strategy.position_size <= 0)
    strategy.entry("Long", strategy.long, when=barstate.isconfirmed)
    entryprice := close
    profitprice := entryprice+profit_abs
    stopprice := entryprice-stop_abs
    
    tpsl_str = TakeProfitPercent > 0 ? ",mytp=" + str.tostring(profitprice) : ""
    tpsl_str := StopLossPercent > 0 ? tpsl_str + ",mysl=" + str.tostring(stopprice) : tpsl_str
    alert(pv_alert_long + "(" + exsym + ",acc=" + pv_acc + tpsl_str +  ")", alert.freq_once_per_bar_close)

if ((short1 or short2 or short3) and timeCond and strategy.position_size >= 0)
    strategy.entry("Short", strategy.short, when=barstate.isconfirmed)
    entryprice := close
    profitprice := entryprice-profit_abs
    stopprice := entryprice+stop_abs
    
    tpsl_str = TakeProfitPercent > 0 ? ",mytp=" + str.tostring(profitprice) : ""
    tpsl_str := StopLossPercent > 0 ? tpsl_str + ",mysl=" + str.tostring(stopprice) : tpsl_str
    alert(pv_alert_short + "(" + exsym + ",acc=" + pv_acc + tpsl_str +  ")", alert.freq_once_per_bar_close)
    
tpsl_hit_long = (strategy.position_size[1] > 0 and ((TakeProfitPercent > 0 and high > profitprice[1]) or (StopLossPercent > 0 and low < stopprice[1])))
tpsl_hit_short = (strategy.position_size[1] < 0 and ((TakeProfitPercent > 0 and low < profitprice[1]) or (StopLossPercent > 0 and high > stopprice[1])))

if (tpsl_hit_long or tpsl_hit_short)
    alert(pv_alert_cancel + "(" + exsym + ",acc=" + pv_acc + ")", alert.freq_once_per_bar)


strategy.exit("Exit Long (TP/SL)", from_entry = "Long" , profit = ProfitTarget, loss = LossTarget)
strategy.exit("Exit Short (TP/SL)", from_entry = "Short", profit = ProfitTarget, loss = LossTarget)

plot(entryprice, title="Entry Price", color=strategy.opentrades > 0 ? color.gray : color.new(color.gray, 100))
plot(profitprice, title="Profit Price", color=strategy.opentrades > 0 and TakeProfitPercent > 0 ? color.green : color.new(color.green, 100))
plot(stopprice, title="Stop Price", color=strategy.opentrades > 0 and StopLossPercent > 0? color.red : color.new(color.red, 100))

مزید