جب تجارت میں تکنیکی تجزیہ کرتے ہیں تو ، تاجروں نے اسٹاک کی قیمت کے اعداد و شمار کو باقاعدہ تقسیم کے اعداد و شمار کے طور پر تجزیہ کیا ہے۔ تاہم ، اسٹاک کی قیمت کے اعداد و شمار کی تقسیم معیاری باقاعدہ تقسیم کے مطابق نہیں ہے۔Fisher Transformation
یہ ایک ایسا طریقہ ہے جس میں قیمت کے اعداد و شمار کو باقاعدہ تقسیم کی طرح تبدیل کیا جاسکتا ہے۔Fisher Transformation
مارکیٹ کے اعداد و شمار کو ہموار کریں اور کچھ تیز چھوٹے سائیکل اتار چڑھاؤ کو ختم کریں۔ اس دن اور پچھلے دن کے اشارے کے اختلاط کا استعمال کرتے ہوئے تجارتی سگنل جاری کیا جاسکتا ہے۔
کے بارے میںFisher Transform
اس کے علاوہ ، یہ بھی کہا گیا ہے کہ یہ ایک بہت بڑا مسئلہ ہے۔
آج کی درمیانی قیمت:
mid=(low + high) / 2
حساب کتاب کے دورانیے کا تعین کرنے کے لئے ، 10 دن کا استعمال کیا جاسکتا ہے۔ حساب کتاب کے دورانیے میں سب سے زیادہ قیمت اور سب سے کم قیمت:
lowestLow = 周期内最低价
,highestHigh = 周期内最高价
。
قیمت متغیر کی وضاحت (جس میںratio
0 سے 1 کے درمیان ایک مستقل کے لئے، مثال کے طور پر 0.5 یا 0.33 کے لئے قابل قبول ہے:
قیمتوں میں تبدیلی کے پیرامیٹرزx
استعمالFisher
تبدیل، حاصلFisher
اشارے:
اس اشارے کے الگورتھم کے مطابق آہستہ آہستہ عملدرآمد۔ یہ نوٹ کرنا ضروری ہے کہ یہ الگورتھم ایک تکرار الگورتھم ہے ، جس کا مطلب یہ ہے کہ اس کے لئے ایک الگورتھم کی ضرورت ہے۔preX
,preFish
شروع میں 0 کا تعین کیا جاتا ہے۔Math.log
اگر آپ کو یہ معلوم نہیں ہے کہ آپ کو کیا کرنا ہے تو ، آپ کو یہ بھی معلوم ہونا چاہئے کہ آپ کو کیا کرنا چاہئے۔ آپ کو یہ بھی معلوم ہونا چاہئے کہ آپ کو کیا کرنا چاہئے۔
اصلاح کی گئی x کی قدر 0.99 سے زیادہ ہے تو اسے 0.999 پر مقرر کرنا ضروری ہے۔ -0.99 سے کم۔
if (x > 0.99) {
x = 0.999
} else if (x < -0.99) {
x = -0.999
}
پہلی بار اس الگورتھم کو دیکھا، اشارے، الگورتھم کی نقل کے بعد. میں نے بھی اس کی تصدیق نہیں کی ہے، دلچسپی رکھنے والے ساتھیوں کو اس کی تصدیق کر سکتے ہیں کہ غلطی نہیں ہے۔ غلطیوں کی نشاندہی کرنے کا بہت شکریہ.
Fisher Transform
اشارے کے الگورتھم کا ماخذ:
function getHighest(arr, period) {
if (arr.length == 0 || arr.length - period < 0) {
return null
}
var beginIndex = arr.length - period
var ret = arr[beginIndex].High
for (var i = 0 ; i < arr.length - 1 ; i++) {
if (arr[i + 1].High > ret) {
ret = arr[i + 1].High
}
}
return ret
}
function getLowest(arr, period) {
if (arr.length == 0 || arr.length - period < 0) {
return null
}
var beginIndex = arr.length - period
var ret = arr[beginIndex].Low
for (var i = 0 ; i < arr.length - 1 ; i++) {
if (arr[i + 1].Low < ret) {
ret = arr[i + 1].Low
}
}
return ret
}
function calcFisher(records, ratio, period) {
var preFish = 0
var preX = 0
var arrFish = []
// 当K线长度不足,不满足周期时
if (records.length < period) {
for (var i = 0 ; i < records.length ; i++) {
arrFish.push(0)
}
return arrFish
}
// 遍历K线
for (var i = 0 ; i < records.length ; i++) {
var fish = 0
var x = 0
var bar = records[i]
var mid = (bar.High + bar.Low) / 2
// 当前BAR不足period计算时
if (i < period - 1) {
fish = 0
preFish = 0
arrFish.push(fish)
continue
}
// 计算周期内最高价和最低价
var bars = []
for (var j = 0 ; j <= i ; j++) {
bars.push(records[j])
}
var lowestLow = getLowest(bars, period)
var highestHigh = getHighest(bars, period)
// 价变参数
x = ratio * 2 * ((mid - lowestLow) / (highestHigh - lowestLow) - 0.5) + (1 - ratio) * preX
if (x > 0.99) {
x = 0.999
} else if (x < -0.99) {
x = -0.999
}
preX = x
fish = 0.5 * Math.log((1 + x) / (1 - x)) + 0.5 * preFish
preFish = fish
arrFish.push(fish)
}
return arrFish
}
اس کے علاوہ ، ہم نے اپنے صارفین کو بتایا کہ ہم نے اپنے صارفین کو اس کے بارے میں کیا بتایا ہے:https://www.fmz.com/square
اس کے علاوہ ، آپ کو اپنی مرضی کے مطابق تلاش کرنے کی ضرورت ہے۔
درمیان میں ، مندرجہ ذیل گراف ٹیسٹ کوڈ میں مندرجہ بالا calcFisher فنکشن کی عمل درآمد کو شامل کرنے کی ضرورت ہے تاکہ یہ کام کرے۔
var cfg = { // 用来初始化设置图表的对象(即图表设置)
plotOptions: {
candlestick: {
color: '#d75442', // 颜色值
upColor: '#6ba583' // 颜色值
}
},
title: { text: 'Fisher Transform'}, //标题
subtitle: {text: ''}, //副标题
plotOptions: {
candlestick: {
tooltip: {
pointFormat:
'<span style="color:{point.color}">\u25CF</span> <b> {series.name}</b><br/>' +
'开盘: {point.open}<br/>' +
'最高: {point.high}<br/>' +
'最低: {point.low}<br/>' +
'收盘: {point.close}<br/>'
}
}
},
yAxis: [{
title: {
text: 'K线行情'
},
height: '70%',
lineWidth: 1
}, {
title: {
text: 'Fisher Transform'
},
top: '75%',
height: '30%',
offset: 0,
lineWidth: 1
}],
series: [//系列
{
type: 'candlestick',
yAxis: 0,
name: 'K线',
id: 'KLine',
// 控制走势为跌的蜡烛颜色
color: 'green',
lineColor: 'green',
// 控制走势为涨的蜡烛颜色
upColor: 'red',
upLineColor: 'red',
data: []
},{
type: 'line', // 设置当前的数据序列 类型为: 线
yAxis: 1, // 使用的y轴 为索引为 0 的y轴(highcharts 图表 可以有 多个 y 坐标轴,这里指定索引0的y轴)
showInLegend: true, //
name: 'fish', // 根据 函数传入的 参数 label 设置
lineWidth: 1,
data: [], // 数据序列的数据项
tooltip: { // 工具提示
valueDecimals: 2 // 值的小数点 保留5位
}
},{
type: 'line', // 设置当前的数据序列 类型为: 线
yAxis: 1, // 使用的y轴 为索引为 0 的y轴(highcharts 图表 可以有 多个 y 坐标轴,这里指定索引0的y轴)
showInLegend: true, //
name: 'preFish', // 根据 函数传入的 参数 label 设置
lineWidth: 1,
data: [], // 数据序列的数据项
tooltip: { // 工具提示
valueDecimals: 2 // 值的小数点 保留5位
}
}
]
}
var chart = Chart(cfg)
function main() {
var ts = 0
chart.reset()
while (true) {
var r = exchange.GetRecords()
var fisher = calcFisher(r, 0.33, 10)
if (!r || !fisher) {
Sleep(500)
continue
}
for (var i = 0; i < r.length; i++){
if (ts == r[i].Time) {
chart.add([0,[r[i].Time, r[i].Open, r[i].High, r[i].Low, r[i].Close], -1])
chart.add([1,[r[i].Time, fisher[i]], -1])
if (i - 1 >= 0) {
chart.add([2,[r[i].Time, fisher[i - 1]], -1])
}
}else if (ts < r[i].Time) {
chart.add([0,[r[i].Time, r[i].Open, r[i].High, r[i].Low, r[i].Close]])
chart.add([1,[r[i].Time, fisher[i]]])
if (i - 1 >= 0) {
chart.add([2,[r[i].Time, fisher[i - 1]]])
}
ts = r[i].Time
}
}
}
}
لہذا ایف ایم زیڈ پر ڈیٹا ، گرافک ڈسپلے ، ڈیزائن کی حکمت عملیوں کا مطالعہ کرنا بہت آسان ہے۔ اس کے علاوہ ، آپ کو اپنے استادوں اور ساتھیوں کے تبصروں کا خیرمقدم کرنا چاہئے۔