ایک غیر قابل اعتماد تجارتی خیال
کے لائن ایریا حکمت عملی قیمت کے لائنوں اور چلتی اوسط کے درمیان علاقے کے تعلقات پر مبنی ایک تجارتی حکمت عملی ہے۔ اس کا بنیادی خیال قیمت کے رجحانات کے سائز اور تبدیلیوں کے ساتھ ساتھ خرید و فروخت کے جذبات میں تبدیلیوں کا تجزیہ کرکے اسٹاک کی قیمتوں میں ممکنہ رجحانات کی پیش گوئی کرنا ہے ، اس طرح یہ طے کرنا ہے کہ پوزیشنوں کو کب کھولنا ہے اور باہر نکلنا ہے۔ یہ حکمت عملی طویل اور مختصر تجارتی سگنل پیدا کرنے کے لئے کے لائن اور چلتی اوسط کے درمیان علاقے کے ساتھ ساتھ کے ڈی جے اشارے کی اقدار پر انحصار کرتی ہے۔
K- لائن کا علاقہ قیمت K- لائن اور حرکت پذیر اوسط کے درمیان مقامی علاقے سے مراد ہے ، جس کا حساب ہر بار کی اختتامی قیمت سے حرکت پذیر اوسط قیمت کو گھٹانے اور پھر اس کا مجموعہ کرکے کیا جاتا ہے۔ جب طویل عرصے تک قیمت میں بہت زیادہ اضافہ ہوتا ہے تو ، K- لائن کا علاقہ بڑا ہوجائے گا ، جبکہ اتار چڑھاؤ والی منڈیوں کے دوران یا اتار چڑھاؤ کے الٹ جانے کے بعد ، K- لائن کا علاقہ چھوٹا ہوتا ہے۔
رجحان کے قریب ہونے کی تصدیق کے لئے ، ہم KDJ اشارے کا استعمال متعارف کراتے ہیں جو خرید و فروخت کے جذبات میں تبدیلیوں کا تعین کرنے میں مدد کرتے ہیں۔ ان اشارے کے لئے حکمت عملی کی حد اور اقدار کو خاص حالات اور ضروریات کے مطابق ایڈجسٹ کیا جاسکتا ہے تاکہ درستگی میں اضافہ کیا جاسکے۔
کے لائن ایریا کی حکمت عملی کا فائدہ قیمتوں کے رجحانات کی شدت اور تبدیلیوں کے ساتھ ساتھ خرید و فروخت کے جذبات میں تبدیلی کے امتزاج میں ہے ، جو نسبتا complete مکمل مقداری تجارتی حکمت عملی فراہم کرتا ہے۔ اس کے فوائد میں شامل ہیں:
اگرچہ K لائن کے علاقے کی حکمت عملی میں کچھ فوائد ہیں ، لیکن اس میں کچھ خطرات بھی شامل ہیں ، جن میں شامل ہیں:
K لائن کے علاقے کی حکمت عملی کو بہتر بنانے کے لئے، مندرجہ ذیل سمتوں پر غور کریں:
K لائن ایریا کا حساب لگائیں
لمبی پوزیشن کھولنے کا اشارہ:
(1) نیچے کی طرف رجحان کے
(2) KDJ اشارے کی قدر 80 سے زیادہ ہے.
مختصر پوزیشن کھولنے کا اشارہ:
(1) بڑھتی ہوئی رجحان کا
(2) KDJ اشارے کی قدر 20 سے کم ہے.
لانگ/شارٹ پوزیشنوں کے لیے باہر نکلنا: اے ٹی آر کے پیچھے سٹاپ نقصان اور منافع لینا۔
کوڈ کا نفاذ
// Parameter
var maPeriod = 30
var threshold = 50000
var amount = 0.1
// Global variable
let c = KLineChart({})
let openPrice = 0
let tradeState = "NULL" // NULL BUY SELL
function calculateKLineArea(r, ma) {
var lastCrossUpIndex = null
var lastCrossDownIndex = null
for (var i = r.length - 1 ; i >= 0 ; i--) {
if (ma[i] !== null && r[i].Open < ma[i] && r[i].Close > ma[i]) {
lastCrossUpIndex = i
break
} else if (ma[i] !== null && r[i].Open > ma[i] && r[i].Close < ma[i]) {
lastCrossDownIndex = i
break
}
if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close < ma[i - 1] && r[i].Close > ma[i]) {
lastCrossUpIndex = i
break
} else if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close > ma[i - 1] && r[i].Close < ma[i]) {
lastCrossDownIndex = i
break
}
}
var area = 0
if (lastCrossDownIndex !== null) {
for (var i = r.length - 1 ; i >= lastCrossDownIndex ; i--) {
area -= Math.abs(r[i].Close - ma[i])
}
} else if (lastCrossUpIndex !== null) {
for (var i = r.length - 1 ; i >= lastCrossUpIndex ; i--) {
area += Math.abs(r[i].Close - ma[i])
}
}
return [area, lastCrossUpIndex, lastCrossDownIndex]
}
function onTick() {
var r = _C(exchange.GetRecords)
if (r.length < maPeriod) {
LogStatus(_D(), "Insufficient number of K-line")
return
}
var ma = TA.MA(r, maPeriod)
var atr = TA.ATR(r)
var kdj = TA.KDJ(r)
var lineK = kdj[0]
var lineD = kdj[1]
var lineJ = kdj[2]
var areaInfo = calculateKLineArea(r, ma)
var area = _N(areaInfo[0], 0)
var lastCrossUpIndex = areaInfo[1]
var lastCrossDownIndex = areaInfo[2]
r.forEach(function(bar, index) {
c.begin(bar)
c.plotcandle(bar.Open, bar.High, bar.Low, bar.Close, {overlay: true})
let maLine = c.plot(ma[index], "ma", {overlay: true})
let close = c.plot(bar.Close, 'close', {overlay: true})
c.fill(maLine, close, {color: bar.Close > ma[index] ? 'rgba(255, 0, 0, 0.1)' : 'rgba(0, 255, 0, 0.1)'})
if (lastCrossUpIndex !== null) {
c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
} else if (lastCrossDownIndex !== null) {
c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
}
c.plot(lineK[index], "K")
c.plot(lineD[index], "D")
c.plot(lineJ[index], "J")
c.close()
})
if (tradeState == "NULL" && area < -threshold && lineK[lineK.length - 1] > 70) {
// long
let tradeInfo = $.Buy(amount)
if (tradeInfo) {
openPrice = tradeInfo.price
tradeState = "BUY"
}
} else if (tradeState == "NULL" && area > threshold && lineK[lineK.length - 1] < 30) {
// short
let tradeInfo = $.Sell(amount)
if (tradeInfo) {
openPrice = tradeInfo.price
tradeState = "SELL"
}
}
let stopBase = tradeState == "BUY" ? Math.max(openPrice, r[r.length - 2].Close) : Math.min(openPrice, r[r.length - 2].Close)
if (tradeState == "BUY" && r[r.length - 1].Close < stopBase - atr[atr.length - 2]) {
// cover long
let tradeInfo = $.Sell(amount)
if (tradeInfo) {
tradeState = "NULL"
openPrice = 0
}
} else if (tradeState == "SELL" && r[r.length - 1].Close > stopBase + atr[atr.length - 2]) {
// cover short
let tradeInfo = $.Buy(amount)
if (tradeInfo) {
tradeState = "NULL"
openPrice = 0
}
}
LogStatus(_D(), "area:", area, ", lineK[lineK.length - 2]:", lineK[lineK.length - 2])
}
function main() {
if (exchange.GetName().includes("_Futures")) {
throw "not support Futures"
}
while (true) {
onTick()
Sleep(1000)
}
}
حکمت عملی کا منطق بہت سادہ ہے:
حکمت عملی کے پیرامیٹرز
عالمی متغیرات
فنکشن کا حساب لگائیں
اہم لوپ فنکشن
onTick فنکشن: یہ اہم حکمت عملی کے عملدرآمد کا فنکشن ہے، اور یہاں فنکشن کے اندر آپریشن ہیں:
a. تازہ ترین K لائن ڈیٹا حاصل کریں اور اس بات کو یقینی بنائیں کہ K لائنوں کی تعداد maPeriod سے کم نہیں ہے ، ورنہ اسٹیٹس ریکارڈ کریں اور واپسی کریں۔
b. چلتی اوسط لائن ma اور ATR اشارے atr کے ساتھ ساتھ KDJ اشارے کا حساب لگائیں.
c. areaInfo سے علاقے کی معلومات حاصل کریں، آخری کراس اوور K لائن انڈیکس، اور آخری کراس انڈر K لائن انڈیکس.
d. K لائن چارٹ آبجیکٹ c کا استعمال کریں تاکہ K لائنیں اور اشارے کی لائنیں تیار کی جائیں جبکہ قیمت
e. شرائط کے مطابق خرید یا فروخت کا وقت طے کریں:
اگر tradeState
اگر یہ خریدنے کی حالت میں ہے ، جب قیمت آخری تجارتی دن کی اختتامی قیمت سے کم ہو جاتی ہے جب پچھلے دنوں کے اے ٹی آر (اوسط حقیقی رینج) کو کم کیا جاتا ہے تو ، پوزیشن بند ہوجاتی ہے۔ اگر یہ فروخت کی حالت میں ہے تو ، جب قیمت آخری تجارتی دن کی اختتامی قیمت کے علاوہ پچھلے دنوں کے اے ٹی آر (اوسط حقیقی رینج) سے اوپر بڑھ جاتی ہے تو ، بند پوزیشن۔
اہم فنکشن: یہ مین ایگزیکشن انٹری پوائنٹ کے طور پر کام کرتا ہے۔ یہ چیک کرتا ہے کہ آیا تبادلہ نام میں
ایک لفظ میں ، یہ حکمت عملی بنیادی طور پر خرید و فروخت کے فیصلے کرنے کے لئے K لائن چارٹس اور تکنیکی اشارے پر انحصار کرتی ہے جبکہ خطرے کو سنبھالنے کے لئے اسٹاپ نقصان اور منافع لینے کی حکمت عملی بھی استعمال کرتی ہے۔ براہ کرم نوٹ کریں کہ یہ صرف ایک مثال کی حکمت عملی کے طور پر کام کرتی ہے جسے مارکیٹ کی صورتحال اور اصل استعمال کے دوران مخصوص ضروریات کے مطابق ایڈجسٹ اور بہتر بنانے کی ضرورت ہے۔
پرFMZ.COM، جاوا اسکرپٹ زبان کا استعمال کرتے ہوئے کوڈ کی بہت سی لائنوں کی ضرورت نہیں تھی ، اس کے بجائے ، اس ماڈل کو آسانی سے نافذ کیا گیا۔ اور KLineChart فنکشن کی مدد سے K- لائن چارٹ ایریا کی گرافک نمائندگی بھی آسانی سے حاصل کی گئی تھی۔ ٹیمپلیٹ کے اندر انکیپسولیٹڈ افعال کے ذریعہ آرڈر دینے کے لئے
میں نے بے ترتیب طور پر بیک ٹسٹنگ کی مدت کا انتخاب کیا۔ اگرچہ میں نے پیسہ نہیں کھویا ، لیکن میں نے مسلسل منافع بھی جمع نہیں کیا ، اور کھوج کا مسئلہ کافی اہم ہے۔ حکمت عملی کے لئے دیگر سمتوں اور اصلاح کی گنجائش ہونی چاہئے۔ جو لوگ دلچسپی رکھتے ہیں وہ حکمت عملی کو اپ گریڈ کرنے کی کوشش کرسکتے ہیں۔
اس حکمت عملی کے ذریعے، ہم نے نہ صرف ایک غیر معمولی تجارتی خیال سیکھا، بلکہ ڈایاگرام کو کیسے پلاٹ کرنا سیکھا؛ K لائن اور حرکت پذیر اوسط لائن کی طرف سے احاطہ کردہ علاقے کی نمائندگی؛ KDJ اشارے وغیرہ کو پلاٹ کرنا.
کے لائن ایریا حکمت عملی قیمت کے رجحان کی شدت اور کے ڈی جے اشارے پر مبنی ایک تجارتی حکمت عملی ہے۔ یہ تاجروں کو کے لائن اور حرکت پذیر اوسط کے درمیان علاقے کے ساتھ ساتھ خرید و فروخت کے جذبات میں تبدیلیوں کا تجزیہ کرکے مارکیٹ کے رجحانات کی پیش گوئی کرنے میں مدد کرتی ہے۔ کچھ خطرات کے باوجود ، یہ حکمت عملی مسلسل اصلاح اور ایڈجسٹمنٹ کے ذریعے طاقتور تجارتی اوزار فراہم کرسکتی ہے ، جس سے تاجروں کو مارکیٹ میں اتار چڑھاؤ سے بہتر نمٹنے میں مدد ملتی ہے۔ مزید برآں ، تاجروں کو بہتر تجارتی کارکردگی حاصل کرنے کے لئے مخصوص حالات اور مارکیٹ کے حالات کے مطابق حکمت عملی کے پیرامیٹرز اور قواعد کو لچکدار طریقے سے ایڈجسٹ کرنا چاہئے۔