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(); 大大厲害~ 感謝了! {:4_113:} 下單大師的萬用API-Java範例是小弟提供的。呵~ AB 真的太亂 阿怎起頭 {:4_93:} 下單大師的是小弟提供的。呵~
philipz 發表於 11-7-26 10:28 PM http://www.coco-in.net/images/common/back.gif
大大是程式高手 {:4_113:} 回復 3# philipz
疑??我以為Amibroker的範例是ashell大提供的 回復philipz
疑??我以為Amibroker的範例是ashell大提供的
GnuHomot 發表於 11-7-26 10:34 PM http://www.coco-in.net/images/common/back.gif
我是Java範例。 回復 7# philipz
感謝熱心的提供{:4_113:}
不曉得有沒有前輩知道時間字串的問題 回復 2# kilroy
之後可能還有很多問題要向K大請教耶{:4_84:}
之後可能還有很多問題要向K大請教耶
GnuHomot 發表於 11-7-26 10:41 PM http://www.coco-in.net/images/common/back.gif
大大客氣了,小弟懂的不多 {:5_260:}
盡力了 XD 回復 3# philipz
原來我們都受你的照顧!!謝謝你的無私分享!! 回復philipz
感謝熱心的提供
不曉得有沒有前輩知道時間字串的問題 ...
GnuHomot 發表於 11-7-26 10:40 PM http://www.coco-in.net/images/common/back.gif
我不會AB說,但可以說清楚幫牤想。 先引用說明手冊上關於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
明明就字串裡面還包含中文字,居然下單大師也接收了。
因為我還沒實際下單過,所以有點擔心實際下單時這樣子做可能會發什麼意外? 先引用說明手冊上關於GoOrder()的內容
照說明dateTimeStr應該要輸入的字串是
例如:2011/07/27 13:30: ...
GnuHomot 發表於 11-7-27 04:04 PM http://coco-in.net/images/common/back.gif
1.先用模擬單,如果模擬單有下出去,正式單就會下。2.改成正確的日期字串格式。 回復 14# philipz
了解,趕緊來研究自動下單的步驟{:4_661:}