奇狐社區論壇
在這個頁面顯示本主題全部的 5 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救]TS碼轉奇狐 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=17562)


由 scshen1981 在 2013-03-06 16:26 發表:

[求救]TS碼轉奇狐

小弟最近在摸奇狐
之前是用ts
有個指標想轉換成奇狐,
但礙於奇狐似乎無法給定變數初值
一直不知如何下手,希望有人能指點一二
以下附上TS的程式碼

Inputs:
PercentScale(1);
Vars:
RenkoUp(0),
RenkoDn(0);
If CurrentBar = 1 then
Begin
RenkoUp = Close*(1+PercentScale/100);
RenkoDn = Close*(1-PercentScale/100);
End;

If Close > RenkoUp then
Begin
RenkoDn = RenkoDn*(1+PercentScale/100);
RenkoUp = RenkoUp*(1+PercentScale/100);
End
Else If Close < RenkoDn then
Begin
RenkoDn = RenkoDn*(1-PercentScale/100);
RenkoUp = RenkoUp*(1-PercentScale/100);
End;

Plot1(RenkoUp,"Up",Red);
Plot2(RenkoDn,"Dn",Green);


由 cgjj 在 2013-03-07 08:50 發表:

回覆: [求救]TS碼轉奇狐

引用:
最初由 scshen1981 發表
小弟最近在摸奇狐
之前是用ts
有個指標想轉換成奇狐,
但礙於奇狐似乎無法給定變數初值
一直不知如何下手,希望有人能指點一二
以下附上TS的程式碼

Inputs:
PercentScale(1);
Vars:
RenkoUp(0),
RenkoDn(0);
If CurrentBar = 1 then
Begin
RenkoUp = Close*(1+PercentScale/100);
RenkoDn = Close*(1-PercentScale/100);
End;

If Close > RenkoUp then
Begin
RenkoDn = RenkoDn*(1+PercentScale/100);
RenkoUp = RenkoUp*(1+PercentScale/100);
End
Else If Close < RenkoDn then
Begin
RenkoDn = RenkoDn*(1-PercentScale/100);
RenkoUp = RenkoUp*(1-PercentScale/100);
End;

Plot1(RenkoUp,"Up",Red);
Plot2(RenkoDn,"Dn",Green);



奇狐是可以指定變數初值的

各家軟體計算基礎架構和特性不盡相同
為避免誤用請給計算原理, 這樣比較能精確協助
若僅給其他軟體原碼, 恕不協助


由 scshen1981 在 2013-03-07 11:01 發表:

不好意思
請問奇狐設定初值的公式寫法為何呢?
我當初是寫成以下格式
AA := 0
BB := If( Cond1 , Close, Ref(AA,1));

結果當cond1 沒發生時,
AA都變為0了,並非小弟所要的case

小弟希望的運算原理如下所示

1.令該檔股票第一根k棒的收盤價為 RefPrice
上通道 = RefPrice + (1% * RefPrice)
下通道 = RefPrice - (1% * RefPrice)
2. 若 k棒的收盤價 向上突破 上通道
則 上通道變更為 原本的上通道 + (1% * 原本的上通道)
下通道變更為 原本的下通道 + (1% * 原本的下通道)

3. 若k 棒的收盤價 向下突破 下通道
則 上通道變更為 原本的上通道 - (1% * 原本的上通道)
下通道變更為 原本的下通道 - (1% * 原本的下通道)

4. 若2 3 都不滿足,上下通道維持前值


由 cgjj 在 2013-03-07 17:28 發表:

引用:
最初由 scshen1981 發表
不好意思
請問奇狐設定初值的公式寫法為何呢?
我當初是寫成以下格式
AA := 0
BB := If( Cond1 , Close, Ref(AA,1));

結果當cond1 沒發生時,
AA都變為0了,並非小弟所要的case

小弟希望的運算原理如下所示

1.令該檔股票第一根k棒的收盤價為 RefPrice
上通道 = RefPrice + (1% * RefPrice)
下通道 = RefPrice - (1% * RefPrice)
2. 若 k棒的收盤價 向上突破 上通道
則 上通道變更為 原本的上通道 + (1% * 原本的上通道)
下通道變更為 原本的下通道 + (1% * 原本的下通道)

3. 若k 棒的收盤價 向下突破 下通道
則 上通道變更為 原本的上通道 - (1% * 原本的上通道)
下通道變更為 原本的下通道 - (1% * 原本的下通道)

4. 若2 3 都不滿足,上下通道維持前值



看看是否為您要的
原碼:

CC
:=Close;
上通道:CC*0 colorred;
下通道:下通道 colorgreen;
上通道[1]:=CC[1]*1.01;
下通道[1]:=CC[1]*0.99;
for 
i=2 to datacount do begin
  
if CC[i]>上通道[i-1then begin
    上通道
[i]:=上通道[i-1]*1.01;
    
下通道[i]:=下通道[i-1]*1.01;
  
end else if CC[i]<下通道[i-1then begin
    上通道
[i]:=上通道[i-1]*0.99;
    
下通道[i]:=下通道[i-1]*0.99;
  
end else begin
    上通道
[i]:=上通道[i-1];
    
下通道[i]:=下通道[i-1];
  
end;
end;


由 cgjj 在 2013-03-07 17:29 發表:

前面程式可簡化為

原碼:

CC
:=Close;
上通道:CC*0 colorred;
下通道:下通道 colorgreen;
上通道[1]:=CC[1]*1.01;
下通道[1]:=CC[1]*0.99;
for 
i=2 to datacount do begin
  SS
:=1+((CC[i]>上通道[i-1])-(CC[i]<下通道[i-1]))*0.01;
  
上通道[i]:=上通道[i-1]*SS;
  
下通道[i]:=下通道[i-1]*SS;
end;


全部時間均為台灣時間, 現在時間為09:14
在這個頁面顯示本主題全部的 5 個文章


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

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.