इस लेख में, हम इस विचार और इस स्क्रिप्ट को लागू करने का प्रयास करते हैं।
के-लाइन क्षेत्र रणनीति एक व्यापारिक रणनीति है जो मूल्य के-लाइन और औसत रेखा के बीच क्षेत्र के संबंध पर आधारित है। इसका मुख्य विचार यह है कि मूल्य प्रवृत्तियों के आयाम और परिवर्तनों का विश्लेषण करके, और खरीदारी की भावना में बदलाव के साथ, शेयर बाजार की कीमतों के संभावित आंदोलन का अनुमान लगाना है, जिससे पदों को खोलने और बाहर निकलने का समय निर्धारित किया जाता है। यह रणनीति के-लाइन और औसत रेखा के बीच क्षेत्र पर निर्भर करती है, और केडीजे संकेतक के संख्यात्मक मानों पर निर्भर करती है, जो बहु-शीर्षक और खाली-शीर्षक व्यापार संकेत उत्पन्न करती है।
K-लाइन का क्षेत्रफल मूल्य के K-लाइन और समतल रेखा के बीच का क्षेत्रफल है, जिसे प्रत्येक बार के समापन मूल्य को औसत मूल्य से घटाकर और फिर जोड़कर गणना की जाती है। जब मूल्य में वृद्धि की प्रवृत्ति बड़ी होती है, तो K-लाइन का क्षेत्रफल लंबे समय तक बढ़ता है, जबकि जब उथले बाजार या उथले के बाद पलटाव होता है, तो K-लाइन का क्षेत्रफल छोटा होता है।
इस रणनीति के थ्रेशोल्ड और केडीजे सूचकांक के सेटअप को विशिष्ट परिस्थितियों और जरूरतों के अनुसार समायोजित किया जा सकता है ताकि रणनीति की सटीकता को बढ़ाया जा सके।
के-लाइन क्षेत्र की रणनीति का लाभ यह है कि यह मूल्य प्रवृत्ति के आयाम और परिवर्तनों को जोड़ती है, साथ ही साथ खरीदारी की भावना में बदलाव, एक अपेक्षाकृत पूर्ण मात्रात्मक ट्रेडिंग रणनीति प्रदान करती है। इसके लाभों में शामिल हैंः
हालांकि, के-लाइन क्षेत्र की रणनीति के कुछ फायदे हैं, लेकिन इसके कुछ जोखिम भी हैं, जिनमें शामिल हैंः
के लाइन क्षेत्र रणनीति को अनुकूलित करने के लिए, निम्नलिखित दिशाओं पर विचार किया जा सकता हैः
K रेखा क्षेत्रफल की गणना करें
एक बार फिर से, हम एक बार फिर से शुरू कर रहे हैं।
(1) गिरावट की प्रवृत्ति के साथ K रेखा के क्षेत्रफल में वृद्धि हुई है जब तक कि यह सीमा तक नहीं पहुंच जाता है।
(2) केडीजे का मान 80 से अधिक है
खाली जगह के लिए संकेतः
(1) ऊपर की ओर बढ़ रहे कण K रेखा के क्षेत्र कणों का थ्रेशोल्ड तक पहुंचने से पहले ही गठन किया जा सकता है
(2) KDJ का मान 20 से कम है
बहुआयामी/अधूरे पदार्पणः एटीआर ने रोक-तोड़ का ट्रैक रखा
कोड कार्यान्वयन
// 参数
var maPeriod = 30
var threshold = 50000
var amount = 0.1
// 全局变量
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(), "K线数量不足")
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)
}
}
इस तरह की रणनीति का तर्क बहुत सरल हैः
1. सबसे पहले, कुछ वैश्विक चर और पैरामीटर परिभाषित किए गए हैं, जिनमें शामिल हैंः
रणनीति पैरामीटर
वैश्विक चर
गणना फ़ंक्शन
मुख्य चक्र फलन
onTick Function: यह मुख्य नीति निष्पादन फ़ंक्शन है, और इसके भीतर के कार्य हैंः
a. नवीनतम के-लाइन डेटा प्राप्त करें और सुनिश्चित करें कि के-लाइनों की संख्या maPeriod से कम नहीं है, अन्यथा स्थिति रिकॉर्ड करें और वापस आएं।
b. गतिशील औसत ma और ATR संकेतक atr, और KDJ संकेतक की गणना करें।
c. areaInfo से क्षेत्र की जानकारी प्राप्त करें, अंतिम क्रॉसिंग में K स्ट्रिंग सूचकांक और अंतिम क्रॉसिंग में K स्ट्रिंग सूचकांक।
d. K रेखा और संकेतक रेखाओं को K रेखा चार्ट ऑब्जेक्ट c का उपयोग करके चित्रित करें, जबकि मूल्य और चलती औसत के संबंध के आधार पर विभिन्न रंगों को भरें।
e. शर्तों के आधार पर खरीदारी और बिक्री के समय का निर्धारणः
यदि tradeState एक
यदि खरीद की स्थिति है, तो जब कीमत पिछले ट्रेडिंग दिन के समापन मूल्य से कम हो जाती है, तो पिछले दिन के एटीआर को घटा दिया जाता है। यदि बेचने की स्थिति है, तो जब कीमत पिछले ट्रेडिंग दिन के समापन मूल्य और पिछले दिन के एटीआर से अधिक हो, तो समतल हो जाता है। main फ़ंक्शनः यह मुख्य निष्पादन इनपुट है, जो जांचता है कि क्या एक्सचेंज नाम में onTick_Futures टैब शामिल है, यदि शामिल है तो असामान्यताओं को फेंक दें, अन्यथा एक अनंत चक्र में जाएं, प्रत्येक चक्र में onTick फ़ंक्शन निष्पादित करें और 1 सेकंड के लिए सोएं।
सामान्य तौर पर, यह रणनीति मुख्य रूप से K-लाइन चार्ट और तकनीकी संकेतकों पर निर्भर करती है, जबकि जोखिम को प्रबंधित करने के लिए स्टॉप-लॉस और स्टॉप-पॉलिट रणनीतियों का उपयोग किया जाता है। कृपया ध्यान दें कि यह केवल एक उदाहरण रणनीति है और वास्तविक उपयोग के लिए बाजार की स्थिति और विशिष्ट आवश्यकताओं के अनुसार समायोजित और अनुकूलित करने की आवश्यकता है।
在FMZ.COM上使用JavaScript语言没有用多少行代码,很简单的就实现了这个模型。并且使用KLineChart函数很容易实现了K线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。
एक यादृच्छिक समय अवधि का चयन करें, हालांकि कोई नुकसान नहीं हुआ है, लेकिन लगातार लाभ नहीं हुआ है, लेकिन वापसी का मुद्दा काफी बड़ा है। इस रणनीति के लिए अन्य अनुकूलन दिशाएं और स्थान होना चाहिए। रुचि रखने वाले इस रणनीति को अपग्रेड करने का प्रयास कर सकते हैं।
इस रणनीति के माध्यम से, हमने एक तुलनात्मक रूप से वैकल्पिक व्यापारिक विचार सीखने के अलावा, ग्राफिंग कैसे करें; K रेखाओं और समतल रेखाओं के आसपास के क्षेत्र को इंगित करें; KDJ संकेतक कैसे बनाएं आदि।
के-लाइन क्षेत्र रणनीति एक व्यापारिक रणनीति है जो मूल्य प्रवृत्ति चौड़ाई और केडीजे संकेतकों पर आधारित है, जो व्यापारियों को बाजार की चाल की भविष्यवाणी करने में मदद करती है, जो कि के-लाइन और औसत रेखा के बीच क्षेत्र और खरीदने की भावना के परिवर्तन का विश्लेषण करके है। हालांकि कुछ जोखिम मौजूद हैं, लेकिन निरंतर अनुकूलन और समायोजन के माध्यम से, यह रणनीति एक शक्तिशाली व्यापारिक उपकरण प्रदान कर सकती है जो व्यापारियों को बाजार में उतार-चढ़ाव से बेहतर ढंग से निपटने में मदद करती है। महत्वपूर्ण बात यह है कि व्यापारियों को बेहतर व्यापारिक प्रदर्शन के लिए अपनी रणनीति के पैरामीटर और नियमों को अनुकूलित करने के लिए लचीलापन के साथ अनुकूलित करना चाहिए।