到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > 請問寫法
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
q45168
中級會員

註冊日期: Apr 2006
來  自:
文章數量: 52

請問寫法

請問寫法
請教個問題:如何將以下程式改寫為不用迴圈的寫法?
FO:=OPEN;
FH:=HIGH;
FL:=LOW;
FC:=CLOSE;
<%
vo=ffl.vardata("fo")
vh=ffl.vardata("fh")
vl=ffl.vardata("fl")
vc=ffl.vardata("fc")
last=ubound(vc)
vc(0)=(vh(0)+vl(0)+2*vc(0))/4
for i=1 to last
vo(i)=(vo(i-1)+vc(i-1))/2
if vo(i)>vh(i) then vh(i)=vo(i) else vh(i)=vh(i)
if vo(i)<vl(i) then vl(i)=vo(i) else vl(i)=vl(i)
vc(i)=(2*vc(i)+vh(i)+vl(i))/4
next
ffl.vardata("fo")=vo
ffl.vardata("fh")=vh
ffl.vardata("fl")=vl
ffl.vardata("fc")=vc
%>
KK:=IF(FC>=FO AND (FC>=REF(FC,1) OR REF(FC,1)>=REF(FO,1)),1,IF(FC<FO AND (FC<REF(FO,1) OR REF(FC,1)<REF(FO,1)),-1,0));
今日折:=ROUND(IF(KK=1,MIN(FC,FO),IF(KK=-1,MAX(FC,FO),IF(REF(KK,1)=1,MIN(FC,FO),IF(REF(KK,1)=-1,MAX(FC,FO),(FC+FO)/2)))));

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

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

回覆: 請問寫法

引用:
最初由 q45168 發表
請問寫法
請教個問題:如何將以下程式改寫為不用迴圈的寫法?
FO:=OPEN;
FH:=HIGH;
FL:=LOW;
FC:=CLOSE;
<%
vo=ffl.vardata("fo")
vh=ffl.vardata("fh")
vl=ffl.vardata("fl")
vc=ffl.vardata("fc")
last=ubound(vc)
vc(0)=(vh(0)+vl(0)+2*vc(0))/4
for i=1 to last
vo(i)=(vo(i-1)+vc(i-1))/2
if vo(i)>vh(i) then vh(i)=vo(i) else vh(i)=vh(i)
if vo(i)<vl(i) then vl(i)=vo(i) else vl(i)=vl(i)
vc(i)=(2*vc(i)+vh(i)+vl(i))/4
next
ffl.vardata("fo")=vo
ffl.vardata("fh")=vh
ffl.vardata("fl")=vl
ffl.vardata("fc")=vc
%>
KK:=IF(FC>=FO AND (FC>=REF(FC,1) OR REF(FC,1)>=REF(FO,1)),1,IF(FC<FO AND (FC<REF(FO,1) OR REF(FC,1)<REF(FO,1)),-1,0));
今日折:=ROUND(IF(KK=1,MIN(FC,FO),IF(KK=-1,MAX(FC,FO),IF(REF(KK,1)=1,MIN(FC,FO),IF(REF(KK,1)=-1,MAX(FC,FO),(FC+FO)/2)))));



為何不用迴圈呢?

這一段迴圈, 是 Call vbscript 寫的
其中的 vo , 其有用前一根的 vo 和 vc 值去做計算
故其必定要用迴圈來處理

就算改用奇狐本身的語法來寫, 也是需要動用迴圈的
原碼:

fo
:=ofh:=hfl:=lfc:=c;
fc[1]:=(2*fc[1]+fh[1]+fl[1])/4;
for 
i=2 to datacount do begin
  fo
[i]:=(fo[i-1]+fc[i-1])/2;
  if 
fo[i]>fh[ithen fh[i]:=fo[i];
  if 
fo[i]<fl[ithen fl[i]:=fo[i];
  
fc[i]:=(2*fc[i]+fh[i]+fl[i])/4;
end;

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

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
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.  聯絡我們