請教程式問題
本帖最後由 googleandy 於 12-10-21 09:37 編輯小的也從頭開始學習 Multicharts, 問一個簡單問題, 請勿見笑.
程式交易最怕 "無窮迴圈". 失控以至於不斷地下單.
上面程式沒有以 MarketPosition 變數控制,
請問 為何沒有失控以至於不斷地下單?
謝謝!
因為在"設定策略 --> 屬性"的設定, 有一個"部位限制"可以限制同方向進場的次數,
Andy大如果把這選項勾起, 設成1000次, 就會不斷的進場, 不然MC只限定進場一次
bacardi 發表於 12-10-21 09:55 static/image/common/back.gif
因為在"設定策略 --> 屬性"的設定, 有一個"部位限制"可以限制同方向進場的次數,
Andy大如果把這選項勾起,...
原來如此, 謝謝您!{:4_209:} sell是多單平倉。
有多單才會平倉的樣子。 winfast48 發表於 12-10-21 10:29 static/image/common/back.gif
sell是多單平倉。
有多單才會平倉的樣子。
對哦,
Buy ---> Sell
SellShort ---> BuyToRecover
謝謝!
補充內容 (12-10-22 08:22):
更正,應該是buytocover才對。 winfast48 發表於 12-10-21 10:29 static/image/common/back.gif
sell是多單平倉。
有多單才會平倉的樣子。
再加入二行比較合理.
哈, 這樣 手中部位 非多即空. 對吧?
MC雖然有外部保護機制可以避免重複下單情況,
不過還是應該養成習慣將控制變數加上去比較好!
畢竟程式碼有可能會越寫越長, 條件越來越複雜,
程式中的控制變數就變得很重要了...
{:4_153:} googleandy 發表於 12-10-21 10:57 static/image/common/back.gif
再加入二行比較合理.
哈, 這樣 手中部位 非多即空. 對吧?
buy完 如果遇到 sellshort ,是"多空翻單" (多變空)
buy完 如果遇到 sell,"多單平倉"
sellshort完 如果遇到 buy ,是"多空翻單" (空變多)
sellshort完 如果遇到 buytocover,"多單平倉"
可能還要再注意一下
補充內容 (12-10-21 21:29):
sellshort完 如果遇到 buytocover,"空單平倉" 改一下,這個錯了 chrisiflp 發表於 12-10-21 11:11 static/image/common/back.gif
MC雖然有外部保護機制可以避免重複下單情況,
不過還是應該養成習慣將控制變數加上去比較好!
是的,我個人以前學過VB,
現在從頭學MC ,
程式最怕無限迴圈,
自行用控制變數比較可靠。
雙巴神 發表於 12-10-21 11:16 static/image/common/back.gif
buy完 如果遇到 sellshort ,是"多空翻單" (多變空)
buy完 如果遇到 sell,"多單平倉"
是的,
如果要更謹慎一點,
可以用current Contracts來控制,
如果有正的部位,才可執行sell,
如果有負的部位,才可執行buytoRecover,
總之,寧可用笨且繁雜的方法,也要嚴謹一點。
Thank you!
感謝andy大的發文,以及雙巴神的補充說明,
總有一天,也是會碰到類似這樣的問題 謝謝提供這個 思考的好方向! 菜鳥正蹲在旁邊努力做筆記學習中........{:4_661:} 本帖最後由 googleandy 於 12-10-21 20:19 編輯
雙巴神 發表於 12-10-21 11:16 static/image/common/back.gif
buy完 如果遇到 sellshort ,是"多空翻單" (多變空)
buy完 如果遇到 sell,"多單平倉"
稍稍懂了,
SellShort 和 Sell 一字之差, 差好多!
我希望 收盤價>5均, 做多一口,
收盤價<5均,平倉且反手空一口,
手上永遠有部位, 非多即空,
部位起始值先用 -1
練習而已, 程式不一定正確.
--------------------------------------------------------------------------
var: LenA(5); var: NumberOfText(0); var:MyPosition(-1);
if close > Average(close,LenA) then begin
if MyPosition=-1 then begin
buy 2 shares this bar on close;
MyPosition=MyPosition+2;
end;
text_new(D,T,h+2, NumToStr(MyPosition ,0));
NumberOfText=NumberOfText+1;
text_setbgcolor(NumberOfText,Blue);
end;
if close < Average(close,LenA) then begin
if MyPosition=1 then begin
Sell 2 shares this bar on close;
MyPosition=MyPosition-2;
end;
text_new(D,T,h+2, NumToStr(MyPosition ,0));
NumberOfText=NumberOfText+1;
text_setbgcolor(NumberOfText,Blue);
end;
-------------------------------------------------------------------------
結果如下:
上面程式,
把 Sell 一字 改成 SellShort 結果大不相同
一字之差,相差一倍!
不可不慎.
補充內容 (12-10-22 08:27):
buy 2 shares this bar on close;
跟原先想像的不同.
意為:平掉所有空單(不論多少口),再建立2口多單。 雙巴神 發表於 12-10-21 11:16 static/image/common/back.gif
buy完 如果遇到 sellshort ,是"多空翻單" (多變空)
buy完 如果遇到 sell,"多單平倉"
雙大, 是不是可以下一個結論:
Buy --- 建立新多倉,
SellShort --- 建立新空倉,
MC只對有 新倉 才會回測, 對嗎?