2615  

 

進入Multicharts程式交易,初學者剛開始接觸寫語法,會用到的程式語言叫做 powerlanguage;建議可以買這本書來研究,它是一本工具書,可以評估看看這樣的程式語言對本身會不會太難懂,如果有興趣可以進一步研究

這篇文章簡單概略介紹 powerlanguage

保留字

好比學英文會用到的基本單字,這是組成程式語言的基本要件

231  

常用的保留字

232  

234  

執行新倉買進或新倉賣出,多單平倉或空單平倉;最重要的四個指令

235  

進場的方式 (next bar at market、Stop、Limit...)

決定進場的口數 contracts 。例如 buy 2 contracts next bar at market

SetStopLoss(金額):定額停損。

SetProfitTarget(金額):定額停利。

SetPercentTrailing(金額,百分比):獲利多少金額後,折返多少百分比出場。

SetDollarTrailing(金額):進場後由最高獲利點起算,損失多少金額出場。

SetBreakEven(金額):獲利多少金額後回到進場點就出場

若有使用 SetPercentTrailing 及 SetDollarTrailing 時要特別注意,記得打開精密回測的功能來做交易及回測。

 

輸入參數input 參數可以透過外部調整

主要是做為人跟程式間的溝通橋樑(窗口),我們可以透過參數對程式下達指令

例如:12MA、9KD 等。

也可以用來指定下單口數或每日交易次數等。

只要是我們希望程式完成後,由人工指定改變

的資料都可設成參數。

Inputs: pLen(0);

value1 = average(close, pLen);

自訂變數Variables 也就是儲存空間

主要的資料型態有:數字(number)、文字(char、string)、布林(true/false)

變數是程式內最基礎的元件,可以說是要蓋大樓時的磚塊,所有的功能都是由它堆砌而成的,變數也常因為使用的方法不同而給予不同的名稱

 vars: vLen(0);

vLen = 100;

value1 = average(close, vLen);

陣列(Arrays)一堆變數的集合

陣列本身是一堆連續的變數,我們使用一個名稱加上索引值(Index)來指定或叫用它,因此省去定義一大堆變數名稱及叫用上的麻煩,因為它有連續排列的關係,所以有利於連續資料的處理。

數字運算時償會用到的函數

Mod:取餘數

IntPortion:取整數

FracPortion:取小數

ABSValue:取絕對值

Neg:取負的絕對值

Power:N次方

SquareRoot:開根號

標點符號

236  

範例:

前一根K棒最高點 highest[1]

前一天的收盤價 CloseD(1);

Value1的前一個值 Value1[1];

 

常用到的基本程式流程

If….then

If….then….begin….end;

If...then...Else

If...then begin....End else If

迴圈指令

For 數值變數=起始值 to 結束值 begin ... End;

例如

for Value1 = 0 to Len 1 begin

var0 = var0 + 1 ;

end ;

 

PowerLanguage的公式基本三大類型  函數、指標、訊號

237  

函數:一段程式集

我們在開發程式時,有些程式碼是經常使用的,例如平均值或是計算結算日,但是到處都寫一樣的程式碼,造成程式的可讀性低,而且當需要修改時,要改一大堆地方,太麻煩而且容易遺漏,所以可以用函數把這些程式碼給予一個函數名稱,以後直接用這一個名稱叫用它即可。

範例

Summation函數

(PriceValue( NumericSeries ), Len( NumericSimple)):Return(Numeric)

(參數1(數值時序),參數2(簡單數值)):回傳值(數值)

Summation內容

inputs: PriceValue( numericseries ), Len( numericsimple ) ;

variables: var0( 0 ) ;

var0 = 0 ;

for Value1 = 0 to Len - 1

begin

var0 = var0 + PriceValue[Value1] ;

end ;

Summation = var0 ;

指標:一種以繪圖為目的的程式集合。

指標主要的功能是把運算出來的數值,用圖像的方式表達出來,讓使用者一目了然這些數值的前後關係,這是人工交易者最常使用的功能。而且可以透過警示指令,用聲音、視窗盒、E-mail的方式提醒使用者

範例

var0 = AverageFC( Price, Length ) ;

condition1 = Displace >= 0 or CurrentBar > AbsValue(Displace) ;

if condition1 then begin

Plot1[Displace]( var0, "Avg" ) ; (Plot就是畫圖的意思)

end;

劃指標的幾種類型

線條(line)  柱狀圖(Histogram) 點(Point)  十字(Cross) K棒(Bar High、Bar low、left tick、right tick)

設定指標的類型、樣式、寬度等

238  

把K棒塗上自訂顏色

PlotPaintBar (BarHigh, BarLow, BarOpen, BarClose <,"PlotName"<,PlotColor <,Default <,LineWidth >>>>)

PlotPaintBar (最高價, 最低價, 開盤價, 收盤價 <,“指標名稱”<,指標色彩 <,Default <,線寬>>>>)

投顧老師最喜歡用的紅買綠賣K棒

if close > averageFC(close,20) then

PlotPaintBar(High,Low,Open,Close,"",Red)

else PlotPaintBar(High,Low,Open,Close,"",green);

Text_:文字標記

Text_new(日期,時間,價格,“顯示文字”)

範例

If high>high[1] then text_new(data,time,high,”OH”);

警示功能 Alert

if Displace <= 0 then begin

condition1 = Price crosses over var0 ;

if condition1 then Alert( "Price crossing over average")

else begin

condition1 = Price crosses under var0 ;

if condition1 then Alert( "Price crossing under average" ) ;

end ;

end;

訊號:主要用於交易結果的表示。

開發者在程式中使用交易指令告訴程式交易的時機點,於是程式便可以此交易點進行交易的各種評估分析,進而產生回測報表。

範例

inputs: pLength(14);

vars: vMA(0), vDir(0);

vMA = Average(c, pLength);

if vMA <= vMA[1] then begin

vDir = -1;

end else if vMA >= vMA[1] then begin

vDir = 1;

end;

if vDir = -1 then begin

sellshort next bar at market;

end else if vDir = 1 then begin

buy next bar at market;

end;

 

 

arrow
arrow

    元大期貨楊宗儒 發表在 痞客邦 留言(0) 人氣()