求問~何處有誤,為何運算後的搜尋值不正確

  •   86 
  • 最後發表   xqyi  2024 七月 12
xqyi 發文於   2024/06/06

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(第二支撐價) ?

排序方式: 標準 | 最新
xqyi 發文於   2024/07/12
虎科大許教授 發文於   2024/07/10

上基礎課程吧!

https://reurl.cc/NQW8zm

  • 按讚來自於
  • xqyi0502
xqyi 發文於   2024/07/10

寫程式是零基礎捏,尤其是流程方面的常搞錯、 有建議的入門書?

虎科大許教授 發文於   2024/07/10

打好基礎,勤快練習,如此而已。

xqyi 發文於   2024/07/10

如果遇到值相同,上一個編號就不正確,得又判斷再推上一個,就又難倒自己了。

個人編寫程式的效率,自己都不敢苟同,一個腳本花了幾天寫,花這麼多時間和測試時,還不見得寫對想要的。

有想法 無信手拈來的編寫能力,知易行難也!

編寫程式,需用什麼方法思維觀念或參閱的書籍,才能打通這打結的任督二脈,寫得對又順!?

xqyi 發文於   2024/07/08

教授,您高看我了!

我想過,想得出方法但寫不出程式碼,這部份真的非我所強!

迴圈、陣列、begin end、case、.....  碰到類似這種 跨行 的腦袋就打結繞不出來

腦袋瓜有很多想法和對策,但礙於編寫程式碼之能力不足,80%的idea停擺!

虎科大許教授 發文於   2024/07/08

給你個提示,既然對陣列進行排序了,只要鎖定住今高的在陣列的元素編號,它的上一個編號應該就是你的第一壓力。

xqyi 發文於   2024/07/08

1.

如上有18個價位,以當日盤中最高價和最低價作為基準,

第一個高於最高價(HighD)的為第一壓力價位,高於第一壓力價位的為第二壓力價位,依此類推

第一個低於最低價(LowD)的為第一支撐價位,低於第一支撐價位的為第二支撐價位,依此類推

2.

壓力支撐價位因為寫不出來,問於GPT寫的,教授是否能提供更有效率的?

虎科大許教授 發文於   2024/06/12

(1)請清楚定義第一壓力、第一支撐、第二壓力、第二支撐。

(2)你的寫法很沒效率。不需要每根K棒都跑迴圈。

xqyi 發文於   2024/06/12

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,尚未解決!

 

顯示更多回應 發表回覆
Close