可否提供奇狐的萬用 API 範例 ?

我的程式碼不是標準的 1,0,-1 的總倉位輸出,而是分為進L,出L,進S,出S四個條件,該怎麼修改來使用「萬用 API」下單呢 ? (以下是我原來的程式碼)

進L:=DoLS=1 or DoLS=3; //多進
出L:=DoLS=2 or DoLS=-3 or DoLS=4 or DoLS=5; //多出
進S:=DoLS=-1 or DoLS=-3; //空進
出S:=DoLS=-2 or DoLS=3 or DoLS<=-4 or DoLS=-5; //空出
ENTERLONG:進L;
EXITLONG:出L;
ENTERSHORT:進S;
EXITSHORT:出S;

回答:

// 請注意:請先至「公告設定」之「一鍵搞定」中「註冊-萬用 API 元件」
// 需更新至最新版,並「重新註冊元件」,才能用 GetNowPosition() 函式

進L:=DoLS=1 or DoLS=3; //多進
出L:=DoLS=2 or DoLS=-3 or DoLS=4 or DoLS=5; //多出
進S:=DoLS=-1 or DoLS=-3; //空進
出S:=DoLS=-2 or DoLS=3 or DoLS<=-4 or DoLS=-5; //空出
ENTERLONG:進L;
EXITLONG:出L;
ENTERSHORT:進S;
EXITSHORT:出S;

