大智慧自動交易函數

股票自動交易軟件助手提供了Order.dll , 擴展了大智慧,飛狐,通達信等公式語言的函數。利用這些函數,可以在公式里精細控制下單邏輯和交易策略。比如讀取持倉數據,可用資金,指定下單數量等等。

需要注意的是,一般情況下,并不需要在公式里調用這些函數就能實現股票程序化的交易策略。對于一般用戶,或者對大部分常用指標來說,使用公式預警條件單更加方便,簡單,而不需要在公式里調用下單函數。只需要建立對應的助手預警條件單,并在大智慧,通達信等軟件中設置好預警指標即可。只有在使用股票池自動交易或者圖表交易純公式下單的情況下才需要這些函數。

要使用股票自動交易軟件助手提供的交易函數,先把助手安裝目錄里的 Order.dll復制到大智慧根目錄下面。大智慧調用過Order.dll后,助手會在大智慧目錄下生成 助手日志 目錄,里面有調用函數的日志信息,可以查看這個日志信息來確定調用是否正確,條件是否成立等等。一般條件成立了但是助手沒反應,可以看這個日志來找出原因。如果這日志的顯示是正常的,你可以進一步去助手的安裝目錄里查看助手日志進一步確定原因。

重要提示

股票自動交易軟件助手提供的有些函數的參數,是 條件和變量的乘積,如 BUY 函數的第二個參數就是 條件*數量。表示在條件為1(即成立的情況下),買入對應數量的股票。比如 條件*1000, 條件成立的情況下,條件就是1,乘以1000結果就是1000股,助手就會買入1000股,在條件不成立的情況下條件的數值就會等于0,乘以1000結果也是0,代表條件不成立,因此助手不會買入。有人會問,為什么需要這樣呢,大智慧有if語句,用 if 條件成立 then Buy(1000)這樣不就行了嗎?答案是大智慧if語句,無論怎么樣條件是否成立,語句都會被執行的。因此只能用 條件*量 這種傳遞參數的辦法來解決。注意:條件只能是邏輯判斷值,1或者0,不能是其他運算的結果,例如 條件:=C >0;不要條件:=C;或條件:=MA(C,5)這樣,前者是邏輯判斷值,后面是數值計算。

重要提示2 關于助手編號

股票自動交易軟件助手提供的幾乎所有函數的最后一個參數,是 助手編號,默認是0,是可省略的。大部分情況下可以忽略不管。只有在對不同的助手(對應的不同交易軟件的交易賬戶)使用不同的下單數量時才需要用到。如果你從來沒改過助手設置里的助手編號,所有助手都會執行下單動作,在這種情況下,即使開了多個助手,也不需理會這個參數

另外,尊貴版助手的助手編號,個位上的數字表示真正的助手編號,而十位數上的數字表示賬號編號。比如 10 表示助手編號為0里的第一個賬戶,20 表示助手編號為0里的第二個賬戶。賬號編號以助手條件單里的顯示順序為準

