MultiCharts 64 Power Language Editor
- UID
- 2
- 积分
- 2892817
- 威望
- 1396440 布
- 龙e币
- 1496377 刀
- 在线时间
- 13326 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-26
|
MultiCharts 64 Power Language Editor
注意事項
Compile error,使用夠久必中
腳本內容程式碼沒有大小寫之區別
開新檔案,三種程式腳本
函數腳本:用來呼叫幫忙 (注意:新增時序函數時不要選自動,會選擇性出錯)
指標腳本:用來做 圖表視覺呈現,只能看不能Call
訊號腳本:用來執行圖表交易
交易所使用之策略為”訊號”腳本,腳本內需要預先建立之函數如MP、_Settlement會預先建立好,命名以前綴 _下底線 來讓未來自己做的策略、訊號在列表中排序在一起。
在程式腳本中,各顏色程式碼之意義:
藍色:內建程式碼
粉紅色:自定義之變數,使用括號給定 (參數),常在腳本開始以input指定
咖啡色:系統內建變數,初始為空值,可以拿來供計算使用
紫色:函數腳本,點選右鍵可查看詳細程式碼
綠色:在/之後的程式碼,註解用途,系統不執行
淺綠色:宣告”字串”名稱
深紅色:介係詞
灰色:腳步無法認知此字串用途,compile會失敗
資料格式
數值(Numeric):實數
字串(String):”Hello World!” (字串不支援中文)
布林(TrueFalse):true/false
NumericSimple: 簡單數值
NumericSeries: 時序數值
語法、內建程式碼 (關鍵字)
宣告變數語法
var: 變數名稱(初始值)
範例:
var: x(0), y(1), z(false)
# 變數的初始值不能是變動值
內建預設變數
PLE預設可以使用之…
變數:value1~99,初始值為0
狀態:condition1~99,初始值為false
宣告參數語法
input: 參數名稱(初始值)
範例:
input: x(0), y(1), z(false)
# 參數是用來設定最佳化區間
# 參數的初始值可以是變動的,並決定參數的資料格式
# 參數經宣告且新增訊號至圖表後,需要從腳本外部修改初始值
時序變數 [n]
[Example]
close[1], open[2], high [2], low[3]
n能支援的長度 = 策略運算最大使用K棒數量
流程控制
if…then
if…then, else if…then, else…;
begin…end;
商品行情
3. 價格
open
close/c
high
low
4. 日期與時間
Date/d:傳回目前K棒結束日期。日期格式為YYYMMdd的數值,YYY為自1900年起的年份。
Time/t:傳回目前K棒的收盤時間。時間格視為HHMM,24小時制
close/c
high
low
5. 成交量
Volume/v:成交股數。
Ticks:成交股數。
交易時段
sessionlastbar:判斷是否為交易時段的最後一根K棒,回傳 True/False
繪圖
交易訊號及委託
2. 進出場委託
買賣動作
[多頭部位]
buy:建立一個多頭部位
# 當一個buy指令成交時,其他在倉的空頭部位,將會被平倉
sell:全部或部分平倉特定或全部的多頭部位
[空頭部位]
sellshort/sell short:建立一個空頭部位
# 當一個sellshort指令成交時,其他在倉的多頭部位,將會被平倉
buytocover/buy to cover:全部或部分平倉特定或全部的空頭部位
委託數量
share
shares
contract
contracts
# 指定委託的數量
進場訊號名稱
entry:使用在策略的出場指令中,指定進場訊號名稱。一個出場訊號僅能搭配一個進場訊號語法:from entry("進場訊號名稱") next bar...
委託時機
this bar:指定交易時間為目前的K棒
next bar:指定交易時間為下一根的K棒
委託價位
market:市價單
語法:at market
stop:停止單
# 停止單會在指定或更差的價格成交
語法:at 交易價格 stop
limit:限價單
# 限價單會在指定或更好的價格成交
語法:at 交易價格 limit
3. 內建出場函數
setexitonclose:收盤出場
setstoploss:停損出場
setprofittarget:停利出場
setbreakeven:損益兩平出場
setpercenttrailing:固定比例折返出場
setdollartrailing:固定金額折返出場
# SET類指令可以進行當根K棒出場
4. 策略部位
entryname:傳回指定部位第一筆進場的訊號"名稱"
entryprice:傳回指定部位第一筆進場的訊號"價格"
marketposition:傳回代表指定部位多空狀態的數值
#只有三個數值 0 = 沒有部位;1 = 多單部位;-1 = 空單部位
currentcontracts:傳回目前部位口數的數值
5. 策略績效
contractprofit
maxpositionprofit:傳回指定部位持有期間內出現的最大獲利數值
grossprofit
grossloss
netprofit
totalgrades
Maxiddrawdown
日期
時間
狀態
long:多
Short:空
語法結構:
委託動作(“訊號名稱”) + 口數 + 橫軸(時間) + 縱軸(價格) + 委託單種類;
next bar market
較貼近現實
# 參數是用來設定最佳化區間
# 參數的初始值可以是變動的,並決定參數的資料格式
# 參數經宣告且新增訊號至圖表後,需要從腳本外部修改初始值
函數
countif(條件式, n):回傳過去n根K棒(含最後一根)符合條件的次數
[Example] countif(close of data2 > close[1] of data2, x1) = y1
回傳過去x1根K棒(判別: FINI今日收盤 > 昨日收盤)之數目 指定給 y1這個值,所以 y1 <= x1才合乎邏輯
average(close, n):回傳過去n根K棒close價位的均值
編譯
以PLE撰寫完成腳本後,進行存檔,以及按F3進行編譯,才能正確使用在MC主程式或PT (Portfolio Trader)
解決Overfitting
參數不要太多
投資組合 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|