今天在國外網站看到下面這串程式碼,我覺得語法背後的觀念很有趣,在這裡分享給大家,有興趣的可以練習一下。

 

先匯入函數

Type : Function (TrueFalse), Name : sym_shark

input: symmetry(numericsimple);

vars: apex(0),

wb(0);

 

apex = (high + low) / 2;

wb = high[2] - low[2];

 

if high < high[1] and low > low[1] and

high[1] < high[2] and low[1] > low[2] and

apex <= high[2] - (wb * symmetry) and

apex >= low[2] + (wb * symmetry) then

sym_shark = true

else sym_shark = false;

 

匯入上面函數後再來測試下面的策略:

 

Type : Signal, Name : SHRK-32 System

input: symmetry(.28);

vars: cont(0),

revb(0),

revs(0);

 

if cont <> 0 and marketposition = 0 then begin

if close < high[3 + cont] and close > low[3 + cont] then cont = cont + 1;

if close > high[3 + cont] then begin

buy close;

revb = cont + 3;

cont = 0;

end;

if close < low[3 + cont] then begin

sell close;

revs = cont + 3;

cont = 0;

end;

end;

if revb <> 0 then begin

if close > low[revb] then revb = revb + 1

else if close < low[revb] then begin

sell close;

revb = 0;

end;

end;

if revs <> 0 then begin

if close < high[revs] then revs = revs + 1

else if close > high[revs] then begin

buy close;

revs = 0;

end;

end;

if sym_shark(symmetry)[1] = true then begin

if close > high[3] then buy close;

if close < low[3] then sell close;

cont = cont + 1;

end;

if sym_shark(symmetry) = true and marketposition <> 0 then begin

exitlong close;

exitshort close;

end;

if barssinceentry = 78 then begin

if marketposition = 1 then begin

exitlong close;

buy open;

end;

if marketposition = -1 then begin

exitshort close;

sell open;

end;

end;

if revb > 100 then revb = 0;

if revs > 100 then revs = 0;

arrow
arrow
    全站熱搜

    wenschair 發表在 痞客邦 留言(1) 人氣()