setBarBack(500); Vars: i(0), intrabarpersist maxLessThanLow(-999999), intrabarpersist minGreaterThanHigh(999999) ,intrabarpersist mTlow(0), intrabarpersist mThigh(0); Array: values[18](0) ; values[1] = round(average(getField("收盤價","W"),5),2); values[2] = round(xf_EMA("w",getField("收盤價","W"),12),2) ; values[3] = round(xf_EMA("W",getField("收盤價","W"),26),2) ; values[4] = round(average(getField("收盤價","W"),60),2); values[5] = round(average(Close,5),2); values[6] = round(EMA( Close,12),2) ; values[7] = round(EMA( Close,26),2) ; values[8] = round(average(Close,60),2); values[9] = round(high,2); values[10] = round(close,2); values[11] = round(low,2); values[12] = round( bollingerband(Close, 20, 2),2); values[13] = round(average(close, 20),2); values[14] = round( bollingerband(Close, 20, -1 * 2),2); values[15] = round(highest(high,250),2);//百日高 values[16] = round(Lowest(low,250),2); values[17] = round(highw(0),2);//周高 values[18] = round(Loww(0),2); For i = 1 to 18 begin // 找出大于 high 的最小值 壓力 if values[i] > highD(0) then begin if values[i] < minGreaterThanHigh then MThigh = values[i]; end; // 找出小于 low 的最大值 支撐 if values[i] < lowd(0) then begin if values[i] > maxLessThanLow then MTlow = values[i]; end; end; Plot1(MThigh, "壓力價"); Plot2(MTlow, "支撐價");
//plot3(第二壓力價) ?
//plot4(第二支撐價) ?

求問~何處有誤,為何運算後的搜尋值不正確
- 86
- 最後發表 xqyi 2024 七月 12
讚喔
上基礎課程吧!
寫程式是零基礎捏,尤其是流程方面的常搞錯、 有建議的入門書?
打好基礎,勤快練習,如此而已。
如果遇到值相同,上一個編號就不正確,得又判斷再推上一個,就又難倒自己了。
個人編寫程式的效率,自己都不敢苟同,一個腳本花了幾天寫,花這麼多時間和測試時,還不見得寫對想要的。
有想法 無信手拈來的編寫能力,知易行難也!
編寫程式,需用什麼方法思維觀念或參閱的書籍,才能打通這打結的任督二脈,寫得對又順!?
教授,您高看我了!
我想過,想得出方法但寫不出程式碼,這部份真的非我所強!
迴圈、陣列、begin end、case、..... 碰到類似這種 跨行 的腦袋就打結繞不出來
腦袋瓜有很多想法和對策,但礙於編寫程式碼之能力不足,80%的idea停擺!
給你個提示,既然對陣列進行排序了,只要鎖定住今高的在陣列的元素編號,它的上一個編號應該就是你的第一壓力。
1.
如上有18個價位,以當日盤中最高價和最低價作為基準,
第一個高於最高價(HighD)的為第一壓力價位,高於第一壓力價位的為第二壓力價位,依此類推
第一個低於最低價(LowD)的為第一支撐價位,低於第一支撐價位的為第二支撐價位,依此類推
2.
壓力支撐價位因為寫不出來,問於GPT寫的,教授是否能提供更有效率的?
(1)請清楚定義第一壓力、第一支撐、第二壓力、第二支撐。
(2)你的寫法很沒效率。不需要每根K棒都跑迴圈。
1. 感謝提供更簡化的排序指標。
2. 壓力1價和支撐1價,之後問了好機天GPT,終於問出個端倪
Vars: intrabarpersist maxLessThanLow(-999999), intrabarpersist minGreaterThanHigh(999999),
intrabarpersist mTlow(0), intrabarpersist mThigh(0);
var:i(0);
Array: values[18](0) ;
values[1] = round(average(getField("收盤價","W"),5),2); // W5
values[2] = round(xf_EMA("w",getField("收盤價","W"),12),2); // WE12
values[3] = round(xf_EMA("W",getField("收盤價","W"),26),2); // WE26
values[4] = round(average(getField("收盤價","W"),60),2); // W60
values[5] = round(average(Close,5),2); // D5
values[6] = round(EMA(Close,12),2); // DE12
values[7] = round(EMA(Close,26),2); // DE26
values[8] = round(average(Close,60),2); // D60
values[9] = round(High,2); // 今高
values[10] = round(Close,2); // 今收
values[11] = round(Low,2); // 今低
values[12] = round(bollingerband(Close, 20, 2),2); // 布林上
values[13] = round(average(Close, 20),2); // 布林中
values[14] = round(bollingerband(Close, 20, -2),2); // 布林下
values[15] = round(highest(High, 250),2); // 百日高
values[16] = round(lowest(Low, 250),2); // 百日低
values[17] = round(Highw(0),2); // 周高
values[18] = round(Loww(0),2); // 周低
// 初始化 minGreaterThanHigh 和 maxLessThanLow
minGreaterThanHigh = 999999;
maxLessThanLow = -999999;
For i = 1 to 18 begin
// 找出大于 high 的最小值 壓力
if values[i] > High then begin
if values[i] < minGreaterThanHigh then
minGreaterThanHigh = values[i];
end;
// 找出小于 low 的最大值 支撐
if values[i] < Low then begin
if values[i] > maxLessThanLow then
maxLessThanLow = values[i];
end;
end;
// 更新壓力價和支撐價
mThigh = minGreaterThanHigh;
mTlow = maxLessThanLow;
Plot31(mThigh, "壓力1價");
Plot32(mTlow, "支撐1價");
但壓力2和支撐2,尚未解決!
15 評論