fine940621 發表於 16-2-2 21:35

請益,變數

想請教各位大大

在編寫程式的時候都會用到var,如var:ma(0);

那我想問的是,括弧內的數值大小會讓程式出現什麼樣的差別呢?

煩請大大們幫忙,感恩。

easytrader788 發表於 16-2-5 09:30

1.放在input 裡面的叫做參數,它可以由外部做設定,例如內建的指標 KD , RSI , MACD ... 都可以在圖表內直接修改參數,變換不同的參考 K棒數

2.放在var的叫做變數 , 他的值只能在程式裡修改或運算 , 你可以複製一個 RSI指標的程式碼, 將裡面的 input 改成 var , 另存成 myRSI , 加到圖表內就可以發現myRSI無法在圖表中作修改

3.設在var裡的變數在程式內可以重新修改運算 , 設在input的參數不行

input: AB(0), CD(1);

AB = CD + 1 ; 會出現編譯錯誤 ,因為 AB不能在程式內重新被設定

************************************
input: CD(1) ;
var: AB(0) ;

AB = CD + 1 ; 變數 AB在程式可以隨時透過運算或設定來改變值 , 參數 CD在程式內永遠是預設值 1

{此時AB = 1 }
......
......
......
......

AB = 5 ;
{此時AB = 5 }
......
......
......

沒房子的阿捨 發表於 16-2-4 23:51

fine940621 發表於 16-2-4 00:43
感謝easytrader788大大的解答,不過我想問一下,以下是我的測試:

var:MA1(0),MA2(99999),MA3(-99999);


你想要做到的是這樣的效果嗎?
------------------------------------
var:MA1(10),MA2(20),MA3(30);

plot1(Average(C,MA1));
plot2(Average(C,MA2));
plot3(Average(C,MA3));

blj0511 發表於 16-2-4 09:46

fine940621 發表於 16-2-4 00:43
感謝easytrader788大大的解答,不過我想問一下,以下是我的測試:

var:MA1(0),MA2(99999),MA3(-99999);


原本是不一樣的,但是
MA1=Average(C,20);
MA2=Average(C,20);
Ma3=Average(C,20);


這段已經改變原始MA123的值,而三個都是=average(c,20)


所以變成三個值都一樣,所以印出來就是重疊的線囉

easytrader788 發表於 16-2-2 22:53

括弧內的數值,就是該變數在程式內運行的初始值

fine940621 發表於 16-2-4 00:43

easytrader788 發表於 16-2-2 22:53
括弧內的數值,就是該變數在程式內運行的初始值

感謝easytrader788大大的解答,不過我想問一下,以下是我的測試:

var:MA1(0),MA2(99999),MA3(-99999);

MA1=Average(C,20);
MA2=Average(C,20);
Ma3=Average(C,20);

plot1(MA1);
plot2(MA2);
plot3(MA3);

var內的數值都不一樣,但是線都是重疊的,看不出來有什麼差別。

fine940621 發表於 16-2-5 00:36

沒房子的阿捨 發表於 16-2-4 23:51
你想要做到的是這樣的效果嗎?
------------------------------------
var:MA1(10),MA2(20),MA3(30);


阿捨大大,這樣的寫法跟
input:MA1(10),MA2(20),MA3(30);

應該是一樣的意思沒錯吧~


那用input跟var的差異是在哪呢?



easytrader788 發表於 16-2-5 09:43

fine940621 發表於 16-2-4 00:43
感謝easytrader788大大的解答,不過我想問一下,以下是我的測試:

var:MA1(0),MA2(99999),MA3(-99999);


var:MA1(0),MA2(99999),MA3(-99999);

MA1=Average(C,20);
MA2=Average(C,20);
Ma3=Average(C,20);

plot1(MA1);
plot2(MA2);
plot3(MA3);

var內的數值都不一樣,但是線都是重疊的,看不出來有什麼差別。


雖然 MA1 , MA2 , MA3 初始值不同 ,但是你都將它重設為 Average(C,20) ,當然一樣


劃出來的是 20根收盤價的均線
*********************************************
若是程式改為
input:MA1(0),MA2(99999),MA3(-99999);

MA1=Average(C,20);
MA2=Average(C,20);
Ma3=Average(C,20);

plot1(MA1);
plot2(MA2);
plot3(MA3);


會出現編譯錯誤


***************************************************
若是程式改為
input:MA1(20),MA2(20),MA3(20);

plot1(MA1);
plot2(MA2);
plot3(MA3);


劃出來的是高度 20的水平線








曾永政 發表於 16-2-5 09:49

感覺這不是在學語法,而是必須從程式設計重新開始了...

fine940621 發表於 16-2-5 16:26

曾永政 發表於 16-2-5 09:49
感覺這不是在學語法,而是必須從程式設計重新開始了...

之前是都沒有接觸過程式語言,最近才開始摸索當中,所以還蠻多地方不懂的。

fine940621 發表於 16-2-5 16:27

感謝easytrader788大大,這樣的說明,我有清楚的了解到了,感恩~~~
頁: [1]
查看完整版本: 請益,變數