Stoch اور EMA پر مبنی مقداری تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-09-15 11:31:16 آخر میں ترمیم کریں: 2023-09-15 11:31:16
کاپی: 0 کلکس کی تعداد: 655
1
پر توجہ دیں
1617
پیروکار

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

حکمت عملی

یہ حکمت عملی بنیادی طور پر مندرجہ ذیل ٹولز اور منطق کے ذریعے تجارت کرتی ہے۔

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

  2. اسٹوک اشارے کے اوور بیئر اوور سیل زون کو ترتیب دیں ، جس سے K اور D کی قدر کے نسبتا size سائز پر مبنی تجارت کا اشارہ ملتا ہے۔

  3. قیمتوں کی مرکزی سمت کا اندازہ لگانے کے لئے ایک خاص دورانیے کے لئے EMA کی اوسط لائن کا حساب لگائیں۔

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

  5. سگنل کے مطابق کثیر سر یا خالی سر پوزیشن قائم کریں ، اور اسٹاپ اسٹاپ نقصان کا مقام مرتب کریں۔

اس طرح ، اسٹوک اشارے اوور بیئر اوور سیل زون کے مواقع کو پکڑتا ہے ، اور EMA غیر معقول سگنل کو خارج کرتا ہے ، دونوں مل کر استحکام کی حکمت عملی تشکیل دیتے ہیں۔

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

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

دوسرا، K، D اقدار ایڈجسٹ کیا جا سکتا ہے، مختلف قسم کے پیرامیٹرز کو بہتر بنانے کے لئے.

آخر میں ، اسٹاپ اور نقصان کی ترتیب بھی ہر تجارت کے منافع اور خطرے کو واضح کرتی ہے ، جس سے فنڈ مینجمنٹ میں مدد ملتی ہے۔

تیسرا، ممکنہ خطرات

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

سب سے پہلے ، اسٹوک اور ای ایم اے دونوں اشارے پیچھے رہ سکتے ہیں ، جس کی وجہ سے بہترین تجارتی اوقات ضائع ہوجاتے ہیں۔

دوسرا ، بہت کم اسٹاپ نقصان بہت زیادہ غیر موثر اسٹاپ نقصان کا سبب بن سکتا ہے۔

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

چار مضامین، خلاصہ

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

حکمت عملی کا ماخذ کوڈ
/*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))