COCO研究院

 找回密碼
 註冊
搜索
查看: 7355|回復: 33

請教程式問題

[複製鏈接]
發表於 12-10-21 09:35 | 顯示全部樓層 |閱讀模式
本帖最後由 googleandy 於 12-10-21 09:37 編輯

001.png

小的也從頭開始學習 Multicharts, 問一個簡單問題, 請勿見笑.
程式交易最怕 "無窮迴圈". 失控以至於不斷地下單.

上面程式沒有以 MarketPosition 變數控制,
請問 為何沒有失控以至於不斷地下單?
謝謝!






評分

參與人數 1金錢 +2 收起 理由
太極陰陽 + 2 很棒的文章,感恩!

查看全部評分

發表於 12-10-21 09:55 | 顯示全部樓層
因為在"設定策略 --> 屬性"的設定, 有一個"部位限制"可以限制同方向進場的次數,
Andy大如果把這選項勾起, 設成1000次, 就會不斷的進場, 不然MC只限定進場一次

設定策略

設定策略



評分

參與人數 1金錢 +5 收起 理由
googleandy + 5 謝謝您!

查看全部評分

 樓主| 發表於 12-10-21 10:00 | 顯示全部樓層
bacardi 發表於 12-10-21 09:55
因為在"設定策略 --> 屬性"的設定, 有一個"部位限制"可以限制同方向進場的次數,
Andy大如果把這選項勾起,  ...

原來如此, 謝謝您!
發表於 12-10-21 10:29 | 顯示全部樓層
sell是多單平倉。
有多單才會平倉的樣子。

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 這也是要注意的細節, 感恩!

查看全部評分

 樓主| 發表於 12-10-21 10:41 | 顯示全部樓層
winfast48 發表於 12-10-21 10:29
sell是多單平倉。
有多單才會平倉的樣子。

對哦,

Buy ---> Sell
SellShort ---> BuyToRecover

謝謝!


補充內容 (12-10-22 08:22):
更正,應該是buytocover才對。
 樓主| 發表於 12-10-21 10:57 | 顯示全部樓層
winfast48 發表於 12-10-21 10:29
sell是多單平倉。
有多單才會平倉的樣子。

002.png

再加入二行比較合理.
哈, 這樣 手中部位 非多即空. 對吧?


發表於 12-10-21 11:11 | 顯示全部樓層
MC雖然有外部保護機制可以避免重複下單情況,
不過還是應該養成習慣將控制變數加上去比較好!

畢竟程式碼有可能會越寫越長, 條件越來越複雜,
程式中的控制變數就變得很重要了...

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 対,應自行寫程式控制。

查看全部評分

發表於 12-10-21 11:16 | 顯示全部樓層
googleandy 發表於 12-10-21 10:57
再加入二行比較合理.
哈, 這樣 手中部位 非多即空. 對吧?

buy完 如果遇到 sellshort ,是"多空翻單" (多變空)

buy完 如果遇到 sell,"多單平倉"

sellshort完 如果遇到 buy ,是"多空翻單" (空變多)

sellshort完 如果遇到 buytocover,"多單平倉"


可能還要再注意一下



補充內容 (12-10-21 21:29):
sellshort完 如果遇到 buytocover,"空單平倉"   改一下,這個錯了

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 很棒的文章,感恩!

查看全部評分

 樓主| 發表於 12-10-21 11:59 | 顯示全部樓層
chrisiflp 發表於 12-10-21 11:11
MC雖然有外部保護機制可以避免重複下單情況,
不過還是應該養成習慣將控制變數加上去比較好!

是的,我個人以前學過VB,
現在從頭學MC ,  


程式最怕無限迴圈,
自行用控制變數比較可靠。


 樓主| 發表於 12-10-21 12:14 | 顯示全部樓層
雙巴神 發表於 12-10-21 11:16
buy完 如果遇到 sellshort ,是"多空翻單" (多變空)

buy完 如果遇到 sell,"多單平倉"

是的,
如果要更謹慎一點,
可以用current Contracts來控制,
如果有正的部位,才可執行sell,
如果有負的部位,才可執行buytoRecover,
總之,寧可用笨且繁雜的方法,也要嚴謹一點。
Thank you!
發表於 12-10-21 15:23 | 顯示全部樓層
感謝andy大的發文,以及雙巴神的補充說明,
總有一天,也是會碰到類似這樣的問題

評分

參與人數 1金錢 +1 收起 理由
googleandy + 1 嗯, 一起學習.

查看全部評分

發表於 12-10-21 15:42 | 顯示全部樓層
謝謝提供這個 思考的好方向!

評分

參與人數 1金錢 +1 收起 理由
googleandy + 1 我也才開始學MC.

查看全部評分

發表於 12-10-21 16:17 | 顯示全部樓層
菜鳥正蹲在旁邊努力做筆記學習中........

評分

參與人數 2金錢 +2 收起 理由
雙巴神 + 1 賣給!!妳人工就賺翻了!
googleandy + 1 really? 謙虛吧.

查看全部評分

 樓主| 發表於 12-10-21 20:12 | 顯示全部樓層
本帖最後由 googleandy 於 12-10-21 20:19 編輯
雙巴神 發表於 12-10-21 11:16
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-1.png
Sell-2.png

上面程式,
Sell 一字 改成 SellShort 結果大不相同

SellShort-1.png
SellShort-2.png

一字之差,相差一倍!
不可不慎.






補充內容 (12-10-22 08:27):
        buy 2 shares this bar on close;      
跟原先想像的不同.
意為:平掉所有空單(不論多少口),再建立2口多單。
 樓主| 發表於 12-10-21 20:36 | 顯示全部樓層
雙巴神 發表於 12-10-21 11:16
buy完 如果遇到 sellshort ,是"多空翻單" (多變空)

buy完 如果遇到 sell,"多單平倉"

雙大, 是不是可以下一個結論:

   Buy --- 建立新多倉,
   SellShort --- 建立新空倉,

MC只對有 新倉 才會回測, 對嗎?
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-25 06:35

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |