ハイローオーストラリアの自動売買システム作成方法まとめ

  • URLをコピーしました!

バイナリーオプション自動売買システムは、仕事が忙しくてバイナリーオプションの取引をする時間がない方、子育てや家事で忙しい主婦の方、投資の知識がない初心者の方に人気があります。

MT4とUWSCを使ったローオーストラリアの自動売買システム作りに励んできましたが、形になってきましたので、その作成過程をまとめてみます。

この記事は、プログラミング学習のための備忘録です。本記事のコード等を使用する場合は、自己責任でお願いします。

【公式】ハイローオーストラリア
※今だけ!口座開設すると5000円キャッシュバック中!

目次

コピートレード・ツールの特徴

MT4で自動売買ソフトを動かしているトレーダーは、自分のトレードを別のMT4にコピーしたい場合があります。例えば、デモ口座でしか動かない体験版EAや、口座番号が制限されているEA、FXトレーダーが制限しているEAなどです。

この場合、同じパソコンでコピー取引システムを作成します。コピー取引ツールには、サーバーを経由するタイプとサーバーを経由しないタイプがありますが、今回はサーバーを経由しないシンプルなタイプで行います。

インターネットを介さないコピーツールのメリットは、取引の反映が早く、外部サーバーを構築・管理する必要がないことです。

一方、デメリットは、コピー元のMT4とコピー先のMT4が同じPCである必要があることです。デメリットは、接続元と接続先のMT4が同じPCである必要があることです。使用用途はいろいろと限定されますが、基本的には個人での利用を想定しています。

【公式】ハイローオーストラリア
※今だけ!口座開設すると5000円キャッシュバック中!

MT4 coding/programming

コード全体は下記。

input uint ShortMAPeriod = 14;
input uint LongMAPeriod = 28;

