[TS懶人包] [保險服務]

2010年2月27日 星期六

變數的運用(一)

程式教學到目前…大家應該對寫程式有一個基本的概念了。接下來的部份,應該是著重在一些寫程式的小技巧了。在這個部份,我自己用到很多的變數,利用變數記錄目前的狀況、倉位、進出場價位等。許多的地方都需要用到變數。

一開始先來講進出場價位,這代表什麼?這代表著也許某個條件已經成立了,所以我們利用變數把預計的進出場價位先存下來,接下來我們會等待著第二個條件成立,也許第二個條件成立後會進場等。

以一個簡單的例子來說明狀況的儲存,假設我們在均線交叉的時候,記錄下當交叉當根 k 線的高低點,接下來,我們就以這個高低點來進出場。

這樣的程式該怎麼寫呢?首先是均線交叉的寫法,這應該要沒問題了。如果你對這個均線的交叉還有問題的話,那你應該要重頭開始看這系列的文章。

接下來在交叉的時候,我們利用一個變數把高、低點存下來。再來就是等待突破進場了。

整個說起來應該不難才對,所以就直接來寫吧:


vars: longLine(0), shortLine(0);

Value1 = average(close, 10);
Value2 = average(close, 30);

if Value1 cross over Value2 then begin
longLine = high;
shortLine = 0;
end;

if Value1 cross under Value2 then begin
shortLine = low;
longLine = 0;
end;

if longLine <> 0 then
buy next bar at longLine stop;
if shortLine <> 0 then
sell next bar at shortLine stop;



在這個程式可以看到我宣告了二個變數分別是 longLine 和 shortLine,這二個變數分別記錄著多單進場的價位和空單進場的價位。

再下來是二條均線的運算式。

然後是當均線有交叉動作發生時,需要作的動作。在這邊可以看到不再是一交叉就直接進場了,而只是在有交叉動作發生時,記錄下當根 k 線的高或低點。

比較需要注意的是,因為變數一設定值進去後,如果沒再去變動它,那麼那個值就會一直存在,所以什麼時候需要把變數作歸零的動作,是很值得注意的一件事情。

如果在這邊我沒有把另一邊的進場點作歸零的話,那麼在下面的進場語法就會產生不可預期的狀況囉。

沒把變數歸零的狀況:


在這邊所謂的歸零,是指在進場條件你必需排除掉的數值,可以看到我在進場條件的寫法是排除掉 longLine 或 shortLine = 0 的情況。

那就練習一下吧…來寫個 MACD 交叉後以交叉時的高低點作為進場點吧。

5 則留言:

  1. Value1 = MACD(close, 12, 26);
    Value2 = XAverage(MACD(close, 12, 26), 9);

    if Value1 cross above Value2 then begin
    longline=high;
    shortline=0;
    end;

    if Value2 cross under Value1 then begin
    longline=0;
    shortline=low;
    sell next bar at shortline stop;
    end;

    \*進場*\

    if longline<>0 then begin
    buy next bar at longline stop;

    end;

    if shortline<>0 then begin
    sell next bar at shortline stop;

    end;

    \*出場*\

    if priceenterprice+40 marketposition=-1 then begin

    exitshort this bar at close;

    回覆刪除
  2. 最後面漏了

    if price<enterprice-40 and marketposition=1 then begin

    exitlong this bar at close;

    很多錯誤
    請DK大大多多鞭策我XXD

    回覆刪除
  3. layx: 請貼錯誤訊息囉..另外如果你沒貼錯的話..你在空單出場那邊寫錯了..還有 entryprice 我習慣用 entryprice(0) 代表最近一筆的進場

    回覆刪除
  4. 抱歉@@ 我暫時沒把法提供錯誤

    那我更正一下:

    \*出場*\

    if price>enterprice+40 marketposition=-1 then begin

    exitshort this bar at close;

    if price<enterprice-40 and marketposition=1 then begin

    exitlong this bar at close;


    但不曉得您說的entryprice如何使用
    他是內建函式嗎?!還是我要重新宣告?
    進場的價格不是就是entryprice嗎@@

    有點搞混了..

    回覆刪除
  5. Layx: 是一樣的..只是你的程式碼裡面打的不是 entryprice

    回覆刪除

請留下您的大名…匿名者恕不回應…

Related Posts Plugin for WordPress, Blogger...