人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現在的位置:程序化交易>> 期貨公式>> (MC)multicharts>> MC知識>>正文內容

@Alex,請幫忙看看下面代碼是不是有問題? [MC]

  • MC用戶求助:

    采用tick周期

    目的是價格比13.10低0.04就買入,比13.10高0.05就賣出

    以買入為例:

    如果買入成功后,13.10變成13.06,比13.06高0.05賣出,比13.06低0.04買入,以此類推;

    vars:mpab(0),order_status(0),order_no(1),cen(13.10),up(0.05),down(0.04);{mpab記錄實盤證券帳號的總股數,order_status記錄成交狀態,cen代表當前參考價格,up,down分別為上下波動}

    if MarketPosition_at_Broker > 0 then

    ? ? mpab = MarketPosition_at_Broker;

    ?

    if mpab[2] > 0 then {試驗發現,無論給mpab什么值,發生了mpab = MarketPosition_at_Broker后,總是mpab[1]=0,所以參考bar設為3,mpab[2] >0 保證解決了初始0值的問題,如果初始是0,則condition1一開始都是成立的}

    ?

    begin?

    condition1 = mpab > mpab[1];

    condition2 = mpab < mpab[1];

    condition3 = mpab = mpab[1];

    condition4 = close - cen >= up;

    condition5 = cen - close >= down;

    if condition3 and order_status = 0 then

    begin

    ? ? if condition4 then

    ? ? begin

    ? ? ? ? sell 200 shares from entry(text(order_no)) next bar at market;

    ? ? ? ? print("----sell----");

    ? ? ? ? order_no = order_no -1;

    ? ? ? ? order_status = 1;

    ? ? end;

    ? ??

    ? ? if condition5 then

    ? ? begin

    ? ? ? ? order_no = order_no + 1;? ??

    ? ? ? ? buy (text(order_no)) 200 shares next bar at market;? ??

    ? ? ? ? print("++++buy++++");? ??

    ? ? ? ? order_status = 1;

    ? ? end;? ??

    end;

    ?

    if condition1 then?

    begin

    ? ? cen = cen + up;

    ? ? order_status = 0;

    end;

    ?

    if condition2 then?

    begin

    ? ? cen = cen - down;

    ? ? order_status = 0;

    end;

    end;

    print(cen,"? ? ",mpab,"? ? ",mpab[1],"? ? ",order_status ,"? ? ", order_no);

    問題出在實盤模擬的時候,打印了++++buy++++,但是圖上面沒有標定買入信號,mpab的值沒有變化,電腦右下也沒有彈出發出委托的氣泡,請問這是哪里除了問題?

    打印結果如下:?
    13.10? ? 101400.00? ? 101400.00? ?? ? 0.00? ?? ? 1.00
    ??13.10? ? 101400.00? ? 101400.00? ?? ? 0.00? ?? ? 1.00
    ++++buy++++
    ??13.10? ? 101400.00? ? 101400.00? ?? ? 1.00? ?? ? 2.00
    ??13.10? ? 101400.00? ? 101400.00? ?? ? 1.00? ?? ? 2.00
    ??13.10? ? 101400.00? ? 101400.00? ?? ? 1.00? ?? ? 2.00

    (來自舊論壇客戶,thgink)

    ?

  • MC回復討論一:

    您的代碼中有一個bug,您應該在開啟自動交易時手動輸入了初始倉位,這個也在您的初始參數order_no初始值為1中看出來了,我將在下面點出您的問題,假設都已經開啟自動交易了,并且手動輸入了101400股:

    第一、初始輸入會在圖表上標記"Initial Entry",所以按照您代碼中的方式,您一直賣不出去,因為您是from entry(text(order_no)),而不是from entry("Initial Entry")。

    第二、如果價格在開啟自動交易之后下降然后執行市價買入命令,我猜測您因為使用默認允許同一方向一筆進場,如果是這樣的話,因為圖表已經有初始多頭進場了,后續即使滿足進場條件也不會再多頭進場。

    第三、基于上面兩點,您肯定不能賣出股票也不能買入股票;另外,由于代碼“if MarketPosition_at_Broker > 0 then

    ? ? mpab = MarketPosition_at_Broker;”的存在,所以一旦mpab不為0,那么導致后續mpab一直不為0

    第四、另外,問一下,您使用是SA模式還是AA模式,使用的是真回報還是假回報?

    ?

  • MC回復討論二:

    SA,真回報

    設置的是同一方向允許6500筆進場

    這里的邏輯是昨日收盤,受傷已經有很多股票才會執行程序,如果沒有股票則什么也不做

    ?

    那個bug我也直到,所以真是的使用的是這個

    if condition4 then

    begin

    if order_no > 1 then?

    begin

    sell 200 shares from entry(text(order_no)) this bar on close;

    order_no = order_no -1;

    end

    else

    sell 200 shares from entry("Initial Entry") this bar on close;

    print("----sell----");

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    order_status = 1;

    end;

    ?

    這兩個似乎都不是問題的關鍵,問題的關鍵是MarketPosition_at_Broker不行,換成marketposition*currentshares初步看來就可以了,我本來的目標是想通過實時的獲取券商處的股票數,以判定實際上是否發生成交,可是加載策略的時候會把歷史數據計算一次,這會導致一些問題,但是也不是關鍵,不是歷史數據導致的問題就是發不出單

    我想請教:具體得知成交了用那種方式最靠譜?我指的相對靠譜是說確實成交了,比如掛單200股賣出,我確實賣了200股

    其實,只有一個方式才是穩妥的,就是能否根據時刻獲取持股數,比如在t時刻觸發條件,做出了買或賣,這時候將t時刻的持股數記錄下來,在對比t之后每個時刻的持股數,如果有變動,變動在預期值,這說明按要求發單且成交了。我這個方案的問題在于邏輯上要求得到瞬時變化,這要求我有點高了,可能也與multicharts的每個bar運行一次的邏輯有沖突。還像請教您一下,能否獲得比如一小時前的持倉數?雖然現在并不需要這么做了。

    ?

    ?

  • MC回復討論三:

    后來改成這樣了:

    [SameExitFromOneEntryOnce = false];

    vars:cen(13.40), tims(0),cur(0), up(0.03),down(0.03),cur_r(0),size(200),order_status(0),order_no(0),var1(0);

    ?

    var1 = 0;

    ?

    if 0 >= marketposition_at_broker then buy ("Initial Entry") 10000 shares this bar on close;

    cur = currentshares;

    if marketposition_at_broker> 0 then

    begin

    ? ? ? ? ? ? ? ? if order_status = 1 and var1 = 0 then

    ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? ? ? ? ? var1 = 1;

    ? ? ? ? ? ? ? ? ? ? ? ? print("order_status = 1 and var1 = 0 ",cur_r,"? ",cur," ",time_s);? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? ? ? ? ? if cur_r - cur >= size then

    ? ? ? ? ? ? ? ? ? ? ? ? begin?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("condition3:",cur_r,"? ",cur," ",time_s);

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? order_status = 0;

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cen = cen + up;

    ? ? ? ? ? ? ? ? ? ? ? ? end;? ? ? ??

    ? ? ? ? ? ? ? ? ? ? ? ? if cur - cur_r >= size then

    ? ? ? ? ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("condition4:",cur_r,"? ",cur," ",time_s);

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? order_status = 0;

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cen = cen - down;

    ? ? ? ? ? ? ? ? ? ? ? ? end;

    ? ? ? ? ? ? ? ? end;

    ?

    ? ? ? ? if close - cen >= up and order_status = 0 and var1 = 0 then

    ? ? ? ? begin

    ? ? ? ? ? ? ? ? print("condition1 and order_status = 0 and var1 = 0"," ",time_s);

    ? ? ? ? ? ? ? ? tims = time_s;

    ? ? ? ? ? ? ? ? if order_no >= 1 then

    ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? sell size shares from entry(text(order_no)) this bar on close;

    ? ? ? ? ? ? ? ? order_no = order_no - 1;

    ? ? ? ? ? ? ? ? end

    ? ? ? ? ? ? ? ? else

    ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? sell size shares from entry("Initial Entry") this bar on close;

    ? ? ? ? ? ? ? ? order_no = 0;

    ? ? ? ? ? ? ? ? end;

    ? ? ? ? ? ? ? ? print("----"," ",time_s);

    ? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? order_status = 1;? ? ? ??

    ? ? ? ? ? ? ? ? var1 = 1;? ? ? ??

    ? ? ? ? end;

    ? ? ? ? if cen - close >= down and order_status = 0 and var1 = 0 then

    ? ? ? ? begin

    ? ? ? ? ? ? ? ? print("condition2 and order_status = 0 and var1 = 0"," ",time_s);

    ? ? ? ? ? ? ? ? tims = time_s;

    ? ? ? ? ? ? ? ? order_no = order_no + 1;

    ? ? ? ? ? ? ? ? buy (text(order_no)) size shares this bar on close;

    ? ? ? ? ? ? ? ? print("++++"," ",time_s);

    ? ? ? ? ? ? ? ? order_status = 1;? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? var1 =1;

    ? ? ? ? end;?

    ? ? ? ? if time_s = tims then?

    ? ? ? ? begin

    ? ? ? ? print("time_s = tims "," ",time_s);?

    ? ? ? ? cur_r= currentshares;

    ? ? ? ? end;

    ? ? ? ??

    end;

    ?

    print(currentbar,"? ? ",var1, "? ? ",tims,"? ?",order_status,"? ? ",order_no,"? ? ",close,"? ?",cen,"? ? ",cur,"? ? ",cur_r,"? ? ",time_s);

    ? ? ? ??

    應該沒問題了。

    多謝指導!

    ?

    ?

  • MC回復討論四:

    后來改成這樣了:

    [SameExitFromOneEntryOnce = false];

    vars:cen(13.40), tims(0),cur(0), up(0.03),down(0.03),cur_r(0),size(200),order_status(0),order_no(0),var1(0);

    ?

    var1 = 0;

    ?

    if 0 >= marketposition_at_broker then buy ("Initial Entry") 10000 shares this bar on close;

    cur = currentshares;

    if marketposition_at_broker> 0 then

    begin

    ? ? ? ? ? ? ? ? if order_status = 1 and var1 = 0 then

    ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? ? ? ? ? var1 = 1;

    ? ? ? ? ? ? ? ? ? ? ? ? print("order_status = 1 and var1 = 0 ",cur_r,"? ",cur," ",time_s);? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? ? ? ? ? if cur_r - cur >= size then

    ? ? ? ? ? ? ? ? ? ? ? ? begin?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("condition3:",cur_r,"? ",cur," ",time_s);

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? order_status = 0;

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cen = cen + up;

    ? ? ? ? ? ? ? ? ? ? ? ? end;? ? ? ??

    ? ? ? ? ? ? ? ? ? ? ? ? if cur - cur_r >= size then

    ? ? ? ? ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("condition4:",cur_r,"? ",cur," ",time_s);

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? order_status = 0;

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cen = cen - down;

    ? ? ? ? ? ? ? ? ? ? ? ? end;

    ? ? ? ? ? ? ? ? end;

    ?

    ? ? ? ? if close - cen >= up and order_status = 0 and var1 = 0 then

    ? ? ? ? begin

    ? ? ? ? ? ? ? ? print("condition1 and order_status = 0 and var1 = 0"," ",time_s);

    ? ? ? ? ? ? ? ? tims = time_s;

    ? ? ? ? ? ? ? ? if order_no >= 1 then

    ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? sell size shares from entry(text(order_no)) this bar on close;

    ? ? ? ? ? ? ? ? order_no = order_no - 1;

    ? ? ? ? ? ? ? ? end

    ? ? ? ? ? ? ? ? else

    ? ? ? ? ? ? ? ? begin

    ? ? ? ? ? ? ? ? sell size shares from entry("Initial Entry") this bar on close;

    ? ? ? ? ? ? ? ? order_no = 0;

    ? ? ? ? ? ? ? ? end;

    ? ? ? ? ? ? ? ? print("----"," ",time_s);

    ? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? order_status = 1;? ? ? ??

    ? ? ? ? ? ? ? ? var1 = 1;? ? ? ??

    ? ? ? ? end;

    ? ? ? ? if cen - close >= down and order_status = 0 and var1 = 0 then

    ? ? ? ? begin

    ? ? ? ? ? ? ? ? print("condition2 and order_status = 0 and var1 = 0"," ",time_s);

    ? ? ? ? ? ? ? ? tims = time_s;

    ? ? ? ? ? ? ? ? order_no = order_no + 1;

    ? ? ? ? ? ? ? ? buy (text(order_no)) size shares this bar on close;

    ? ? ? ? ? ? ? ? print("++++"," ",time_s);

    ? ? ? ? ? ? ? ? order_status = 1;? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? var1 =1;

    ? ? ? ? end;?

    ? ? ? ? if time_s = tims then?

    ? ? ? ? begin

    ? ? ? ? print("time_s = tims "," ",time_s);?

    ? ? ? ? cur_r= currentshares;

    ? ? ? ? end;

    ? ? ? ??

    end;

    ?

    print(currentbar,"? ? ",var1, "? ? ",tims,"? ?",order_status,"? ? ",order_no,"? ? ",close,"? ?",cen,"? ? ",cur,"? ? ",cur_r,"? ? ",time_s);

    ? ? ? ??

    應該沒問題了。

    多謝指導!

    ?

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 511411198  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 国产成人黄色在线观看 | 色播在线永久免费视频网站 | 九九热久久免费视频 | 欧美在线观看视频一区 | 国产dvd毛片在线视频 | 国产小视频免费 | 884aa在线看片 | 欧美 日韩 国产在线 | 伊人婷婷色香五月综合缴激情 | 免费99视频有精品视频高清 | 日韩永久免费视频 | 欧美不卡网 | 亚洲不卡在线 | 久久精品国产欧美日韩亚洲 | www日韩中文字幕在线看 | 亚洲一区精品视频在线 | 亚洲精品第一国产综合野 | 丝袜第一页 | 久久精品亚洲欧美日韩久久 | 国产桃色在线成免费视频 | 在线欧洲成人免费视频 | 两个黑人一前一后好爽 | h片在线免费| 免费在线观看黄色网址 | 欧美日韩一区二区中文字幕视频 | 日韩精品一区二区三区免费观看 | 欧美图片在线视频 | 天天射日日干 | 免费黄色国产视频 | 午夜小影院 | 天天拍天天操 | 国产呦萝资源网站 | 日本久久精品免视看国产成人 | 色影视| 爆操网站 | 精品日本亚洲一区二区三区 | 亚洲天堂v | 亚洲一区二区三区高清不卡 | 日本三级在线观看免费 | 国内精品久久影视免费 | 综合影院 |