助手函數列表
買入函數 BUY(價格, 條件*數量, 公式編號, 助手編號)
條件成立時(即 條件:=1),買入指定數量的股票
賣出函數 SELL(價格, 條件*數量, 公式編號, 助手編號)
條件成立時(即 條件:=1),賣出指定數量的股票
查詢持倉數量 PosInfo(類型, 助手編號)
查詢當前股票持倉數量,單位(股)
查詢可賣數量 PosInfo(類型, 助手編號)
查詢當前股票可賣數量,單位(股)
查詢成本價 PosInfo(類型, 助手編號)
查詢當前股票的成本價
查詢盈利金額 PosInfo(類型, 助手編號)
查詢當前股票的盈利金額(元)
查詢盈利百分比 PosInfo(類型, 助手編號)
查詢當前股票的盈利百分比(%),盈利5.5%,返回5.5
查詢持倉市值 PosInfo(類型, 助手編號)
查詢當前股票的持倉市值
下單天數 PosInfo(類型, 助手編號)
查詢當前股票的下單天數,即上次助手下單離現在的天數
持倉天數 PosInfo(類型, 助手編號)
查詢當前股票的持倉天數
上次買入價 PosInfo(類型, 助手編號)
查詢當前股票的上次買入價
查詢可撤買單 OrderInfo(下單類型, 查詢類型, 助手編號)
查詢當前股票的可撤買單數量(股)
查詢可撤買單時間 OrderInfo(下單類型, 查詢類型, 助手編號)
查詢當前股票的可撤買單的時間離現在的秒數(秒)
查詢可撤賣單 OrderInfo(下單類型, 查詢類型, 助手編號)
查詢當前股票的可撤賣單數量(股)
查詢可撤賣單時間 OrderInfo(下單類型, 查詢類型, 助手編號)
查詢當前股票的可撤賣單的時間離現在的秒數(秒)
撤買單 CancelOrder(條件*類型, 助手編號)
條件成立時撤銷當前股票的買入單
撤賣單 CancelOrder(條件*類型, 助手編號)
條件成立時撤銷當前股票的賣出單
賬戶總資產 AccountInfo(類型, 助手編號)
查詢當前賬戶的總資產(元)
賬戶可用資金 AccountInfo(類型, 助手編號)
查詢當前賬戶的可用資金(元)
賬戶持倉市值 AccountInfo(類型, 助手編號)
查詢當前賬戶的賬戶持倉總市值(元)
賬戶總盈利 AccountInfo(類型, 助手編號)
查詢當前賬戶的賬戶總盈利(元)
持倉個數 AccountInfo(類型, 助手編號)
查詢當前賬戶的持倉股票數量
清倉 ClearPosition(條件*清倉類型, 助手編號)
條件成立時執行清倉操作
清半倉 ClearPosition(條件*清倉類型, 助手編號)
條件成立時執行清半倉操作
啟動交易 Start(條件*類型, 助手編號)
條件成立時啟動助手自動交易,相當于按下啟動按鈕
停止交易 Stop(條件*類型, 助手編號)
條件成立時停止助手自動交易,相當于按下停止按鈕
啟用條件 Enable(條件*類型, 助手編號)
條件成立時啟用當前股票的條件單或止損設置
禁止條件 Disable(條件*類型, 助手編號)
條件成立時禁用當前股票的條件單或止損設置
設置買入條件 SetBuyCondition(條件, 助手編號)
僅用于飛狐系列軟件圖表交易,在調用BUY函數前調用
設置 賣出條件 SetSellCondition(條件, 助手編號)
僅用于飛狐系列軟件圖表交易,在調用SELL函數前調用
日志函數 Log(數值)
把數值寫到當前日志文件里,方便調試
MsgBox函數 MsgBox(數值)
把數值以消息框的形式彈出來,方便調試
刷新持倉數據 Refresh(條件, 助手編號)
條件成立時刷新持倉,撤單等數據
發送郵件,QQ信息 SendMessages(發送方式, 條件*消息類型, 助手編號)
條件成立時(即 條件:=1),以指定的發送方式發送指定類型的消息
更多函數將完善      

函數說明

BUY(價格, 條件*數量, 公式編號, 助手編號)

條件成立時(即 條件:=1),買入指定數量的股票

參數
價格 指定買入下單價格,如果填0,按助手條件單指定的價格類型或預警股票池全局設置決定買入價
條件*數量 條件,條件變量;數量,買入數量,如果填1,按助手條件單里的指定量買入
公式編號 用來區分是哪個公式或者轉移條件買入的,買入和賣出的編號不要相同
助手編號 可選,在多個助手的情況下分別控制不同助手的下單。默認相同編號的會一起下單

例子
 {上穿5日均線買入1000股}
 條件:Cross(C, MA(C,5));
 if 條件 > 0 then 
    執行買入:"[email protected]"(c, 條件*1000, 1);

