一、TB中的代碼是以begin開頭,以end結尾,但是在MC中,不是這樣的,可以參考一下if、while、for關鍵字和begin、end的組合應用。
二、您的 if 語句太多,您需要整理一下策略的邏輯,使策略邏輯嚴謹簡潔,之后寫出來的代碼才會嚴謹簡潔;很多 if 判斷語句可以合并在一起,if后面的執行語句使用begin和end組合;
if condition1 then begin
expression1;
expression1;
.....
end;
三、收盤平倉的代碼是有問題的:if判斷語句之后只有一條執行語句,但是如果想多條執行語句,需要使用begin和end組合;所以您的收盤平倉語句實際是if time>=1457 then sell next bar at market;這是一個完全的if判斷執行語句,后面的buytocover next bar at market; 實際上是在每根bar都會執行的語句,不被前面的if控制。
四、兩個同時滿足條件的市價單,在回測的時候是顯示發出兩筆市價單,但在實時交易的時候只會發出一筆市價單;這點只是市價單有點特別。
?
一、TB中的代碼是以begin開頭,以end結尾,但是在MC中,不是這樣的,可以參考一下if、while、for關鍵字和begin、end的組合應用。
二、您的 if 語句太多,您需要整理一下策略的邏輯,使策略邏輯嚴謹簡潔,之后寫出來的代碼才會嚴謹簡潔;很多 if 判斷語句可以合并在一起,if后面的執行語句使用begin和end組合;
if condition1 then begin
expression1;
expression1;
.....
end;
三、收盤平倉的代碼是有問題的:if判斷語句之后只有一條執行語句,但是如果想多條執行語句,需要使用begin和end組合;所以您的收盤平倉語句實際是if time>=1457 then sell next bar at market;這是一個完全的if判斷執行語句,后面的buytocover next bar at market; 實際上是在每根bar都會執行的語句,不被前面的if控制。
四、兩個同時滿足條件的市價單,在回測的時候是顯示發出兩筆市價單,但在實時交易的時候只會發出一筆市價單;這點只是市價單有點特別。
?
“四、兩個同時滿足條件的高價單,在回測的時候是顯示發出兩筆市價單,但在實時交易的時候只會發出一筆市價單;這點只是市價單有點特別。”這個是什么意思?沒太看懂。謝謝
?
抱歉,打錯字了,是市價單,不是高價單,已經更改過來了。
if condition1 then buy("first") next bar at market;
if condition2 then buy("second") next bar at market;
在回測中,當condition1和condition2兩個條件在某根bar上同時成立的時候,圖表上顯示在下一根bar上有兩筆委托單;但是在實時交易中,當這兩個條件同時滿足的時候,實際上只會發送第一筆市價單(”first")到交易所;在這點,市價單回測和實時不一樣,但是對條件單(限價和停損單等)這點是一樣的(回測是兩筆,實時也是兩筆);您可以測試一下,需要在策略屬性中設置允許多筆進場。
?
抱歉,打錯字了,是市價單,不是高價單,已經更改過來了。
if condition1 then buy("first") next bar at market;
if condition2 then buy("second") next bar at market;
在回測中,當condition1和condition2兩個條件在某根bar上同時成立的時候,圖表上顯示在下一根bar上有兩筆委托單;但是在實時交易中,當這兩個條件同時滿足的時候,實際上只會發送第一筆市價單(”first")到交易所;在這點,市價單回測和實時不一樣,但是對條件單(限價和停損單等)這點是一樣的(回測是兩筆,實時也是兩筆);您可以測試一下,需要在策略屬性中設置允許多筆進場。