到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > [求救]if()與if的分別在那?是data type不一樣嗎?
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
Wing
初級會員

註冊日期: May 2016
來  自:
文章數量: 3

[求救]if()與if的分別在那?是data type不一樣嗎?

您好,
在下寫程式卡住了.
懇請各位前輩指點.

//想找到股價糾結的時間段.
//參數
// PN = 糾結K棒數, default = 5;
//PPER = 上下幅度(單位%), default = 5;

j:=0;
nPPER:=PPER/100;
nma1:= ma(c,PN);

posR:= nma1*(1+nPPER); //均線上之幅度
negR:= nma1*(1-nPPER); //均線下之幅度

nhhv:= HHV(HIGH,PN); //PN K棒數內之最高點.
nllv:= LLV(LOW,PN); //PN K棒數內之最低點.

if nhhv > posR then j:= 1;
if nllv < posR then j:=-1;

j; // 在副圖劃線
//=======================
其中...
倒數2,3行,

if nhhv > posR then j:= 1;
if nllv < posR then j:=-1;

一直編譯公式不過,「語法錯誤」.
-----------------------------------------------------
若改為:

lhigh:if(nhhv > posR,1,0);
llow:if (nllv < negR,-1,0);

就可順利編譯並執行.

想請問,為何用if then 一直不過,
是因為data type一不樣嗎?
請各位前輩賜教.非常感謝!

__________________
Wing 阿青

向版主報告此篇 | 查IP位址
Old Post 2016-06-07 01:50
Wing 現在離線 點選這裡查看 Wing 的個人資料 點選這裡給 Wing 傳送一條短訊 查找更多關於 Wing 的文章 增加 Wing 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

回覆: [求救]if()與if的分別在那?是data type不一樣嗎?

引用:
最初由 Wing 發表
您好,
在下寫程式卡住了.
懇請各位前輩指點.

//想找到股價糾結的時間段.
//參數
// PN = 糾結K棒數, default = 5;
//PPER = 上下幅度(單位%), default = 5;

j:=0;
nPPER:=PPER/100;
nma1:= ma(c,PN);

posR:= nma1*(1+nPPER); //均線上之幅度
negR:= nma1*(1-nPPER); //均線下之幅度

nhhv:= HHV(HIGH,PN); //PN K棒數內之最高點.
nllv:= LLV(LOW,PN); //PN K棒數內之最低點.

if nhhv > posR then j:= 1;
if nllv < posR then j:=-1;

j; // 在副圖劃線
//=======================
其中...
倒數2,3行,

if nhhv > posR then j:= 1;
if nllv < posR then j:=-1;

一直編譯公式不過,「語法錯誤」.
-----------------------------------------------------
若改為:

lhigh:if(nhhv > posR,1,0);
llow:if (nllv < negR,-1,0);

就可順利編譯並執行.

想請問,為何用if then 一直不過,
是因為data type一不樣嗎?
請各位前輩賜教.非常感謝!



因為您帶入的是數列而非單值

奇狐有兩種 IF 用法各自不同
請參考此篇解說
http://www.chiefox.com.tw/bbs/showt...&threadid=12828

向版主報告此篇 | 查IP位址
Old Post 2016-06-07 08:35
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
Wing
初級會員

註冊日期: May 2016
來  自:
文章數量: 3

非常感謝cgjj總版主迅速回覆及指導!

IF...THEN 不能用序列變數,我已了解.
想再請教,要如何將
nhhv, posR, nllv轉換成常數變數,
以代入IF....THEN中使用呢?

if nhhv > posR then j:= 1;
if nllv < posR then j:=-1;

註:
nhhv,nllv是由HHV(),LLV() 而來.
posR 是由ma()而來.

__________________
Wing 阿青

向版主報告此篇 | 查IP位址
Old Post 2016-06-07 14:37
Wing 現在離線 點選這裡查看 Wing 的個人資料 點選這裡給 Wing 傳送一條短訊 查找更多關於 Wing 的文章 增加 Wing 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

引用:
最初由 Wing 發表
非常感謝cgjj總版主迅速回覆及指導!

IF...THEN 不能用序列變數,我已了解.
想再請教,要如何將
nhhv, posR, nllv轉換成常數變數,
以代入IF....THEN中使用呢?

if nhhv > posR then j:= 1;
if nllv < posR then j:=-1;

註:
nhhv,nllv是由HHV(),LLV() 而來.
posR 是由ma()而來.



nhhv, posR, nllv 算出來的結果是數列

數列是好幾個數在其中(n根K棒, 就有n個數)

故數列無法直接轉換為常數變數(非單一值)

您可以採用元素的方式去存取它(存取數列中的單一元素)
範例:
數列[5]:=10; //將數列中的第5個元素值設為10
AA:數列[15]; //取出數列中第15個元素值,存入變數AA

故通常需要搭配迴圈去存取,請見此例:
http://www.chiefox.com.tw/bbs/showt...56121#post56121

向版主報告此篇 | 查IP位址
Old Post 2016-06-07 16:16
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
Wing
初級會員

註冊日期: May 2016
來  自:
文章數量: 3

非常感謝您的指導!

我再試看看.謝謝您!

__________________
Wing 阿青

向版主報告此篇 | 查IP位址
Old Post 2016-06-07 17:48
Wing 現在離線 點選這裡查看 Wing 的個人資料 點選這裡給 Wing 傳送一條短訊 查找更多關於 Wing 的文章 增加 Wing 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為09:35 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們