static datetime LastAlertTime;
void OnTick()
{
double FastMA[3],SlowMA[3];
FastMA[1] = iMA(Symbol(),Period(),ShortMAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
FastMA[2] = iMA(Symbol(),Period(),ShortMAPeriod,0,MODE_SMA,PRICE_CLOSE,2);
SlowMA[1] = iMA(Symbol(),Period(),LongMAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
SlowMA[2] = iMA(Symbol(),Period(),LongMAPeriod,0,MODE_SMA,PRICE_CLOSE,2);

if( TimeCurrent() > LastAlertTime + 300/*to avoid too many alert */ )
{
if( FastMA[1] > SlowMA[1] && FastMA[2] <= SlowMA[2] )
{
SendSignalToFile(“BUY”);
Alert(“BUY”);
LastAlertTime = TimeCurrent();

}
else if( FastMA[1] < SlowMA[1] && FastMA[2] >= SlowMA[2] )
{
SendSignalToFile(“SELL”);
Alert(“SELL”);
LastAlertTime = TimeCurrent();
}
}
}

void SendSignalToFile(string BuyOrSell)
{
int FileHandle;
string FileName = “SignalDataForHighLow.txt”;
int TryCount;

FileHandle = FileOpen(FileName,FILE_WRITE|FILE_TXT|FILE_COMMON);
TryCount = 0;
while( FileHandle == INVALID_HANDLE && TryCount < 30)
{
TryCount++;
FileHandle = FileOpen(FileName,FILE_WRITE|FILE_TXT|FILE_COMMON);
}

if( FileHandle != INVALID_HANDLE )
{
if( BuyOrSell == “BUY” ) FileWriteString(FileHandle,”BUY”);
if( BuyOrSell == “SELL”) FileWriteString(FileHandle,”SELL”);
FileClose(FileHandle);
}
}


AutoITエディション

UWSCは、開発者サイトが消滅したため、海外の大手開発会社であるAutoITが開発することになりました。
AutoITは大手ボット作成ツールで、無料で利用することができます。

SciTE Script Editorは、スクリプトの編集やコンパイルができるメインソフトです。ウィンドウ情報を取得するだけのAutoIT Window Infoもありますが、私はあまり使いません。

言語はBasicライクなので、UWSCやVBAを使ったことがある人なら馴染みがあると思います。

AutoITスクリプトのドキュメントはこちらです。

https://www.autoitscript.com/autoit3/docs/

MT4が出力したファイルをボットで読み込む

MT4上のEA/インジケーターから出力されたシグナルファイルをAutoITで受け取ることができます。$sFileReadにファイル内の情報が格納されます。

ブラウザの起動 – ログインを自動化してはいけない。

IEの起動とログインを自動化することはしていません。技術的には非常に簡単ですが、ログイン遷移はボットにとって最も検知しにくい部分なので、手動で行うのが賢明です。

https://trade.highlow.com/にアクセスし、手動でログインしてください。

HighLowの構造解析とBotを用いたHighLowのボタン操作について

すでに起動されているIEオブジェクトは、_IEAttachで取得することができます。

$oIE = _IEAttach(“https://trade.highlow.com/”, “URL”)
$oIEactive = WinActivate(“取引| HighLowバイナリーオプション – Internet Explorer”)



お好みでウィンドウをアクティブにします。
取引に必要な操作は、「HIGH」「LOW」を選択して「Buy Now」を送信するだけ。したがって、ここでソースが何であるかを確認する必要がある。
<div class=“invest-area clearfix trading-platform-main-controls-options none-one-click-control”>
<div class=“trading-platform-main-controls-select-direction first-child”>
<div class=“subGraph-updown”>
<div class=“subGraph-up”>
<div class=“up button”id=“up_button”>High</div>
</div>
<div class=“subGraph-down”>
<div class=“dwn button”id=“down_button”>Low</div>
</div>
</div>
</div>
<div class=“invest-btn trading-platform-main-controls-place-bet last-child”>
<aid=“quickTradeInvestBtn”class=” invest investnow_disabled button”href=“javascript:;”>今すぐ購入</a>
</div>
</div>


すると、”High” は “up button” というクラスを持つ div 要素で、”Low” は “dwn button” というクラスを持つ div であることがわかります。Low “はクラス “dwn button “を含むdivです。
つまり、↑の場合は、divを検索して、クラス名「up button」を持つ要素と、内側の要素「High」を選択する必要があるのです。
Lowの場合は、
For$oDivIn$oDivs
IfStringInStr($oDiv.classname,“dwn button”)>0and$oDiv.innertext=“Low”Then
;$oDiv.click
_IEAction($oDiv,“click”)
ExitLoop
EndIf
Next


ボットループの処理については

HotKeySet (“s”, “stopprogram”)

While 1
;ここにループ中の処理

Sleep (1000)
WEnd

Func stopprogram()
Exit
EndFunc

 

Sleep()関数の引数はミリ秒単位なので、1000なら1秒ごとに売買シグナルをチェックすることになります。1本足レイテンシーアービトラージほどエントリータイミングは厳しくないので、数秒おきでも問題ないと思います。数秒おきでいいと思います。

ただし、MT4で生成されるトレードシグナルがランプアップ、ランプダウン系のロジックであれば、計算間隔を短くした方がいいかもしれません。

全コードが揃ったら、コンパイルしてexeファイルを生成してください。

#include <IE.au3>

HotKeySet (“s”, “stopprogram”)

While 1

$sFilePath = “C:\\Users\\”&@UserName&”\\AppData\\Roaming\\MetaQuotes\\Terminal\\Common\\Files\\SignalDataForHighLow.txt”
$hFileOpen = FileOpen($sFilePath)
$sFileRead = FileRead($hFileOpen)
FileClose($hFileOpen)
;MsgBox(0,”debug”,$sFilePath&$sFileRead)

$oIE = _IEAttach(“https://trade.highlow.com/”, “URL”)
;_IEAction($oIE, “refresh”)
_IELoadWait($oIE)
$oIEactive = WinActivate(“取引| HighLowバイナリーオプション – Internet Explorer”)

if $sFileRead == “BUY” Then
;press high
$oDivs = _IETagNameGetCollection($oIE, “div”)
For $oDiv In $oDivs
If StringInStr($oDiv.classname, “up button”) > 0 and $oDiv.innertext = “High” Then
_IEAction($oDiv, “click”)
ExitLoop
EndIf
Next
ElseIf $sFileRead == “SELL” Then
;press low
$oDivs = _IETagNameGetCollection($oIE, “div”)
For $oDiv In $oDivs
If StringInStr($oDiv.classname, “dwn button”) > 0 and $oDiv.innertext = “Low” Then
_IEAction($oDiv, “click”)
ExitLoop
EndIf
Next
EndIf

Sleep(1000)

if $sFileRead == “BUY” or $sFileRead == “SELL” Then
;press entry
;MsgBox(0,”debug”,”entory ok?”)
_IELinkClickByText ($oIE, “今すぐ購入”)

$FileHandle = FileOpen($sFilePath,2)
FileWrite($FileHandle,”entried”)
FileClose($FileHandle)

EndIf

If Mod(@MIN,Random(11,19)) == 0 Then
_IELoadWait($oIE)
EndIf
Sleep (1000)
WEnd

Func stopprogram()
Exit
EndFunc


 

リアルタイムバイナリーオプション自動売買のご利用方法

https://trade.highlow.com/にアクセスしてログイン

MT4を起動し、自動売買したい通貨ペアのチャートにEAを設定します。

ボットを起動する。

 

【公式】ハイローオーストラリア
※今だけ!口座開設すると5000円キャッシュバック中!

まとめ

MT4とAutoITを使って、HighLowでバイナリーオプションをリアルタイムに自動売買する方法について説明しました。

これまで説明した内容では

  • MT4でシグナルを生成し、データをファイルに飛ばす
  • ファイル(テキストファイル)内のシグナルデータをマクロで読み込む
  • マクロでオブジェクト化したバイナリーサイトのボタンを押す
    基本的なことは、これまでの講座で確認していますので、目新しいことはありません

バイナリーオプションの場合、ベットするのも”楽しみ”も一つなので、それを自動化するならFXやアービトラージでいいんじゃね? と今更ながらに思ったりします。

結局、勝つかどうかはリアルタイムの自動売買開発ではなく、過去の検証やロジック構築にあるので、そちらに力を入れた方が賢明でしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる