用手机主动获取指定信息
在《autoit连通文华财经与excel》https://blog.sina.com.cn/s/blog_6e6c458d0100ndwn.html提到编了个程序可以在交易时快速比较大量持仓的方向和系统指向的方向,然后提示需要反手的品种和交易方向。
今天扩展了一下,实现这样一个功能:在手机上向远程计算机发送一个信息,远程计算机执行上述程序,然后立即把结果短信发送到手机上。
这个过程大约需要1分钟,适合出门在外时快速确定需要交易的品种,并且无需太多流量,发送一个简短的信息GPRS网络就足够。
“向远程计算机发送一个信息,远程计算机执行程序”这个通过powershell实现,就是微软命令行cmd的在windows7中的升级版本,其他系统也能用。
过程是:VPS作为powershell服务器,ip4向它发送指令,vps收到后开始运行指定程序
,程序先比较持仓记录需要反手的品种,然后通过调用一个dos下的email程序发送email到指定邮箱,邮箱自动发送邮件到手机
手机上需要装一个支持powershell的程序,ip4上有个叫powershellx的免费程序,其他手机不知道。
上面这只是个例子,这个流程的意义在于,可以用手机通过“低速网络”,“主动”获取想要知道的信息
最近挂着外汇的自动交易程序,我让它每一小时发送一次报告到手机上,这个很容易实现,但是实践中发现这些发来的短信我大量都没看,而我想要看系统运行情况的时候又不太方便(比如在食堂吃饭的时候),虽然我可以用vnc+3G网络远程控制去看,但是毕竟这比较麻烦,需要多次持续操作后才能看到一些信息,这个就是“被动”报告不想看和“主动”查看不方便之间的矛盾。便捷的“主动”获取信息我觉得是有用的,特别是对于自动交易。
20101214 add:下面是vps上的自用程序(远程执行这个程序)
###############################
aa.au3
#Include <Array.au3>
#include <Date.au3>
#include <Excel.au3>
Dim $avArray[14]
Dim $avArray2[14]
Dim $avArray3[14]
Dim $avArray4[14]
Dim $avArray5[14]
Dim $avArray6[14]
Dim $avArray7[14]
Dim $avArray9[14]
Dim $avArray8[14][4]
Dim $xa
Dim $xl
AutoItSetOption ( “WinTitleMatchMode”, 2)
ProcessClose(“mytrader2009.exe”)
ProcessWaitClose(“mytrader2009.exe”)
If(Not WinExists ( “文华财经 - Mytrader交易信息系统”))
while(1)
Run(“D:\上海中期Mytrader交易信息系统\mytrader2009.exe”)
if WinExists ( “消息”) Then
EndIf
if WinExists ( “系统通知”) Then
EndIf
sleep(1000)
If WinActive (
ExitLoop
ProcessClose(“mytrader2009.exe”)
ProcessWaitClose(“mytrader2009.exe”)
WEnd
EndIf
WinActivate( “文华财经 - Mytrader交易信息系统”)
$i=0
$str=”rbzncutal9rum9a9y9p9s9cf
$Title = WinGetTitle( “文华财经 - Mytrader交易信息系统”)
$hwnd = Dec(StringTrimLeft(WinGetHandle($Title), 2))
$oShellx = ObjCreate(“TCaptureX.TextCaptureX”)
Do
while(1)
$pingzhong=StringMid ( $str, $i*2+1,2)
$xx=stringmid($pingzhong,1,1)
$yy=stringmid($pingzhong,2,1)
WinActivate( “文华财经 - Mytrader交易信息系统”)
ControlFocus ( “文华财经 - Mytrader交易信息系统”, “”, 32873)
ControlSend
32873,$xx)
sleep(1500)
ControlSend
32873,$yy)
sleep(1500)
Send ( “{enter}”)
sleep(1000)
$resx = $oShellx.GetTextFromRect($hwnd, 400, 60, 850, 100)
$pos=StringInStr ( $resx, “zz” )+5
$pos2=StringInStr ( $resx, “ZHMT” )+5
$pos3=StringInStr ( $resx, “cc” )+5
$avArray[$i]=Number(StringMid ($resx,$pos,6))
$avArray2[$i]=Number(StringMid ( $resx,$pos2,4))
$avArray3[$i]=Number(StringMid ( $resx,$pos3,6))
If $avArray3[$i]>0 And
abs($avArray[$i])>0 Then ExitLoop
WEnd
$i=$i+1
Until $i = 14
ControlClick ( “文华财经 - Mytrader交易信息系统”,””, 2089)
ControlFocus ( “客户登录”, “”, 1966)
sleep(1000)
Send(“帐号“)
sleep(2000)
ControlFocus ( “客户登录”, “”, 1967)
sleep(2000)
Send(“密码“)
sleep(500)
ControlCommand ( “客户登录”, “”, 1968, “SetCurrentSelection”, 10
)
ControlClick (“客户登录”, “”,1970)
WinWait ( “帐号“)
while(1)
$zzzzz=ControlListView ( “帐号“, “”, 2411,
“GetText”,0,3 )
$msgb1=WinGetTitle ( “帐号“)
$msgb2=StringInStr ( $msgb1, “,” )
If $zzzzz>0 and $msgb2>0 Then
ExitLoop
WEnd
$msgb4=StringInStr ( $msgb1, “,” ,1)
$msgb5=StringInStr ( $msgb1, “资金”)
$dtqy=StringMid( $msgb1, $msgb2-2,2) & StringMid(
$msgb1, $msgb2+1,$msgb4-($msgb2+1))
$dtky=number(stringMid( $msgb1, $msgb5+3,2)) &
StringMid( $msgb1, $msgb5+5,5)
EndIf
$str2=”rb1zn1cu1ta1l11ru1m11a11
$j=0
Do
$aa=ControlListView ( “帐号“, “”, 2411,
“GetText”,$j,0 )
$bb=StringInStr ( $aa, “1” )
$cc=StringMid( $aa, 1,$bb)
If $bb>0
If $cc=”a1″ Then
$avArray4[7]=ControlListView ( “帐号“, “”,2411,
“GetText”, $j,1 )
$avArray5[7]=ControlListView ( “帐号“, “”,2411,
“GetText”, $j,3 )
Else
$dd=(StringInStr ( $str2,$cc )+2)/3-1
$avArray4[$dd]=ControlListView ( “帐号“, “”,2411,
“GetText”, $j,1 )
$avArray5[$dd]=ControlListView ( “帐号“, “”,2411,
“GetText”, $j,3 )
EndIf
EndIf
$j=$j+1
Until $j = 14
WinClose ( “帐号“)
$x=0
$str3=”rbzncutal0rum0a0y0p0srcf
Do
$pingzhong=StringMid ( $str3, $x*2+1,2)
Then
$avArray[$x]>0 Then
$avArray[$x]<0 Then
$avArray6[$x]<> $avArray7[$x] And
$avArray6[$x]<>”” Then
& “-” & $avArray9[$x]
& “;” & $xa
$avArray8[$x][0]=$pingzhong
$avArray8[$x][1]=$avArray9[$x]
$avArray8[$x][2]=$avArray6[$x]
$avArray8[$x][3]=$avArray7[$x]
$x=$x+1
Until $x=14
$file = FileOpen(“c:\1.bat”, 2)
FileWrite($file, “C:\AmiBroker\emailerssl.exe /xx /#”
& $xa )
FileClose($file)
Run(“c:\1.bat”)
ProcessClose(“mytrader2009.exe”)
#######################