SELL(價格, 條件*數量, 公式編號, 助手編號)

條件成立時(即 條件:=1),賣出指定數量的股票

參數
價格 指定下單價格,如果填0,按助手條件單指定的價格類型或預警股票池全局設置決定下單價
條件*數量 條件,條件變量;數量,賣出數量,如果填1,按助手條件單里的指定量賣出
公式編號 用來區分是哪個公式或者轉移條件賣出的,買入和賣出的編號不要相同
助手編號 可選,在多個助手的情況下分別控制不同助手的下單。默認相同編號的會一起下單

例子
 {下穿5日均線賣出}
 條件:Cross( MA(C,5), C);
 if 條件 > 0 then 
    執行賣出:"[email protected]"(c, 條件*1, 2);

PosInfo(類型, 助手編號)

查詢當前股票的持倉數量(股)

參數
類型 0,表示查詢持倉數,量以股為單位
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 個股持倉股數: "[email protected]"(0); 

PosInfo(類型, 助手編號)

查詢當前股票的可賣數量(股)

參數
類型 1,表示查詢可賣數量,以股為單位
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 個股可賣股數: "[email protected]"(1); 

PosInfo(類型, 助手編號)

查詢當前股票的成本價(元)

參數
類型 2,表示查詢成本價
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 成本價: "[email protected]"(2); 

PosInfo(類型, 助手編號)

查詢當前股票的盈利金額(元)

參數
類型 3,表示查詢盈利金額
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 盈利金額: "[email protected]"(3); 

PosInfo(類型, 助手編號)

查詢當前股票的盈利百分比(%)

參數
類型 4,查詢當前股票的盈利百分比(%),盈利5.5%,返回5.5
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 盈利百分比: "[email protected]"(4); 

PosInfo(類型, 助手編號)

查詢當前股票的持倉市值(元)

參數
類型 5,查詢當前股票的持倉市值(元)
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 持倉市值: "[email protected]"(5); 

PosInfo(類型, 助手編號)

查詢當前股票的下單天數

參數
類型 6,查詢當前股票的下單天數,只對助手下的單有效,并且依賴下單記錄
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 下單天數: "[email protected]"(6); 

PosInfo(類型, 助手編號)

查詢當前股票的持倉天數

參數
類型 7,查詢當前股票的持倉天數,只對助手下的單有效(如果設置了下單時間都有效)
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 持倉天數: "[email protected]"(7); 

PosInfo(類型, 助手編號)

查詢當前股票的上次買入價

參數
類型 8,查詢當前股票的上次買入價,只對助手下的單有效
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 上次買入價: "[email protected]"(8); 

OrderInfo(下單類型, 查詢類型, 助手編號)

查詢當前股票的可撤買單數量(股)

參數
下單類型 0,查詢買入單,1查詢賣出單
查詢類型 0,查詢數量,1查詢時間
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 可撤買單數量: "[email protected]"(0, 0); 

OrderInfo(下單類型, 查詢類型, 助手編號)

查詢當前股票的可撤買單距現在的時間(秒)

參數
下單類型 0,查詢買入單,1查詢賣出單
查詢類型 0,查詢數量,1查詢時間
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 買單已過秒數: "[email protected]"(0,1); 

OrderInfo(下單類型, 查詢類型, 助手編號)

查詢當前股票的可撤賣單數量(股)

參數
下單類型 0,查詢買入單,1查詢賣出單
查詢類型 0,查詢數量,1查詢時間
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 可撤賣單數量: "[email protected]"(1, 0); 

OrderInfo(下單類型, 查詢類型, 助手編號)

查詢當前股票的可撤賣單距現在的時間(秒)

參數
下單類型 0,查詢買入單,1查詢賣出單
查詢類型 0,查詢數量,1查詢時間
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 賣單已過秒數: "[email protected]"(1,1); 

CancelOrder(條件*類型, 助手編號)

