想寫統計某段時間內分公司買進少於賣出的家數??

  •   84 
  • 最後發表   topgolei  2018 一月 17
topgolei 發文於   2018/01/13

大家好, 我是初學者在寫簡單的程式時發生了一些問題, 自己debug很久沒辦法解決.

我想統計3天內分點買家數減去分點賣家數小於零的股票

問題一是我在使用For迴圈時發現我的變數 value3 設定為 0 to 3 ,為何value3最後outputfield出來卻是4阿?不是3呢

問題二是我for回圈內的計數變數 _count=_count+1 為什麼 都大於3, 所以選出一大堆股票,

問題三 : 當我的settotalbar() 內的參數如果越大, _count計數出來的就越多, 這是什麼原因呢??

感謝各位小弟解答了, 謝謝

input:period(3);

variable:_count(0);

Value1=GetField("分公司買進家數","D");

value2=GetField("分公司賣出家數","D");

value4=value1-value2;

settotalbar(10);

for value3=0 to period

begin

if value4[value3]<0 then

_count=_count + 1;

end ;

if _count>=3 then ret=1;

outputfield(1,value1,"分公司買進家數1");

outputfield(2,value2,"分公司賣出家數1");

outputfield(3,value1[1],"分公司買進家數2");

outputfield(4,value2[1],"分公司賣出家數2");

outputfield(5,value1[2],"分公司買進家數3");

outputfield(6,value2[2],"分公司賣出家數3");

outputfield(7,_count,"次數");

outputfield(8,value3,"for次數");

排序方式: 標準 | 最新
XQ小幫手 發文於   2018/01/16

你好:

Q1:那是因為0也算是一期喔,所以0-3是4期沒錯。

Q2:這是因為你的count沒有歸0的問題

Q3:同Q2

程式碼更動如下:

input:period(3);

variable:_count(0);

Value1=GetField("分公司買進家數","D");

value2=GetField("分公司賣出家數","D");

value4=value1-value2;


settotalbar(10);
_count=0;

for value3=0 to period-1

begin

if value4[value3]<0 then

_count=_count + 1;

end ;

if _count=3 then ret=1;

outputfield(1,value1,"分公司買進家數1");

outputfield(2,value2,"分公司賣出家數1");

outputfield(3,value1[1],"分公司買進家數2");

outputfield(4,value2[1],"分公司賣出家數2");

outputfield(5,value1[2],"分公司買進家數3");

outputfield(6,value2[2],"分公司賣出家數3");

outputfield(7,_count,"次數");

outputfield(8,value3,"for次數");

 

另外還有一點問題,最後判斷式的部分,小幫手猜想你是要判斷連續3天都要小於0,所以改寫為_count=3,如果是別種用法,則需要另外更改程式碼,這部分可以如果有誤,可以再找小幫手討論,以上說明。

topgolei 發文於   2018/01/16

謝謝小編熱情地回答問題, 真的可以幫助我們初學者繼續學習下去!!

另外我還有一個問題想請問 ,我在宣告變數時 variable:_count(0);

這個不是代表我宣告的變數 _count為0 的意思嗎?? 為何還要再多一行 _count=0;

因為我看程式交易的七堂課的投影片裡面寫 Variable:變數名稱(初始值);初始值是數值或布林值

所以我才沒寫_count=0; 這行

XQ小幫手 發文於   2018/01/17

你好:

宣告變數為0時,只是宣告這變數的初始值為何。

但因為你策略的關係,需要在程式一開始將_count=0,每次執行程式時,count才會重新計算。

以上說明。

發表回覆
Close