進入Multicharts程式交易的領域,初學者剛開始接觸如何寫語法
會用到的程式語言叫做powerlanguage
建議可以買這本書來研究,它是一本工具書
透過這篇文章先簡單概略介紹
可以評估看看這樣的程式語言對本身會不會太難懂,如果有興趣可以進一步研究
保留字
好比學英文會用到的基本單字,這是組成程式語言的基本要件
常用的保留字
執行新倉買進或新倉賣出,多單平倉或空單平倉;最重要的四個指令
進場的方式 (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:開根號
標點符號
範例:
前一根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的公式基本三大類型 函數、指標、訊號
函數:一段程式集
我們在開發程式時,有些程式碼是經常使用的,例如平均值或是計算結算日,但是到處都寫一樣的程式碼,造成程式的可讀性低,而且當需要修改時,要改一大堆地方,太麻煩而且容易遺漏,所以可以用函數把這些程式碼給予一個函數名稱,以後直接用這一個名稱叫用它即可。
範例
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)
設定指標的類型、樣式、寬度等
把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;
文章標籤
全站熱搜
離婚證人 、台北離婚證人 、新竹離婚證人 、彰化離婚證人 、高雄離婚見證人
遺囑見證人 、結婚證人
留言列表