條件成立時撤銷當前股票的買單

參數
條件*類型 類型:1,撤買單;類型:2,撤賣單
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 買單已過秒數:= "[email protected]"(0,1);
 條件:買單已過秒數 > 60;
 if 條件 then
    撤買單 : "[email protected]"(1*條件);
		

CancelOrder(條件*類型, 助手編號)

條件成立時撤銷當前股票的賣單

參數
條件*類型 類型:1,撤買單;類型:2,撤賣單
助手編號 可選,在多個助手的情況下分別查詢不同助手的持倉。默認相同編號的只返回第一個的

例子
 賣單已過秒數: "[email protected]"(1,1);
 條件:賣單已過秒數 > 60;
 if 條件 then
    撤賣單 : "[email protected]"(2*條件);;
		

AccountInfo(類型, 助手編號)

查詢當前賬號的總資產

參數
類型 0, 查詢當前賬號的總資產(元)
助手編號 可選,在多個助手的情況下分別查詢不同助手的數據。默認相同編號的只返回第一個的

例子
 賬戶總資產 : "[email protected]"(0);

AccountInfo(類型, 助手編號)

查詢當前賬號的可用資金

參數
類型 1, 查詢當前賬號的可用資金(元)
助手編號 可選,在多個助手的情況下分別查詢不同助手的數據。默認相同編號的只返回第一個的

例子
 賬戶可用資金 : "[email protected]"(1);

AccountInfo(類型, 助手編號)

查詢當前賬號的總持倉市值

參數
類型 2, 查詢當前賬號的總持倉市值(元)
助手編號 可選,在多個助手的情況下分別查詢不同助手的數據。默認相同編號的只返回第一個的

例子
 賬戶總持倉市值 : "[email protected]"(2);

AccountInfo(類型, 助手編號)

查詢當前賬號的總盈利金額

參數
類型 3, 查詢當前賬號的總盈利金額 (元)
助手編號 可選,在多個助手的情況下分別查詢不同助手的數據。默認相同編號的只返回第一個的

例子
 賬戶總盈利金額 : "[email protected]"(3);

AccountInfo(類型, 助手編號)

查詢當前賬號的持倉個數

參數
類型 4, 查詢當前賬號的持倉個數
助手編號 可選,在多個助手的情況下分別查詢不同助手的數據。默認相同編號的只返回第一個的

例子
 持倉個數 : "[email protected]"(4);

ClearPosition(條件*類型, 助手編號)

條件成立時執行清倉操作

參數
條件*類型 類型:1,全部清倉;類型:2,清半倉
助手編號 可選,在多個助手的情況下分別清倉

例子
 {此例子假定當前股票池只有上證指數一個股票,當上證指數跌破5日均線清倉}
 條件:Cross(MA(C,5), C);
 if 條件 then
    清倉: "[email protected]"(1*條件);

ClearPosition(條件*類型, 助手編號)

條件成立時執行半清倉操作

參數
條件*類型 類型:1,全部清倉;類型:2,清半倉
助手編號 可選,在多個助手的情況下分別清倉

例子
 {此例子假定當前股票池只有上證指數一個股票,當上證指數跌破5日均線清半倉}
 條件:Cross(MA(C,5), C);
 if 條件 then
    清倉: "[email protected]"(2*條件);

Start(條件*類型, 助手編號)

條件成立時啟動助手自動交易,相當于按下助手開始按鈕

參數
條件*類型 類型:1,啟動自動交易
助手編號 可選,在多個助手的情況指定助手編號

例子
 {此例子假定當前股票池只有上證指數一個股票,當上證指數上穿5日均線開啟自動交易}
 條件:Cross(C, MA(C,5));
 if 條件 then
    啟動交易: "[email protected]"(1*條件);;

Stop(條件*類型, 助手編號)

條件成立時停止助手自動交易,相當于按下助手停止按鈕

