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

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

請問寫法

請教個問題:如何將以下程式改寫為不用迴圈的寫法?
空方:=MA(HIGH,3);
多方=MA(LOW,3);
FC:=CLOSE;
HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));
FOR I=4+2 TO DATACOUNT DO BEGIN
IF FC[I]>空方 [I-1] THEN
HLD[I]:=1;ELSE
IF FC[I]<多方 [I-1] THEN
HLD[I]:=-1;ELSE
HLD[I]:=HLD[I-1];
END;
多空:=IF(HLD<=-1,MA(HIGH,3),MA(LOW,3));
我不熟悉迴圈的寫法,不了解程式容,因此想程式改寫為不用迴圈的寫法

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

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

回覆: 請問寫法

引用:
最初由 q45168 發表
請教個問題:如何將以下程式改寫為不用迴圈的寫法?
空方:=MA(HIGH,3);
多方=MA(LOW,3);
FC:=CLOSE;
HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));
FOR I=4+2 TO DATACOUNT DO BEGIN
IF FC[I]>空方 [I-1] THEN
HLD[I]:=1;ELSE
IF FC[I]<多方 [I-1] THEN
HLD[I]:=-1;ELSE
HLD[I]:=HLD[I-1];
END;
多空:=IF(HLD<=-1,MA(HIGH,3),MA(LOW,3));
我不熟悉迴圈的寫法,不了解程式容,因此想程式改寫為不用迴圈的寫法



您這段程式原來是在奇狐中跑的嗎?

HLD 先前未定義, 在奇狐中下列這行是不能跑的, 因為內有REF(HLD,1)
HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));

無法得知原計算結果, 是難以正確改寫的

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

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

回覆: 回覆: 請問寫法

引用:
最初由 cgjj 發表
您這段程式原來是在奇狐中跑的嗎?

HLD 先前未定義, 在奇狐中下列這行是不能跑的, 因為內有REF(HLD,1)
HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));

無法得知原計算結果, 是難以正確改寫的


這段程式來是在奇狐中跑的.正確程式:
空方:=MA(HIGH,3);
多方:=MA(LOW,3);
FC:=CLOSE;
HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));
FOR I=4+2 TO DATACOUNT DO BEGIN
IF FC[I]>空方 [I-1] THEN
HLD[I]:=1;ELSE
IF FC[I]<多方 [I-1] THEN
HLD[I]:=-1;ELSE
HLD[I]:=HLD[I-1];
END;
多空:IF(HLD<=-1,MA(HIGH,3),MA(LOW,3));

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

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

回覆: 回覆: 回覆: 請問寫法

引用:
最初由 q45168 發表
這段程式來是在奇狐中跑的.正確程式:
空方:=MA(HIGH,3);
多方:=MA(LOW,3);
FC:=CLOSE;
HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));
FOR I=4+2 TO DATACOUNT DO BEGIN
IF FC[I]>空方 [I-1] THEN
HLD[I]:=1;ELSE
IF FC[I]<多方 [I-1] THEN
HLD[I]:=-1;ELSE
HLD[I]:=HLD[I-1];
END;
多空:IF(HLD<=-1,MA(HIGH,3),MA(LOW,3));



HLD:=IF(CLOSE>REF(MA(HIGH,4),1),1,IF(CLOSE<REF(MA(LOW,4),1),-1,REF(HLD,1)));

這行是不起什麼作用的(可視為多餘)
因為迴圈內的運算, 幾乎全把原先這行算的HLD給取代掉了
而且, 這行MA參數是取4, 與迴圈內用的MA參數是取3, 兩者不同
那個是您要用的, 請自行再 Check 修改

這迴圈算的HLD值, 可用以下式子簡化取代:
空方:=MA(HIGH,3);
多方:=MA(LOW,3);
HLD:(C>ref(空方,1))-(C<ref(多方,1));
HLD:=ref(HLD,barslast(HLD<>0));

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

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

多謝版主指點!

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

論壇跳轉:
主題評分:

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