第一、關于this bar和next bar的異同,您可以看一下帖子http://forums.icetech.com.cn/forum.php?mod=viewthread&tid=3314&highlight=this%2Bbar
第二、this bar on close、next bar at market、next bar at open,這三類語句都是發送的市價單,而市價單在MC中是有優先級的,無論是否允許多筆進場。
說的有點多了,還是等您有問題再逐個回復吧!
解決方案:
sell next bar at open-minmove* 10 point limit;
或者
buytocover next bar at open+minmove*10 point limit;
無論是市價其實可以理解為以漲跌停限價的委托單,即價格優先以對手價進行撮合成交。
而由于MC對于市價單是有優先級的,并且不允許同一次有多筆市價進場或者多筆市價出場,對于條件單沒有限制,那么就可以使用限價發送委托單,只不過這里的限價是一個局部區間限價,而不是漲跌停區間限價單。
?
第一、關于this bar和next bar的異同,您可以看一下帖子http://forums.icetech.com.cn/forum.php?mod=viewthread&tid=3314&highlight=this%2Bbar
第二、this bar on close、next bar at market、next bar at open,這三類語句都是發送的市價單,而市價單在MC中是有優先級的,無論是否允許多筆進場。
說的有點多了,還是等您有問題再逐個回復吧!
解決方案:
sell next bar at open-minmove* 10 point limit;
或者
buytocover next bar at open+minmove*10 point limit;
無論是市價其實可以理解為以漲跌停限價的委托單,即價格優先以對手價進行撮合成交。
而由于MC對于市價單是有優先級的,并且不允許同一次有多筆市價進場或者多筆市價出場,對于條件單沒有限制,那么就可以使用限價發送委托單,只不過這里的限價是一個局部區間限價,而不是漲跌停區間限價單。
?
非常感謝指導!
可能我沒有把問題描述清楚。
mc內部確實對應了有多種進出場方式,不過我沒有落腳在這里。
舉個例子:
1,給所有進場單編了號1…n,每次進場的量各不相同,編號為n的單買入n+1手
2,進場之后某個時刻出場,第一筆出場賣出m手,m>n+1就是說比最后那次進場單手數都大,但小于總持股數
3,如何在一個tick內實現賣出m手股票,所謂一個tick內,是指如果是tick周期,那么在程序運行一次的時候把單全部發出,不在一個tick內很容易實現,每次只賣一部分,人為標記一個變量來表示是不是賣完了就好,這里的主要問題是mc不允許在loop內部做出buy或者sell動作,一個tick內要完成有沒有別的方法?
4,進一步地,要求:后入場的買單先被賣出,其他要求一樣,能否實現(同樣,這個在多幾個的tick實現起來也沒什么困難)
這個的落腳點不在于this bar,next bar,而在于mc限定循環內部不能發單(當然這么操作的危險性很大,如果循環條件出了問題,實盤直接造成的后果很嚴重),但是如果明確知道一個大于零的整數又不是無窮大(比如一個變量,只是無法提前知道多大)次發單,危險性就沒那么大了,我想問的是mc內部有沒有這種機制,也就是在運行一次程序的過程中(如果周期是tick其實每個tick程序都被加載了一次)實現賣出變量X個單,3中的那個要求幾乎肯定要用到這樣的機制才能實現
(實際上我這個要求在實盤中作用不大,實際中不可能會有這么無理的要求,在接下來幾個tick完成了交易都是可接受的,類似于幾跳成交,不過這里要求一個tick內發單)
?
之所以強調所謂的tick,主要是這種周期比較小,突出了一次性要把單發出的要求,實盤中肯定不會這么干
所謂后入場的先被賣是指先賣n+1手最后進場多單,再賣n手比最后進場的多單
實際上mc內部應該有這種機制,total這個關鍵字的作用就是這樣,不過它是先進先出的原則,就是先平掉先進場的多單,實際上先平那個單在實盤并沒有區別,因為實際上是記賬的,每次都有個均值來表示盈虧。
請看:
[SameExitFromOneEntryOnce = false];
vars: var1(1);
if currentbar < 20 then
begin
buy (text(var1)) var1 share this bar on close;?
var1 = var1 + 1;
end;
if currentbar = 20 then
begin
sell var1*2 shares total next bar at market;
end;
在圖表上MC指示出來,它是從編號1的多單開始一直平到編號為9的多單,而且只賣了編號為9的多單中的4個share,我說的就是這個功能,但是,想換成后進先出。能否實現類似total的后進先出呢?
我的問題實際上就是問有沒有一個后進先出的“Total”,或者在MC內置的這些功能里給實現一個?
?
之所以強調所謂的tick,主要是這種周期比較小,突出了一次性要把單發出的要求,實盤中肯定不會這么干
所謂后入場的先被賣是指先賣n+1手最后進場多單,再賣n手比最后進場的多單
實際上mc內部應該有這種機制,total這個關鍵字的作用就是這樣,不過它是先進先出的原則,就是先平掉先進場的多單,實際上先平那個單在實盤并沒有區別,因為實際上是記賬的,每次都有個均值來表示盈虧。
請看:
[SameExitFromOneEntryOnce = false];
vars: var1(1);
if currentbar < 20 then
begin
buy (text(var1)) var1 share this bar on close;?
var1 = var1 + 1;
end;
if currentbar = 20 then
begin
sell var1*2 shares total next bar at market;
end;
在圖表上MC指示出來,它是從編號1的多單開始一直平到編號為9的多單,而且只賣了編號為9的多單中的4個share,我說的就是這個功能,但是,想換成后進先出。能否實現類似total的后進先出呢?
我的問題實際上就是問有沒有一個后進先出的“Total”,或者在MC內置的這些功能里給實現一個?