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


تخلیق کی تاریخ: 2023-10-10 10:36:16 آخر میں ترمیم کریں: 2023-10-10 10:36:16
کاپی: 0 کلکس کی تعداد: 645
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

اس حکمت عملی میں موجودہ مارکیٹ کے رجحان کی سمت کا تعین کرنے کے لئے آر ایس آئی اشارے کا استعمال کیا جاتا ہے۔ آر ایس آئی 30 سے کم کو نیچے کی طرف اور 70 سے زیادہ کو نیچے کی طرف سمجھا جاتا ہے۔ جب آر ایس آئی اشارے میں گولڈ فورک نیچے کی طرف اشارہ ہوتا ہے تو ، پوزیشن خریدنے کے لئے خریدیں؛ جب ڈائی فورک نیچے کی طرف اشارہ ہوتا ہے تو ، پوزیشن فروخت کریں۔

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

جب قیمت اسٹاپ نقصان کی لائن تک پہنچ جاتی ہے تو اسٹاپ نقصان کا آغاز ہوتا ہے۔ جب قیمت داخلہ کی قیمت کا 3٪ تک پہنچ جاتی ہے تو اسٹاپ آؤٹ ہوتا ہے۔ اس طرح منافع کے اہداف کو متحرک اسٹاپ نقصان اور اسٹاپ ڈبل انشورنس کے ذریعے حاصل کیا جاسکتا ہے۔

اسٹریٹجک فوائد

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

خطرے کا تجزیہ

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

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Learn more about Autoview and how you can automate strategies like this one here: https://autoview.with.pink/
// strategy("Autoview Build-a-bot - 1m chart", "Strategy", overlay=true, pyramiding=2000, default_qty_value=10000)
// study("Autoview Build-a-bot", "Alerts")