NowPoInt:= 0;  // 因奇狐無法記錄變數值,總倉位要從萬用 API 抓出來
// 取得倉位:若沒有初始化倉位,會回傳 99999
<%
Dim OMCOMAPI, rtn
Set OMCOMAPI = CreateObject(“OMSignAPI.OMCOMAPI")
rtn = OMCOMAPI.GetNowPosition(“FTX")
if rtn <> 99999 then FFL.VarData(“NowPoInt") = rtn
%>

NowPo:= NUMTOSTR(NowPoInt,0);
//作多 +1
NowPO:= IF(ENTERLONG,’1′, NowPO);
//作空 -1
NowPO:= IF(ENTERSHORT,’-1′, NowPO);
// 平倉 0
NowPO:= IF((EXITLONG and NowPO= ‘1’) or (EXITSHORT and NowPO= ‘-1′) ,’0′, NowPO);
// 當沖 1:25 平倉 0
NowPO:= IF(OPENMINUTES(TIME)>=280,’0’, NowPO);
//K線時間
NowDT:= NUMTOSTR(YEAR,0) + ‘/’ +NUMTOSTR(MONTH,0)+ ‘/’+NUMTOSTR(DAY,0) + ‘ ‘+NUMTOSTR(HOUR,0)+’:’+NUMTOSTR(MINUTE,0)+’:00′;
//最新收盤價
NowC := NUMTOSTR(C,0);

<% Dim OMCOMAPI, rtn NowDT = FFL.VarData(“NowDT") NowPO = FFL.VarData(“NowPO") NowC  = FFL.VarData(“NowC") Set OMCOMAPI = CreateObject(“OMSignAPI.OMCOMAPI") rtn = OMCOMAPI.GoOrder(“FTX","",NowDT,NowPO,NowC) %>

TS 2000i 出現下單又平倉的訊號 ?

此乃「 TS Current 總倉位方式下單 + 有加碼單 + 電腦很慢」會出現的問題。

請依操作手冊說明延長訊號等待時間、或改用 Order 方式下單、或改用萬用 API 下單。

如何避免 ?

1.請先開 TS,再開下單大師。

2.若要關掉 TS,要先關閉下單大師或停止下單,否則 TS 關閉前會送出 0 的平倉訊號。

3.TS 加碼單的加碼與平倉,和電腦速度有關,用筆電或電腦較慢的,請將等待時間調久一點。

4.時間調愈久,每次下單就會比較慢,因為會等一下,確定沒新的動作才下單,預設是 0.3 秒。

5.至於要調多久,要看您的電腦有多慢,實際測試才知道。

6.目前用雙核心 E8400 + 4G 記憶體,0.3 秒測試加碼到30口平倉,穩定沒問題。

7.原因是 TS 加碼單的平倉(再加碼也是一樣的情況),會很白吃的反覆加減總倉位好幾次,若等的時間不夠久,中途就下單,就會抓到錯誤的總倉位,而且會下兩次,兩次倉位都不一樣。

8.如果 30 口平倉或再加碼,全部做完約要等 10 秒,但等待時間並不是設 10 秒,等待時間是指「每個動作與動作之間的秒數」,例如 0.3 秒的意思,就是這個動作做完,等 0.3 秒,如果沒有新的動作,表示總倉位已經算完,就去下單了的意思。

9.若加碼單平倉或加碼有問題,先從 0.3 秒開始加,例如 0.5,1.0,1.5 … ,建議不要超過2秒,不然每次下單,都會等2秒才下單,若超過2秒才正確穩定的話,建議換快一點的電腦來跑TS。

(如果一開始就能正常執行,就不必做上述設定動作)

1.安裝:在 Setup.exe 按「右鍵」-「以系統管理員身分執行」。

2.安裝目錄下,所有執行檔 *.exe (OrderMaster.exe/OMUpdateVer.exe/Ortc.exe …),按「右鍵」-「內容」-「相容性」-「特殊權限」-「以系統管理員身分執行」。

3.如果還不行,就勾選「以相容性模式執行」:WinXP SP3。

4.重點就是,從安裝到執行,所有用到的程式,全部都要「以管理員身分執行」。

使用 TS 當訊號源的注意事項 ?

 

TS 的訊號接收不到 ?

TS 的策略名稱請勿使用空格" “、底線"_"和中文,且參數前的策略名稱不要和其它策略一樣,以免誤判。

TS 使用 Current 類下單注意事項,尤其有加碼單的

1.請先開 TS,再開下單大師。

2.若要關掉 TS,要先關閉下單大師或停止下單,否則 TS 關閉前會送出 0 的平倉訊號。

3.TS 加碼單的加碼與平倉,和電腦速度有關,用筆電或電腦較慢的,請將等待時間調久一點。

4.時間調愈久,每次下單就會比較慢,因為會等一下,確定沒新的動作才下單,預設是 0.3 秒。

5.至於要調多久,要看您的電腦有多慢,實際測試才知道。

6.目前用雙核心 E8400 + 4G 記憶體,0.3 秒測試加碼到30口平倉,穩定沒問題。

7.原因是 TS 加碼單的平倉(再加碼也是一樣的情況),會很白吃的反覆加減總倉位好幾次,若等的時間不夠久,中途就下單,就會抓到錯誤的總倉位,而且會下兩次,兩次倉位都不一樣。

8.如果 30 口平倉或再加碼,全部做完約要等 10 秒,但等待時間並不是設 10 秒,等待時間是指「每個動作與動作之間的秒數」,例如 0.3 秒的意思,就是這個動作做完,等 0.3 秒,如果沒有新的動作,表示總倉位已經算完,就去下單了的意思。

9.若加碼單平倉或加碼有問題,先從 0.3 秒開始加,例如 0.5,1.0,1.5 … ,建議不要超過2秒,不然每次下單,都會等2秒才下單,若超過2秒才正確穩定的話,建議換快一點的電腦來跑TS。

10.若使用總倉位下單,等待時間要依電腦速度調整,PC 雙核心是 0.3 秒,PC 以下的配備建議用 0.5 秒至 1 秒,才能穩定的出訊號。筆電建議 1.5 秒,小筆電建議 2 秒,不然就是不要用總倉位下單,但手動平倉或加碼時,要自行注意倉位的處理。

連續送單功能有什麼要注意的?

 

1.同一策略連續下單,至少要間隔 6 秒,因為每次送完單,要進行下列六項工作。

2.使用連續下單模式,可在最短時間內連續下單,例如在 1 秒內連續加碼 3 次

3.因此若採用連續下單模式,將不會進行下列六項工作,以便在最短時間內下單。

  • (1).下單後將不會發送任何訊號通知。
  • (2).不支援使用策略的延遲下單功能。
  • (3).不支援帳戶下一訊號自動轉倉功能。
  • (4).不支援成交回報自動補單功能。
  • (5).下單後將沒有送單記錄。
  • (6).主畫面燈號將不會改變。

4.請注意:下單間隔時間若小於 API 處理時間,則會掉單。

5.請注意:小於 1 秒內,請自行測試您的環境是否能穩定下單。

 

有無 Excel 輸出文字檔範例 ?

Sub Export()

On Error Resume Next

Dim DestFile As String

Dim FileNum As Integer

Dim ColumnCount As Integer

Dim RowCount As Integer

FileNum = FreeFile()

DestFile = “C:\current.txt"

Open DestFile For Output As #FileNum

Print #FileNum, Cells(1, 1) & “" & Time & “," & Cells(1, 3) & “," & Cells(1, 4);

Close #FileNum

End Sub

把 Excel 接 DDE 報價,再把 Excel 本身當作 DDE 資料源,要如何寫 Excel  的 DDE 公式 ?

如果直接打 DDE 公式不穩定的話,可以利用 Excel 接 DDE 公式,再把 Excel 當作資料源,傳送給 DDE Server 和下單大師

原來方式:看盤軟體 –> DDE Server 和下單大師

轉送方式:看盤軟體 –> Excel –> DDE Server 和下單大師

在 DDE Server 和下單大師中,輸入 Excel 的 DDE 公式如下:Excel 檔案名稱為 MyDDE.xls

(1) Excel.exe|’MyDDE.xls!R2C3′    

// 第一頁的第 2 橫列(Row)第 3 直行(Col)  (欄位 C2) 

(2) Excel.exe|'[MyDDE.xls]Sheet3!R5C8′  

// 活頁名稱是 Sheet3 的第 5 橫列第 8 直行 (欄位 H5)

// 活頁名稱可用中文如:Excel.exe|'[MyDDE.xls]報價!R5C8′

 

可否提供奇狐的訊號輸出範例 ?

// 請注意:請先至「公告設定」之「一鍵搞定」中「註冊-萬用 API 元件」
// 訊號來源格式,請設為:Date Time Current Price
// 輸出文字檔範例 R:\curr.txt

M1:=MA(CLOSE,5);
M2:=MA(CLOSE,10);

M1:=ref(m1,1);
M2:=ref(m2,1);

BB:=CROSS(M1,M2); //買進訊號
SS:=CROSS(M2,M1); //賣出訊號

drawicon(BB,L-15,4); //畫買進訊號
drawicon(SS,H+15,5); //畫賣出訊號

DD:=barslast(DATE<>REF(DATE,1)); //開盤至今K線數
B1:=barslast(bb); //買訊至今K線數
B2:=barslast(ss); //賣訊至今K線數

PO:=if(B1<B2,’1′,’-1′); PO:=if((B1>DD and B2>DD) or OPENMINUTES(TIME)>=280 ,’0′,PO); ; //今未有訊號不交易, 1:25出場
curr := NUMTOSTR(YEAR,0) + ‘/’ +NUMTOSTR(MONTH,0)+ ‘/’+NUMTOSTR(DAY,0) + ‘ ‘+NUMTOSTR(HOUR,0)+’:’+NUMTOSTR(MINUTE,0)+’:00 ‘ +PO +’ ‘ + NUMTOSTR(C,0); //要輸出的字串

<% on error resume next Dim fso, MyFile curr = FFL.VarData(“curr") Set fso = CreateObject(“Scripting.FileSystemObject") Set MyFile= fso.CreateTextFile(“R:\curr.txt", True) MyFile.WriteLine(curr) MyFile.Close err.clear %>