【GetHtmlSrc】UserAgent、Refererを指定できる関数を追加
int GetHtmlAllUaRef(int handle, string url, string ua, string ref);
を新たに追加しました。
「GetHtmlSrc1.02」のダウンロードは→こちら←をクリック。

【GetHtmlSrc】「さっつん」さんのシグナルを自動化するEA!
シグナルを公開されている「さっつんの無料シグナルだよ!全員集合~」から
GetHtmlSrcを介してシグナルを取得し、MT4で自動エントリーするEAのソースを公開します。
さっつんさんのシグナルは次のような形式です。
11月21日
USD/JPY(↑)
[B]81.80 リミット:81.91 リミット2:81.94 ストップ:81.59 トレール:10 pips
[S]81.59 リミット:81.49 リミット2:81.45 ストップ:81.80 トレール:10 pips
.
.
.
EUR/USD(‐)
[B]1.2829 リミット:1.2839 リミット2:1.2850 ストップ:1.2797 トレール:16 pips
[S]1.2797 リミット:1.2786 リミット2:1.2775 ストップ:1.2829 トレール:16 pips
.
.
.
シグナルの記事は月~金曜日の朝7時20分前後に更新されています。
数値の根拠や取引方法の詳細は「さっつん」さんのサイトをご覧いただくとして
簡単に説明すると、オーダーは基本的に逆指値での両建で、
リミット1、2のどちらかとストップ値を設定し、あとは放置して待ちます。
売買片方のオーダーがヒットしたら逆側をキャンセルするかどうかはお好みでという事らしいです。
キャンセルの選択やトレーリングストップの機能もEAに取り入れています。
他に、指定時刻になったら強制的にクローズ、キャンセルする機能等も付けました。
【用意する物】
・【PR】スプレッドの狭いMT4口座【pepperstone】
・「GetHtmlSrc1.01」
・Sattsun.mq4
【設定方法】
・GetHtmlSrc.zipのGetHtmlSrc.dllをMT4フォルダ\experts\librariesにコピー
・GetHtmlSrc.zipのnkf32.dllをMT4フォルダにコピー
・Sattsun.zipのSattun.mq4をMT4フォルダ\expertsにコピー
以下のような配置になります。
MetaTrader4フォルダ(terminal.exeのあるフォルダ)
│ nkf32.dll
└─experts
│ Sattsun.mq4
└─libraries
GetHtmlSrc.dll
・MT4を起動し取引したい通貨のチャートを開く(タイムフレームは何でも可)
・ナビゲータウィンドウのExpert AdvisorsツリーからSattsunをチャートにドラッグしドロップ

・「全般」タブの「Allow DLL imports」にチェックを入れ、「Confirm DLL function calls」のチェックをはずす

・「パラメータの入力」タブをお好みで変更し、OKボタンをクリック

※パラメータの詳細
//発注ロット数(0.01は千通貨単位)
extern double Lots = 0.01;
//サイトチェック時刻の時(ローカルタイム)
extern int SiteCheckHour = 7;
//チェックするurl
extern string Url = "http://fxsignal.sattsun.com/";
//↑↓が出ているときだけエントリーするならtrue
extern bool EntryOnlyArrowDirection = false;
//エントリーポイントをすぎている場合に成行エントリーするならtrue
extern bool OpenOrderIfBreaked = true;
//リミット1を使用するならtrue
extern bool UseLimit1 = true;
//リミット2を使用するならtrue(リミット1の設定が優先される)
extern bool UseLimit2 = false;
//トレーリングストップを使うならtrue
extern bool Trailing = true;
//ポジションを持ったら逆側をキャンセルするならtrue
extern bool DeleteIfOpened = true;
//オーダーの強制クローズ、キャンセル時刻の時(ローカルタイム)
extern int CloseHour = 21;
//許容スリッページ
extern int Slippage = 3;
//マジックナンバー(通貨ペア毎に変える必要はない)
extern int MagicNumber = 982231;
//通貨ペア名の先行文字列(xxxUSDJPYのxxxの部分)
extern string CurrencyPreString = "";
//trueならデバッグ用メッセージを表示
extern bool Debug = false;
・Expert Advisorsボタンを押し込まれた状態にし、ニコニコマークを確認

EAソース(Sattun.mq4)に興味がある方は、日本語でコメントを記述しているので
メモ帳やワードパッド等で開いて覗いてみてください。

