s8726413 發表於 13-3-31 18:13
"由上往下執行"的說法是有問題的,
例如:
if date=1130329 and time=1000 then buy next bar market;
程式碼由上往下"一行一行"執行稱為"直譯",
而MC的執行並非"直譯"而是"編譯",
以底下程式碼為例, 在進出訊號前和後分別加上print,
Print(date,time,marketposition,entryprice,"***");
if date=1130329 and time=1000 then buy next bar market;
if date=1130329 and time=1200 and marketposition=1 then sell next bar market;
if date=1130329 and time=1200 and marketposition=1 then sellshort next bar market;
Print(date,time,marketposition,entryprice);
您會發現輸出的結果是
1130329.001200.00 1.007878.00***
1130329.001200.00 1.007878.00
1130329.001205.00 -1.007884.00***
1130329.001205.00 -1.007884.00
1130329.001210.00 -1.007884.00***
1130329.001210.00 -1.007884.00
而非
1130329.001200.00 1.007878.00***
1130329.001200.00 1.007878.00
1130329.001205.00 1.007878.00***
1130329.001205.00 -1.007884.00
1130329.001210.00 -1.007884.00***
1130329.001210.00 -1.007884.00
另外, MC在圖表視窗的訊號和下單訊號是分開處理的,
您可以想成訊號是分開丟給圖表視窗運算和丟給下單機洗價,
A. 訊號成立時, 圖表視窗出現買賣箭頭
B. 下單機洗價符合條件則丟單給券商
而A和B是分開平行執行的,
最常見的問題就是明明圖表視窗的買賣箭頭都正確,
但實際下單機洗價丟單卻不一致.
以上論述我的用語可能不是說得很精準,
但基本上概念應該是正確的.
MC和TS在這部分的處理方式並不一樣.
MC 內建了IB等"國外券商"下單機,
但您想TSSUPPORT會為"台灣各券商"去內建下單機嗎?
注意喔, 是各券商喔, 而不是商品(台指)喔.
下單大師和MC是直接透過我上述A的管道,
這和凱衛下單機是透過B管道也是不一樣的.
=================================================
假如條件同時成立時,
進場訊號(BUY, SELLSHORT)會比出場訊號(SELL, BUYTOCOVER)優先執行,
而BUY 和 SELLSHORT哪個先動作, 就看哪個寫在前面.
if date=1130329 and time=1000 then buy ("LE") next bar market;
if date=1130329 and time=1000 then sell ("LX") next bar market;
if date=1130329 and time=1000 then buytocover ("SX") next bar market;
if date=1130329 and time=1000 then sellshort ("SE") next bar market;
setexitonclose;
以上面這個程式碼為例,
您會發現執行的順序是 LE -> SE -> SX
Power Language, Easy Language應該沒有S大說的優先權指令,
但實際上其一定有其執行順序的邏輯,
這邏輯一定不是隨機, 否則早就天下大亂了,
手冊上可能沒有解釋清楚,
最簡單的方法就是寫些測試碼看看其執行順序.
很可惜好像很少有人分享這方面的議題研究,
很高興今天能和S大討論此問題.
|