COCO研究院

 找回密碼
 註冊
搜索
查看: 24498|回復: 83

Amibroker接下單大師測試

[複製鏈接]
發表於 11-7-26 22:12 | 顯示全部樓層 |閱讀模式
本帖最後由 GnuHomot 於 11-7-26 10:16 PM 編輯

小弟也是入門初學者,來拜碼頭。
參考ashell大的文章改了一下程式碼,利用paramtrigger()可以在參數界面用按按鈕的方式來測試下單大師是否有收到訊號。

原先ashell大沒有處理時間格式的問題,小弟用笨方法也有處理了。

但是我有發現這個地方有個問題,就算我送出"2011/7/26 下午 08:45:30"的字串,下單大師照樣可以收到訊號,但我懷疑其實它會沒作用???不曉得這點有沒有前輩試過了?

程式碼裡面的辨識碼我是用ABMTX,按鈕如果沒反應,最有可能就是這裡和下單大師那裡沒設定好。

  1. function newDateTimeStr()
  2. {

  3.         newNowDateTime=Now(0);

  4.         sYear=StrLeft(Now(1),4);
  5.         //_TRACE("sYear: "+sYear);

  6.         sDate=StrRight(Now(1),StrLen(Now(1))-5);
  7.         //_TRACE("sDate: "+sDate);

  8.         iMonth=StrToNum(sDate);
  9.         if(iMonth<10)
  10.         sMonth="0"+NumToStr(iMonth,1.0);
  11.         else
  12.         sMonth=NumToStr(iMonth,1.0);
  13.         //_TRACE("sMonth: "+sMonth);


  14.         if(iMonth<10)
  15.         sDay=StrMid(sDate,2,2);
  16.         else
  17.         sDay=StrMid(sDate,3,2);

  18.         iDay=StrToNum(sDay);
  19.         if(iDay<10)
  20.         sDay="0"+NumToStr(iDay,1.0);
  21.         else
  22.         sDay=NumToStr(iDay,1.0);
  23.         //_TRACE("sDay: "+sDay);

  24.         
  25. newNowDateTime=sYear+"/"+sMonth+"/"+sDay+" "+Now(4);
  26. //_TRACE("newNowDateTime: "+newNowDateTime);

  27. return newNowDateTime;
  28. }


  29. _SECTION_BEGIN("OrderMaster_Initialize");

  30. trigger=ParamTrigger("OrderMaster Initialize", "Initialize");
  31. if(trigger)
  32. {
  33. OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");

  34. NowPosition = OMComAPI.GetNowPosition("ABMTX");
  35. if(NowPosition>99990)
  36. NowPosition=0;

  37. OMactive=OMComAPI.IniDllAndPosition("ABMTX", NowPosition);
  38. _TRACE(WriteIf(OMactive, "Success Set: " +WriteVal(NowPosition,1.0), "fail"));
  39. }

  40. _SECTION_END();

  41. _SECTION_BEGIN("OrderMaster_BuyOrder");

  42. trigger=ParamTrigger("OrderMaster Buy Order", "Buy");
  43. if(trigger)
  44. {

  45. TimeFormat=1;
  46. //TimeFormat==0; Format like this: 2011/7/1 13:40:45
  47. NowDateTime=Now(0);//before using, change OS system datetime format first.

  48. //TimeFormat==1;//Format like this: 2011/7/1 XXXX 01:40:45
  49. if(TimeFormat==1)
  50. NowDateTime=newDateTimeStr();

  51. OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");

  52. NowPosition = OMComAPI.GetNowPosition("ABMTX")+1;
  53. NowClose=0.1;

  54. rtn=OMComAPI.GoOrder("ABMTX","",NowDateTime,Nowposition,Nowclose);

  55. _TRACE(WriteIf(rtn, "Buy "+NumToStr(NowPosition,1.0)+"@"+WriteVal(NowClose)+"@"+NowDateTime, "fail"));
  56. }

  57. _SECTION_END();


  58. _SECTION_BEGIN("OrderMaster_SellOrder");

  59. trigger=ParamTrigger("OrderMaster Sell Order", "Sell");
  60. if(trigger)
  61. {

  62. TimeFormat=1;
  63. //TimeFormat==0; Format like this: 2011/7/1 13:40:45
  64. NowDateTime=Now(0);//before using, change OS system datetime format first.

  65. //TimeFormat==1;//Format like this: 2011/7/1 XXXX 01:40:45
  66. if(TimeFormat==1)
  67. NowDateTime=newDateTimeStr();

  68. OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");

  69. NowPosition = OMComAPI.GetNowPosition("ABMTX")-1;
  70. NowClose=0.1;

  71. rtn=OMComAPI.GoOrder("ABMTX","",NowDateTime,Nowposition,Nowclose);

  72. _TRACE(WriteIf(rtn, "SELL "+NumToStr(NowPosition,1.0)+"@"+WriteVal(NowClose)+"@"+NowDateTime, "fail"));
  73. }

  74. _SECTION_END();


  75. _SECTION_BEGIN("OrderMaster_GetNowPosition");
  76. trigger=ParamTrigger("OrderMaster GetNowPosition", "Get Now Position");
  77. if(trigger)
  78. {
  79. OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");

  80. Nowposition= OMComAPI.GetNowPosition("ABMTX");

  81. _TRACE( "Now Position: "+NumToStr(Nowposition,1.0) );
  82. }
  83. _SECTION_END();