【GetHtmlSrc】EAからサイトのHTMLソースを取得するDLL
そんな事はさておき、掲題の様な機能を持つDLLを公開します。
WebGet等既存のDLLもあるみたいですが、自分的に使いやすいように作ってみました。
このDLLを使って様々なFXの情報サイトに公開されているエントリー情報を
EAから取得して自動化しようという算段です・・・あい変わらず他力本願ヾ(--;)
なお、HTMLの漢字コードの変換にnkfwinを使用しています(GetHtmlSrcアーカイブ内にも同梱)。
【ファイル構成】
GetHtmlSrc100.zip
│ nkfwin.zip・・・ネットワーク用漢字コード変換フィルタのアーカイブ
│ ReadMe.txt・・・このファイル
│
└─MetaTrader4
│ nkf32.dll・・・nkfwin.zip内の(NT,2000,XP,Vista,7)用dllを抜き出した物
│
└─experts
│ sample.mq4・・・使い方のサンプルEA
│
├─include
│ GetHtmlSrc.mqh・・・GetHtmlSrc.dll使用時のインクルードファイル
│
└─libraries
GetHtmlSrc.dll・・・dll本体
【EAコーディング及び実行時のファイル配置】
・nkf32.dll
MT4フォルダ(Terminal.exeと同じフォルダ)またはWindowsのSystem32フォルダへ配置してください。
MT4フォルダ\experts\librariesフォルダでありません。
・GetHtmlSrc.mqh
MT4フォルダ\experts\includeへ配置してください。
・GetHtmlSrc.dll
MT4フォルダ\experts\librariesへ配置してください。
【関数一覧】
int LockBuffer();
GetHtmlSrcの使用宣言。最初に必ず実行する必要があります。
GetHtmlSrc.dll内のHTMLバッファをロックします。
返値は以後の関数で使用するハンドルです。
成功すると0以外の値が返ります。
bool SetBufferSize(int handle, int Size);
GetHtmlSrc.dll内のHTML取得バッファのサイズをバイト単位で指定します。
GetHtmlSrc.dllではデフォルトで128KBのバッファを確保するので、
通常は特に使用する必要はありません。
引数handleにはLockBuffer()の返値を、Sizeにはバッファのサイズを
バイト単位で指定します。
返値trueが成功、falseなら失敗です。
int GetHtmlSrcAll(int handle, string url);
指定urlのHTMLを一気にGetHtmlSrc.dll内バッファに読み込み、nkf32.dllを使用して
漢字コードをShift-JISに変換します。
引数handleにはLockBuffer()の返値を、urlには取得したいサイトのurlを指定します。
返値は取得変換後のバイト数です。
int ReadRow(int handle, string Buff, int MaxSize);
HTMLを行単位(0x0d-0x0aまたは0x0aまで)で取得します。
引数handleにはLockBuffer()の返値を指定します。Buffに取得されたHTMLが
返ります。MaxSizeにはBuffのサイズを指定します。
返値は取得したバイト数です。
BuffはEA側での宣言時に十分な長さの文字列で初期化しておく必要があります。
行の長さがMaxSize-1より長い場合、行の残りは次回のReadRow()実行時に持ち越されます。
取得データは0x00でターミネートされます。
bool UnLockBuffer(int handle);
GetHtmlSrc内のHTMLバッファ占有を終了宣言する関数です。一連のHTML取得が終わったら
速やかに実行してください。
引数handleにはLockBuffer()の返値を指定します。
GetHtmlSrcはHTMLバッファを一つだけ保有する仕様なので
一度に1つのプロセスしか処理できません。
特に複数のチャートにセットしたEAから使用される場合、ロック期間を
できるだけ短くする必要があります。
【使用法】
//行読み取りバッファ・・・できるだけ長い文字列で初期化する
static string ReadBuff = "****************... "; //実際には256文字埋める
//ReadBuffの長さを定義
#define READ_BUFF_SIZE 256
int handle = LockBuffer(); //バッファをこのEA用にロック
if(handle != 0){
int bytes = GetHtmlSrcAll(handle, "http://yukipro.net/"); //全HTML読み込み
while(true){
bytes = ReadRow(handle, ReadBuff, READ_BUFF_SIZE); //1行取得
if(bytes < 0)
break; //eof
Print(ReadBuff); //試しにExpertsログに出力
}
UnLockBuffer(handle); //ロック解除
}
より詳細で具体的な使用法についてはGetHtmlSrc100.zip内のsample.mq4をご覧ください。
日本語でコメントを記述しているのでMeta Editorのフォントを
MSゴシック等の日本語にしてご覧ください。
【その他】
nkfwin.zipの問合せ、取扱いについてはnkfwin.zip内のドキュメントを参照してください。
★次回の記事で実際に自動エントリーするEAをソースで公開!★
※2012/11/20追記
InternetOpenUrl()呼び出し時のフラグにINTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHEを
指定するように変更し、バージョンを1.01としました。
「GetHtmlSrc1.01」のダウンロードは→こちら←をクリック。

| h o m e |