GnuHomot 發表於 11-7-26 22:12

Amibroker接下單大師測試

本帖最後由 GnuHomot 於 11-7-26 10:16 PM 編輯

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

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

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

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

function newDateTimeStr()
{

      newNowDateTime=Now(0);

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

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

      iMonth=StrToNum(sDate);
      if(iMonth<10)
      sMonth="0"+NumToStr(iMonth,1.0);
      else
      sMonth=NumToStr(iMonth,1.0);
      //_TRACE("sMonth: "+sMonth);


      if(iMonth<10)
      sDay=StrMid(sDate,2,2);
      else
      sDay=StrMid(sDate,3,2);

      iDay=StrToNum(sDay);
      if(iDay<10)
      sDay="0"+NumToStr(iDay,1.0);
      else
      sDay=NumToStr(iDay,1.0);
      //_TRACE("sDay: "+sDay);

      
newNowDateTime=sYear+"/"+sMonth+"/"+sDay+" "+Now(4);
//_TRACE("newNowDateTime: "+newNowDateTime);

return newNowDateTime;
}


_SECTION_BEGIN("OrderMaster_Initialize");

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

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

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

_SECTION_END();

_SECTION_BEGIN("OrderMaster_BuyOrder");

trigger=ParamTrigger("OrderMaster Buy Order", "Buy");
if(trigger)
{

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

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

OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");

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

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

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

_SECTION_END();


_SECTION_BEGIN("OrderMaster_SellOrder");

trigger=ParamTrigger("OrderMaster Sell Order", "Sell");
if(trigger)
{

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

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

OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");

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

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

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

_SECTION_END();


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

Nowposition= OMComAPI.GetNowPosition("ABMTX");

_TRACE( "Now Position: "+NumToStr(Nowposition,1.0) );
}
_SECTION_END();

kilroy 發表於 11-7-26 22:20

大大厲害~ 感謝了! {:4_113:}

philipz 發表於 11-7-26 22:28

下單大師的萬用API-Java範例是小弟提供的。呵~

oneman001 發表於 11-7-26 22:31

AB 真的太亂 阿怎起頭 {:4_93:}

kilroy 發表於 11-7-26 22:32

下單大師的是小弟提供的。呵~
philipz 發表於 11-7-26 10:28 PM http://www.coco-in.net/images/common/back.gif


   大大是程式高手 {:4_113:}

GnuHomot 發表於 11-7-26 22:34

回復 3# philipz


   疑??我以為Amibroker的範例是ashell大提供的

philipz 發表於 11-7-26 22:36

回復philipz


   疑??我以為Amibroker的範例是ashell大提供的
GnuHomot 發表於 11-7-26 10:34 PM http://www.coco-in.net/images/common/back.gif


    我是Java範例。

GnuHomot 發表於 11-7-26 22:40

回復 7# philipz


感謝熱心的提供{:4_113:}
不曉得有沒有前輩知道時間字串的問題

GnuHomot 發表於 11-7-26 22:41

回復 2# kilroy


   之後可能還有很多問題要向K大請教耶{:4_84:}

kilroy 發表於 11-7-26 23:11


   之後可能還有很多問題要向K大請教耶
GnuHomot 發表於 11-7-26 10:41 PM http://www.coco-in.net/images/common/back.gif


   大大客氣了,小弟懂的不多 {:5_260:}
   盡力了 XD

TrendRover 發表於 11-7-26 23:20

回復 3# philipz

原來我們都受你的照顧!!謝謝你的無私分享!!

philipz 發表於 11-7-27 06:57

回復philipz


感謝熱心的提供
不曉得有沒有前輩知道時間字串的問題 ...
GnuHomot 發表於 11-7-26 10:40 PM http://www.coco-in.net/images/common/back.gif


    我不會AB說,但可以說清楚幫牤想。

GnuHomot 發表於 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
明明就字串裡面還包含中文字,居然下單大師也接收了。

因為我還沒實際下單過,所以有點擔心實際下單時這樣子做可能會發什麼意外?

philipz 發表於 11-7-27 16:56

先引用說明手冊上關於GoOrder()的內容



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

例如:2011/07/27 13:30: ...
GnuHomot 發表於 11-7-27 04:04 PM http://coco-in.net/images/common/back.gif


1.先用模擬單,如果模擬單有下出去,正式單就會下。2.改成正確的日期字串格式。

GnuHomot 發表於 11-7-27 19:52

回復 14# philipz


   了解,趕緊來研究自動下單的步驟{:4_661:}
頁: [1] 2 3 4 5 6
查看完整版本: Amibroker接下單大師測試