///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(1, "Backtest Start Year") 
testStartMonth = input(11, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(77777777, "Backtest Stop Year")
testStopMonth = input(11, "Backtest Stop Month")
testStopDay = input(15, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

/////////////////////////////////////
//* Put your strategy logic below *//
/////////////////////////////////////
RSIlength = input(6,title="RSI Period Length") 
price = close
vrsi = (rsi(price, RSIlength))
src = close
len = input(2, minval=1, title="Length")

up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

rsin = input(14)
sn = 100 - rsin
ln = 0 + rsin

// Put your long and short rules here
longLocic = crossunder(rsi, ln)
shortLogic = crossover(rsi, sn)

//////////////////////////
//* Strategy Component *//
//////////////////////////

isLong = input(true, "Longs Only")
isShort = input(false, "Shorts Only")
isFlip = input(false, "Flip the Opens")

long = longLocic
short = shortLogic

if isFlip
    long := shortLogic
    short := longLocic
else
    long := longLocic
    short := shortLogic

if isLong
    long := long
    short := na

if isShort
    long := na
    short := short
    
////////////////////////////////
//======[ Signal Count ]======//
////////////////////////////////

sectionLongs = 0
sectionLongs := nz(sectionLongs[1])
sectionShorts = 0
sectionShorts := nz(sectionShorts[1])

if long
    sectionLongs := sectionLongs + 1
    sectionShorts := 0

if short
    sectionLongs := 0
    sectionShorts := sectionShorts + 1

//////////////////////////////
//======[ Pyramiding ]======//
//////////////////////////////

pyrl = input(2, "Pyramiding less than") // If your count is less than this number
pyre = input(1, "Pyramiding equal to") // If your count is equal to this number
pyrg = input(1000000, "Pyramiding greater than") // If your count is greater than this number

longCondition = long and sectionLongs <= pyrl or long and sectionLongs >= pyrg or long and sectionLongs == pyre ? 1 : 0 and vrsi < 20
shortCondition = short and sectionShorts <= pyrl or short and sectionShorts >= pyrg or short and sectionShorts == pyre ? 1 : 0

////////////////////////////////
//======[ Entry Prices ]======//
////////////////////////////////

last_open_longCondition = na
last_open_shortCondition = na
last_open_longCondition := longCondition ? close : nz(last_open_longCondition[1])
last_open_shortCondition := shortCondition ? close : nz(last_open_shortCondition[1])

////////////////////////////////////
//======[ Open Order Count ]======//
////////////////////////////////////

sectionLongConditions = 0
sectionLongConditions := nz(sectionLongConditions[1])
sectionShortConditions = 0
sectionShortConditions := nz(sectionShortConditions[1])

if longCondition
    sectionLongConditions := sectionLongConditions + 1
    sectionShortConditions := 0

if shortCondition
    sectionLongConditions := 0
    sectionShortConditions := sectionShortConditions + 1
    
///////////////////////////////////////////////
//======[ Position Check (long/short) ]======//
///////////////////////////////////////////////

last_longCondition = na
last_shortCondition = na
last_longCondition := longCondition ? time : nz(last_longCondition[1])
last_shortCondition := shortCondition ? time : nz(last_shortCondition[1])

in_longCondition = last_longCondition > last_shortCondition
in_shortCondition = last_shortCondition > last_longCondition

/////////////////////////////////////
//======[ Position Averages ]======//
/////////////////////////////////////

totalLongs = 0.0
totalLongs := nz(totalLongs[1])
totalShorts = 0.0
totalShorts := nz(totalShorts[1])
averageLongs = 0.0
averageLongs := nz(averageLongs[1])
averageShorts = 0.0
averageShorts := nz(averageShorts[1]) 

if longCondition
    totalLongs := totalLongs + last_open_longCondition
    totalShorts := 0.0

if shortCondition
    totalLongs := 0.0
    totalShorts := totalShorts + last_open_shortCondition

averageLongs := totalLongs / sectionLongConditions
averageShorts := totalShorts / sectionShortConditions

/////////////////////////////////
//======[ Trailing Stop ]======//
/////////////////////////////////

isTS = input(false, "Trailing Stop")
tsi = input(100, "Activate Trailing Stop Price (%). Divided by 100 (1 = 0.01%)") / 100 
ts = input(100, "Trailing Stop (%). Divided by 100 (1 = 0.01%)") / 100

last_high = na
last_low = na
last_high_short = na
last_low_short = na
last_high := not in_longCondition ? na : in_longCondition and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_high_short := not in_shortCondition ? na : in_shortCondition and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_shortCondition ? na : in_shortCondition and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
last_low_short := not in_longCondition ? na : in_longCondition and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = isTS and not na(last_high) and low <= last_high - last_high / 100 * ts and longCondition == 0 and last_high >= averageLongs + averageLongs / 100 * tsi
short_ts = isTS and not na(last_low) and high >= last_low + last_low / 100 * ts and shortCondition == 0 and last_low <= averageShorts - averageShorts/ 100 * tsi

///////////////////////////////
//======[ Take Profit ]======//
///////////////////////////////

isTP = input(true, "Take Profit")
tp = input(33, "Take Profit (%). Divided by 100 (1 = 0.01%)") / 100
long_tp = isTP and close > averageLongs + averageLongs / 100 * tp and not longCondition
short_tp = isTP and close < averageShorts - averageShorts / 100 * tp and not shortCondition

/////////////////////////////
//======[ Stop Loss ]======//
/////////////////////////////

isSL = input(true, "Stop Loss")
sl = input(55, "Stop Loss (%). Divided by 100 (1 = 0.01%)") / 100
long_sl = isSL and close < averageLongs - averageLongs / 100 * sl and longCondition == 0
short_sl = isSL and close > averageShorts + averageShorts / 100 * sl and shortCondition == 0

/////////////////////////////////
//======[ Close Signals ]======//
/////////////////////////////////

longClose = long_tp or long_sl or long_ts ? 1 : 0
shortClose = short_tp or short_sl or short_ts ? 1: 0

///////////////////////////////
//======[ Plot Colors ]======//
///////////////////////////////

longCloseCol = na
shortCloseCol = na
longCloseCol := long_tp ? purple : long_sl ? maroon : long_ts ? blue : longCloseCol[1]
shortCloseCol := short_tp ? purple : short_sl ? maroon : short_ts ? blue : shortCloseCol[1]
tpColor = isTP and in_longCondition ? purple : isTP and in_shortCondition ? purple : white
slColor = isSL and in_longCondition ? red : isSL and in_shortCondition ? red : white

//////////////////////////////////
//======[ Strategy Plots ]======//
//////////////////////////////////

plot(isTS and in_longCondition ? averageLongs + averageLongs / 100 * tsi : na, "Long Trailing Activate", blue, style=3, linewidth=2)
plot(isTS and in_longCondition and last_high >= averageLongs +  averageLongs / 100 * tsi ? last_high - last_high / 100 * ts : na, "Long Trailing", fuchsia, style=2, linewidth=3)
plot(isTS and in_shortCondition ? averageShorts - averageShorts/ 100 * tsi : na, "Short Trailing Activate", blue, style=3, linewidth=2)
plot(isTS and in_shortCondition and last_low <= averageShorts - averageShorts/ 100 * tsi ? last_low + last_low / 100 * ts : na, "Short Trailing", fuchsia, style=2, linewidth=3)
plot(isTP and in_longCondition and last_high < averageLongs + averageLongs / 100 * tp ? averageLongs + averageLongs / 100 * tp : na, "Long TP", tpColor, style=3, linewidth=2)
plot(isTP and in_shortCondition and last_low > averageShorts - averageShorts / 100 * tp ? averageShorts - averageShorts / 100 * tp : na, "Short TP", tpColor, style=3, linewidth=2)
plot(isSL and in_longCondition and last_low_short > averageLongs - averageLongs / 100 * sl ? averageLongs - averageLongs / 100 * sl : na, "Long SL", slColor, style=3, linewidth=2)
plot(isSL and in_shortCondition and last_high_short < averageShorts + averageShorts / 100 * sl ? averageShorts + averageShorts / 100 * sl : na, "Short SL", slColor, style=3, linewidth=2)

///////////////////////////////
//======[ Alert Plots ]======//
///////////////////////////////

// plot(longCondition, "Long", green)
// plot(shortCondition, "Short", red)
// plot(longClose, "Long Close", longCloseCol)
// plot(shortClose, "Short Close", shortCloseCol)

///////////////////////////////////
//======[ Reset Variables ]======//
///////////////////////////////////

if longClose or not in_longCondition
    averageLongs := 0
    totalLongs := 0.0
    sectionLongs := 0
    sectionLongConditions := 0

if shortClose or not in_shortCondition
    averageShorts := 0
    totalShorts := 0.0
    sectionShorts := 0
    sectionShortConditions := 0

////////////////////////////////////////////
//======[ Strategy Entry and Exits ]======//
////////////////////////////////////////////

if testPeriod()
    strategy.entry("Long", 1, when=longCondition)
    strategy.entry("Short", 0,  when=shortCondition)
    strategy.close("Long", when=longClose)
    strategy.close("Short", when=shortClose)