參數
條件*類型 類型:1,停止自動交易
助手編號 可選,在多個助手的情況指定助手編號

例子
 {此例子假定當前股票池只有上證指數一個股票,當上證指數下穿5日均線停止自動交易}
 條件:Cross( MA(C,5), C);
 if 條件 then
    停止交易: "[email protected]"(1*條件);

Enable(條件*類型, 助手編號)

條件成立時讓當前股票的止損止盈或條件單生效

參數
條件*類型 類型:1,條件成立時讓當前股票的止損止盈或條件單生效
助手編號 可選,在多個助手的情況指定助手編號

例子
 {當前股票價格在5日均線之上時讓該股票的止損止盈或條件單生效}
 條件:C > MA(C,5);
 if 條件 then
    啟用條件: "[email protected]"(1*條件);

Disable(條件*類型, 助手編號)

條件成立時禁止當前股票的止損止盈或條件單執行

參數
條件*類型 類型:1,條件成立時禁止當前股票的止損止盈或條件單執行
助手編號 可選,在多個助手的情況指定助手編號

例子
 {當前股票價格在5日均線之下時禁止當前股票的止損止盈或條件單執行}
 條件:C < MA(C,5);
 if 條件 then
    禁止條件: "[email protected]"(1*條件);

SetBuyCondition(條件, 助手編號)

僅用于飛狐系列軟件,設置買入條件

參數
條件 僅用于飛狐系列軟件圖表交易,設置買入條件,需在調用買入函數前調用
助手編號 可選,在多個助手的情況指定助手編號

例子
 {此例子假定在當前日線圖上跑圖表交易,當該股票上穿5日均線買入1000股}
 買入條件:Cross(C, MA(C,5));
 設置買入條件:="[email protected]"(買入條件);
 買入股票:"[email protected]"(c, 買入條件*1000, 1);

SetSellCondition(條件, 助手編號)

僅用于飛狐系列軟件,設置賣出條件

參數
條件 僅用于飛狐系列軟件圖表交易,設置賣出條件,需在調用賣出函數前調用
助手編號 可選,在多個助手的情況指定助手編號

例子
 {此例子假定在當前日線圖上跑圖表交易,當該股票下穿5日均線賣出}
 賣出條件:Cross( MA(C,5), C);
 設置賣出條件:="[email protected]"(賣出條件:);
 賣出股票:"[email protected]"(c, 賣出條件*1, 2);

Log(數值)

把數值寫到當前日志文件里,方便調試

參數
數值 把數值寫到當前日志文件里,方便調試

例子
 {此例子把當前最新周期的收盤價寫到日志文件,此文件位于大智慧或通達信等軟件的助手日志下面}
 寫日志:="[email protected]"(c);

MsgBox(數值)

把數值以消息框的形式彈出來顯示,方便調試

參數
數值 把數值以消息框的形式彈出來顯示,方便調試

例子
 {此例子把當前最新周期的收盤價彈出消息框}
 消息框:="[email protected]"(c);

Refresh(條件, 助手編號)

條件成立時刷新持倉,撤單等數據

參數
條件 條件成立時刷新持倉,撤單等數據
助手編號 可選,在多個助手的情況指定助手編號

例子
 {買入前刷新一下持倉信息}
 條件:C > MA(C,5);
 刷新持倉:="[email protected]"(條件);
 if 條件 then
    執行買入:"[email protected]"(c, 條件*100, 1);

SendMessages(發送方式, 條件*消息類型, 助手編號)

條件成立時發送郵件,QQ,微信信息

參數
發送方式 0,發送郵件;1,發送QQ消息;2,發送微信
條件*消息類型 條件成立時(即 條件:=1),發送指定消息類型的消息
助手編號 可選,在多個助手的情況指定助手編號

例子
 {價格大于10元發送類型為5的郵件}
 條件:C > 10;
 if 條件 then
     發郵件:"[email protected]"(0, 5*條件);

河南福彩微信