複製代碼

評分

參與人數 1金錢 +2 收起 理由
oneman001 + 2

查看全部評分

發表於 11-7-26 22:20 | 顯示全部樓層
大大厲害~ 感謝了!
發表於 11-7-26 22:28 | 顯示全部樓層
下單大師的萬用API-Java範例是小弟提供的。呵~
發表於 11-7-26 22:31 | 顯示全部樓層
AB 真的太亂 阿怎起頭
發表於 11-7-26 22:32 | 顯示全部樓層
下單大師的是小弟提供的。呵~
philipz 發表於 11-7-26 10:28 PM



   大大是程式高手
 樓主| 發表於 11-7-26 22:34 | 顯示全部樓層
回復 3# philipz


   疑??我以為Amibroker的範例是ashell大提供的
發表於 11-7-26 22:36 | 顯示全部樓層
回復  philipz


   疑??我以為Amibroker的範例是ashell大提供的
GnuHomot 發表於 11-7-26 10:34 PM



    我是Java範例。
 樓主| 發表於 11-7-26 22:40 | 顯示全部樓層
回復 7# philipz


感謝熱心的提供
不曉得有沒有前輩知道時間字串的問題
 樓主| 發表於 11-7-26 22:41 | 顯示全部樓層
回復 2# kilroy


   之後可能還有很多問題要向K大請教耶{:4_84:}
發表於 11-7-26 23:11 | 顯示全部樓層
   之後可能還有很多問題要向K大請教耶
GnuHomot 發表於 11-7-26 10:41 PM



   大大客氣了,小弟懂的不多
   盡力了 XD
發表於 11-7-26 23:20 | 顯示全部樓層
回復 3# philipz

原來我們都受你的照顧!!謝謝你的無私分享!!
發表於 11-7-27 06:57 | 顯示全部樓層
回復  philipz


感謝熱心的提供
不曉得有沒有前輩知道時間字串的問題 ...
GnuHomot 發表於 11-7-26 10:40 PM



    我不會AB說,但可以說清楚幫牤想。
 樓主| 發表於 11-7-27 16:04 | 顯示全部樓層
先引用說明手冊上關於GoOrder()的內容
dateTimeStr:日期時間字串,請輸入發出訊號當時 K 線的時間,例如:10:35:50 秒的訊號,當 11:00 系統當掉重開時,該訊號仍應傳出 10:35:50 秒的時間,而不是重啟當時的時間,以免誤判把 11:00 之前的訊號全部下單一遍。下單機只會接收呼叫「初始化函式」的時間以後的訊號,例如 11:00 重啟系統,並初始化元件與倉位,則 11:00 以後的訊號,才會接受下單。如果是系統時間或輸入 “” (空字串,不是空白,自動視為目前系統時間),則若系統重啟,請務必先停止下單機,等訊號跑完到目前這一支 K 線時,再按「開始下單」,才不會把前面的訊號全部重新下一遍。 格式:「YYYY/MM/DD HH:MM:SS」(19個字元)與「YYYY/MM/DD HHMMSS」(17個字元)兩種。為加快下單速度,不會檢查字串長度,請務必輸入正確的字元數目。



照說明dateTimeStr應該要輸入的字串是  

例如:2011/07/27 13:30:25
或者:2011/07/27 133025

但實際上我發現我輸入:2011/7/27 下午 01:30:25
明明就字串裡面還包含中文字,居然下單大師也接收了。

因為我還沒實際下單過,所以有點擔心實際下單時這樣子做可能會發什麼意外?
發表於 11-7-27 16:56 | 顯示全部樓層
先引用說明手冊上關於GoOrder()的內容



照說明dateTimeStr應該要輸入的字串是  

例如:2011/07/27 13:30: ...
GnuHomot 發表於 11-7-27 04:04 PM



1.先用模擬單,如果模擬單有下出去,正式單就會下。2.改成正確的日期字串格式。
 樓主| 發表於 11-7-27 19:52 | 顯示全部樓層
回復 14# philipz


   了解,趕緊來研究自動下單的步驟
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

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

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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