2005年06月28日
為替ロボットの作り方(FXCM用) はじめに
それでは為替ロボット、略してカワロボを作ってみましょう。
ここでは、FXCMのデモ口座でカワロボの運用を開始するまでの手順を紹介します。
【ながれ】
- 売買ルール(戦略)を決める
- プログラミングをする
- バックテストをして戦略を調整する
- 運用開始
【用意するもの】
以下のソフトをダウンロード、インストールして下さい。
全てフリーソフトです。
- StrategyBuilderFX http://strategybuilderfx.com/(シグナル検出用)
- HyperOrder Host 入手方法(オーダー実行用)
- BlackJumboDog http://www.vector.co.jp/soft/dl/win95/net/se155232.html(メールサーバー)
HyperOrder(以下、HO)はダウンロード前にフォーラムへの登録(無料)が必要です。HOダウンロード手順
BlackJumboDog はリンク先一番下の「BlackJumboDog イントラネット用簡易サーバ 3.8.3」をダウンロードして下さい。
HOはメールサーバからメールを受信し、そのメールの内容に沿ってFXCMにオーダーを自動的に出す機能を持っています。
売買シグナル発生時にSBFXがメールを送り、HOで受信して売買注文を実行します。
BlackJumboDogはメールサーバーとして、SBFXとHOの仲介をしてもらいます。
*現在、SBFXより高機能な
MetaTrader4 http://www.metatrader4.com/(以下、MT4)
というフリーソフトがありますが、バックテスト機能がまだ使えません。
MT4のバックテスト機能が使えるようになり次第、SBFXと入れ替える予定です。
(MT4はSBFXの元?となっているMetaTrader3の後継です。そのため画面構成や使い方はSBFXと非常によく似ています。
また、MT4にはシグナルをメールで送信する機能があり、売買シグナルをメール配信したり、
モブログで売買履歴を公開したりという使い方もできます。
早くバックテストができるようになるといいのですが。。)
【前準備】
取引に使用するFXCMのデモ口座を作っておきます。
こちらのページから登録しますとIDとパスワードがメールで届きます。
投稿者 kawarobo : 00:47 | コメント (0) | トラックバック
2005年06月29日
為替ロボットの作り方(FXCM用) 売買ルール
【売買ルールを決める】
さて、いよいよシステム作りに入ります。
この売買ルールを決める手順は成績を左右する非常に重要な部分ですが、
まだ「これだ!」という投資手法が決まっていなければ、人から聞いたり、
本で見た方法、ふと思いついたものをどんどん試してみるほうが面白いと思います。
それで見込みがありそうなら、さらに磨いていけば良いでしょう。
[採用ルール概要]
ここでは、以前ファンドマネージャーをされていたある方がちらりとおっしゃっていた、移動平均を使う手法を試してみることにします。
それは、基本中の基本、移動平均の長期線、短期線のゴールデンクロス(GC)とデッドクロス(DC)に多少手を加えるもので、GCやDCになる少し前に仕掛けて、GC,DCになった時点で手仕舞うというやり方です。
「GCやDCになる少し前」というのは具体的に言うと、直近の終値が短期線と長期線の間に入り込んだ時です。
ただそれだけだと『だまし』が非常に多くなるので、様子を見て一工夫が必要だとのことでした。
様子見や工夫の仕方が思いつかないので、とりあえずどのくらいだまされるものか、やってみてそれから考えることにしましょう。
[ルールの式化]
ルールが決まったところで、プログラミングしやすいよう、式に置き換えてみます。
まず、GCやDCは以下のように定義してみました。
GC:短期線<長期線の状態から、長期線≦短期線になったとき
DC:長期線<短期線 〃 短期線≦長期線 〃
「GCやDCになる少し前」は、このようにします。
GCになる前:時価<短期線<長期線の状態から、短期線≦時価<長期線になったとき
DCになる前:長期線<短期線<時価 〃 長期線<時価<短期線 〃
(短期線、長期線は終値ベースの単純移動平均。時価は直近の終値)
そしてルールはこうなります。
- 「GCになる前」が発生したら買い
- 「DCになる前」が発生したら売り
- 買いや売りの保有するポジションは1つまで。
(ポジション保有時に再度買いや売り条件が発生しても無視する)
- GCまたはDCが発生時、ポジションを保有していたら全て閉じる
投稿者 kawarobo : 09:48 | コメント (3) | トラックバック
為替ロボットの作り方(FXCM用) プログラミング
【プログラミングをする】式化したルールを、MetaQuoteLanguageⅡ(MQLⅡ)という言語でプログラミングしましょう。
MQLⅡについてはMQLⅡのページで少しずつ説明をしていきますので、ここではこんな感じのものかというのをつかむ程度でいいと思います。
プログラミングはSBFXのMetaEditorで行います。
SBFXのTools > MetaQuotes Language Editor からエディターを立ち上げ、 File>Newから新規エキスパートを作成して下さい。
(詳しくは「MetaEditor入門」)
以下のように記入します。
*1 長期線と短期線の期間を変更できるよう、「defines:」で、MALongPeriod(長期期間),MAShortPeriod(短期期間) という定数をセットしました。こうしておくと、後から期間を変更するのが容易になります。
*2 自分で決める変数(定数以外)は全て、「var:」で宣言しておく必要があります。(まとめて宣言する場合は「vars:」「( )」内は初期値でこれにより数値変数か文字列変数かが決定)参考:MQLⅡ簡易リファレンス
*3 iMA(期間,MODE_SMA,0)で現在の単純移動平均の値が出ます。最後の数字を1に変えると一本前の値、2にすると二本前の値が得られます。今回は終値ベースのため、一本前と二本前の値を使用します。
*4 close[0]で現在の値、close[1]でチャート上で1本前の終値(直近の終値)、close[2]だと2本前の終値。
*5 この部分は/*~*/で括られているので実行されません。デバッグ用に各値を出力したいときは/* */を外します。参考:MQLⅡ簡易リファレンス、Print
*6 TotalTradeは保有ポジションの数。(未約定のオーダーも含める)
ただし、異なる通貨も同時に運用していた場合、そのポジション数も全てカウントされてしまうので、現在の通貨のポジションだけを取り出して調べる。参考:If文、 For文
*7 OrderValue(ポジション番号,VAL_TYPE)で保有ポジションのタイプが得られる。買いはOP_BUY、売りはOP_SELL
*8 ポジションが無ければ、GC前、DC前でないかを調べて、条件が合えば注文を出す
*9 条件式は &(=and) や|(=or)で組み合わせが可能
*10 SetOrder()で売りや買い。
*11 ポジションがある場合、GC,DCでないかを調べる
*12 CloseOrder()でポジションを閉じる。
投稿者 kawarobo : 12:37 | コメント (0) | トラックバック
2005年07月05日
為替ロボットの作り方(FXCM用) バックテスト
「Verify」ボタンを押すと、保存&エラーチェック&コンパイルがされて準備が整います。(ファイル名はMAPreGCDCにしました)
「MetaTrader」ボタンでSBFXに戻ります。
【バックテストをする】
とりあえずプログラミングができたので、テストをしてみます。
NavigatorウィンドウのExpertAdvisorsから先ほど作成したMAPreGCDCをEURUSDの1時間足チャートにドラッグ。
Strategy TesterタブからStartボタンでバックテストを開始します。
結果は、開始直後から-92%と惨敗です。。
時間足で試したのがだめなのでしょうか?日足に変えてやってみましょう。
テスト画面を閉じて、チャート画面に戻り、「D1」ボタンで日足チャートに変えます。
F6キーでテスター画面を出し、もう一度「Start」
結果はやはり-90%と無惨な結果になりました。
[チャートで確認する]
シグナルがどのような状態で出ているのか、チャート上で確認してみましょう。
テスター画面の「Arrows in the chart」にチェックを入れて、シグナルの状況がチャート上に表示されるようにします。
先ほどは資金不足で途中で止まってしまいましたので、資金は10倍の100,000ドルにし、手数料やスプレッドは両方0にして純粋な売買結果を見ることにします。
Modelを「every 1 point(slow)」として、スタート。
結果が出たらOKでチャートに戻ります。
ここでおかしな状態が目に付きました。
一本のBarに矢印が大量に重なっています。
これは、ストップロスでポジションが消えたところで、すぐ新たなポジションを取り、またストップに引っかかるということをBar1本の中で何回も繰り返してしまうためのようです。
また、「every 1 point(slow)」でテストをする際、日足のデータを基にランダムで作成した仮想のデータを使用しているというのも影響しているようです。
始値と終値は順番がはっきりしていますが、高値と安値はどちらが先に来るか元の4本値からだけではわかりませんし、高値と安値を何往復もしたのか、安値から高値に一方的に上がっただけなのかもわかりません。
これでは結果の信頼性がありませんので、Bar1本の中で何度もポジションをとらないようにコードを改良します。
[コードの修正]
MetaEditorに戻って、MAPreGCDCのコードを以下のように書き換えます。
14、16、51、58行目が変更部分。
openbarという変数を作り、ポジションを持った時のBarを記録。そのBar内ではそれ以降の処理をスキップします。
「bars」はその時の合計Bar数を得るものです。
投稿者 kawarobo : 05:48 | コメント (0) | トラックバック
為替ロボットの作り方(FXCM用) ルールの見直し
[修正の結果]修正したところで再度バックテストをしてみます。
資金100,000$、手数料、スプレッドは0、modelはevery 1 point、Arrows in the chartにチェックを入れます。
結果、矢印の重なりはなくなりました。
とは言え-15,190$と相変わらずマイナスのままですので、これでは使えません。 他の通貨で様子を見てみましょう。
ドル円の日足チャートを開き、MAPreGCDCを適用してテストします。
同じように、資金100,000$、手数料、スプレッドは0、modelはevery 1 point、Arrows in the chartにチェック。
結果、-31,920$とますます悪い結果に。。パラメーターをいろいろいじってみてもよさそうですが、ここではもう一度チャートの様子を見ることにします。
[チャートに移動平均を表示]
チャートには売買ポイントを示す矢印が出ていますが、これだけではいまいち分かりません。
MAPreGCDCのルールは、移動平均の長期線と短期線の間に入った時にポジションを取り、GC,DCで閉じるというものでした。
なので、チャート上にも見やすいように移動平均線を表示します。
NavigatorウインドウのIndicatorsからMovingAverageをチャートにドラッグ。 バックテストでは長期21、短期5(MaLongPeriod(21),MaShortPeriod(5) )としていましたので、Period=21, Method=Simple, Applyto=Close, Shift=0で赤色の長期線(21日)を表示、同じようにして今度はPeriod=5、色を白に変えて短期線(5日)を書き出します。
[ルールの見直し]
これで見やすくなりましたが、かなり「だまし」にやられているようです。 しかしそれ以上に、せっかくいいタイミングで入っているときでも、ストップが狭すぎて、損をしているようです。
また、これまではGC、DCで閉じるようにしていましたが、チャートでみると、もう少し粘った方が利益を伸ばせるようにも見えます。
ここをどうにかできないでしょうか。
トレーディングシステム入門という本を見たところ、ディレクショナルスロープ法というやり方が載っていました。
ディレクショナルスロープ法とは、短期と長期、2本の移動平均線を使って、クロスではなく、その傾きをもとにシグナルを出す方法で、2本の移動平均両方が上昇(下降)すれば買い(売り)、短期線の向きが反転したところでポジションを閉じるというものでした。
この方法の一部を拝借することにしましょう。
GCやDCで閉じる代わりに、短期線が反転したところで閉じることにします。
コードは以下のようにしました。
新たにTypeという定数を用意しました。
Typeが0のときは、ポジションを閉じる時の条件が「短期線が長期線を越えてから、短期線の向きが反転した時点」となります。
Typeを0以外にすると単に「短期線の向きが反転した時点」となって、長期線を越える前でも即、ポジションを閉じてしまうようになります。
ポジションを閉じる条件とは独立して、ストップロスが設定してありますので、一定額の損失が出たところで強制的に損切りされます。
ストップロスの初期値は少し余裕をもたせて100pipsにしてあります。
投稿者 kawarobo : 06:06 | コメント (0) | トラックバック
為替ロボットの作り方(FXCM用) 変更結果
[変更版の結果]
それでは、テストをしてみましょう。
チャートはUSDJPY日足で、資金10,000$、手数料0、スプレッド0、every 1 pointです。
結果は+80,318$!
かなりいい数字が出てきました。
ただし、最大ドローダウンが40.6%もあり、実用化するにはかなり気合が要りそうです。。
つづけて、テスター画面のSettingsからTypeを1に変えて、Type1のテストをします。
結果、+95,519$、さらにいい値が出ました!
最大ドローダウン26%と、Type0よりはかなりマシになりました。(それでもまだ少し気合の入った数字ですが。。)
Type1はルール上、ポジションが閉じられやすくなっているので、ストップロスにもう少し余裕を持たせてもよさそうです。
StopLossを150と200でそれぞれテストしてみました。
結果、ストップ150の時は+111,127$ 最大ドローダウン19.3%、
ストップ200の時は+124,176$ 最大ドローダウン24.2%
どちらもトレード数は700~800程度、ロットは1に固定なので、トレード1回あたりの平均値は+150$ぐらいになります。
テストに使用したヒストリカルデータは1978年5月から2005年6月まで27年分。
それで7~800回のトレードということは、月に2,3回の割合でシグナルが発生するという、かなり悠長なシステムということになります。
トレイリングストップを付けたり、パラメーターをいじったり、まだまだ手の加えようはあると思いますが、そろそろ次の手順に移りたいので、Type1のストップ150を採用することにします。
次からはいよいよHyperOrderとBlackJumboDogを使ってFXCMのデモ口座での自動売買をセットすることにしましょう。
(ここまでのチャートを見ていた中で、おかしな位置に矢印が出ていることがあり、調べたところ、実はMAPreGCDCのコードのミスがあったことに気が付きました。ルールでは、仕掛けのシグナル発生は「終値が長期線と短期線の間に入りこんだ時」でしたが、その部分をうっかり
MaShortCurrent < Current and MaShortCurrent < MaLongCurrent
としてしまいました。これでは終値が短期線を越え、さらに長期線も越えてしまった状態も含んでしまいます。本来は、
MaShortCurrent < Current and Current < MaLongCurrent
としなくてはいけないところです。
ところが、ここを訂正すると成績がかえって悪くなってしまいました。
そこで、あえて間違えたままこの部分を残すことにしました。怪我の功名というのでしょうか。。)
投稿者 kawarobo : 06:14 | コメント (0) | トラックバック
2005年07月07日
為替ロボットの作り方(FXCM用) オーダーの仕組み
【自動売買の設定をする】
できあがったプログラムを使って、FXCMの口座で自動売買をするように設定しましょう。
FXCMで自動売買を行う流れは、
シグナル発生時にSBFXからHyperOrder(HO)にオーダーメールを送り、
それによってHOがオーダーを実行する
というものです。
メールの送受信部分をもう少し詳しく言うと、
SBFXから送られたメールをメールサーバーが受信して保管、
HOがメールサーバーに問い合わせて、届いていたメールを引き出す
となります。
ところが、SBFXにはメールを送信する機能はありません。これは困りました。。
どうしたら良いのでしょうか?
[BlackJumboDogの利用]
そこで、BlackJumboDog(以下、BJD)の登場です。
BJDのメールサーバーの仕組みを、利用させてもらうことにします。
BJDでは、管理するアドレス宛てに届いたメールを、受信用のフォルダに保存します。
その時メールは、あて先のアカウントごとに分けられ、アカウント名の付いたテキストファイル(拡張子なし)として保存されます。
さらにメールが届いた場合は、そのファイルに追記していきますので、アカウントごとに一つずつファイルがあり、そのファイルの中にメールがまとめて保存される形になります。
つまり、アカウント名kawaroboなら、保存フォルダ内の「kawarobo」というファイル(拡張子無し)にkawarobo宛てのメールがまとめて記録されます。
一方、SBFXはメールの送信はできませんが、ファイルを読み書きすることができます。
このファイル読み書き機能を使って、BJDの保存フォルダ内のアカウント名ファイル(先ほどの例で言えば「karawobo」ファイル)に直接書き込めば、あたかもメールを送ったかのように見せかけることができます。
これで、HOがBJDに問い合わせると、BJDは、SBFXによって書き込まれたファイルをメールとして、HOに渡してくれます。
ただし、ここで注意があります。
SBFXが扱えるのは.csvの拡張子がついたCSVファイル限定です。
またファイルの場所はSBFXインストールフォルダ内のExpertフォルダに限られているのです。
投稿者 kawarobo : 11:47 | コメント (0) | トラックバック
2005年07月10日
為替ロボットの作り方(FXCM用) メール-オーダーの設定
[BlackJumboDogの設定]
以上を踏まえたうえで、BJDの設定をしましょう。
BJDを立ち上げ、設定>メールサーバ から、メールサーバ設定ダイアログを開きます。
まず、「メールサーバを使用する」にチェックをいれます。
ドメイン名を localhost として、
メールを保存するディレクトリに、SBFXのExpertsフォルダ
(私の場合はC:\PROGRAM FILES\STRATEGYBUILDERFX\EXPERTS\)
を指定します。
次に、利用者タブを開いて、アカウントを追加します。
このときアカウント名には必ず「.csv」を付けてください。
私はアカウント kawarobo.csv 、パスワード mailpass としました。
このようにアカウント名に.csvをつけておくことで、メール保存先となるファイルが見かけ上、.csvファイルになりますので、SBFXから読み書きすることができるようになります。
あとは「OK」を押して、メールサーバ設定ダイアログを閉じて下さい。
以上でBlackJumboDogの設定は終わりです。
[HyperOrderの登録]
次はHyperOrderです。
HOをはじめて起動する時は、ユーザー登録が必要です。
入力は全てアルファベットです。ここで入力したメールアドレス宛てに認証コードが送られますので、正確に記入してください。
「Online registration」を選択して次へ進み、しばらく待つと、認証コードがメールで届きます。
メールにある認証コードを入力欄にコピペして認証完了です。
[HyperOrderの設定]
HOが起動すると広告が表示されますが、
それは消さずに、タスクトレイにあるアイコンをダブルクリックして、ウインドウを開きます。
まずはFXCMと連携するための設定を行います。
LocalServer >Management >BrokerFeeds
にあるFXCM/Refco....を右クリック、Propertiesを選択します。
Datafeedタブから
Type=Demo
であることを確認して、Login、Passwordに FXCMデモ口座のIDとパスワードを入力します。
OKでウインドウを閉じ、再び
LocalServer >Management >BrokerFeeds
にあるFXCM/Refco....を右クリックして、
今度はActivateをクリック。
しばらく待つと、FXCMとの接続が完了し、Connected欄にチェックが入ります。
次はオーダーメールを受け取る設定をします。
メニューの
Tools>Email Dispatcher
を開きます。
「Inbox」にチェックを入れて、各項目を入力します。
- POP3Server= localhost
(BJDを使うので、localhostで固定です)
- Account=(BJDで作成したアカウント名)
例:kawarobo.csv
- Password=(アカウントのパスワード)
例:mailpass
- Check email every=2(ここで指定した秒数ごとにメールチェックします)
- Ignore older than=0(ここで指定した分数より古いメールは無視。0は全て受け入れる)
- Process email commands which contain:
オーダーメール用のパスワードを設定します。オーダーメールにはここで決めたパスワードを記入するようにしてください。
Password= 例:orderpass
Confirm password=(確認のためもう一度)
投稿者 kawarobo : 13:38 | コメント (0) | トラックバック
2005年07月11日
為替ロボットの作り方(FXCM用) 設定の確認
[設定の確認]
設定が終わったところで、メールによるオーダーがきちんと通るか確認してみましょう。
*実際にオーダーを出しますので、必ずデモ口座で行なって下さい
BJDとHOを立ち上げた状態で、以下の文をBJDのアカウント名(メールのアカウント名)をつけてSBFXのExpertsフォルダに保存して下さい。
*太字部分のアカウント名とオーダー用パスワードは適宜書き換えてください
例:ファイル名= kawarobo.csv
保存先=C:\Program Files\StrategyBuilderFX\experts
$HOCOMMAND$,orderpass,BM,EUR/USD,Forex,Cash,,,,EUR,10,0,0
オーダーが通っていれば、HyperOrderの画面、
Localserver> Activity> FXCM/RefcoFX....
を開き、画面下のタブPositionsに、EURUSD買いポジションが表示されているはずです。
*ポジションが表示されない場合はOrdersタブを開き、オーダーが認識されているか、認識されていればその右端にあるInformationの欄でエラーメッセージを確認してください。
Ordersにも表示されていない場合は、
LocalServer> Management> Journal
を見てください。メールが認識されていればここに何らかのメッセージが出ているはずです。
もう一つ、ポジションを閉じるメールも試してみましょう。
以下の文を同じようにBJDのアカウント名をつけてSBFXのExpertsフォルダに保存して下さい。
*太字部分を適宜書き換えてください
例:ファイル名= kawarobo.csv
保存先=C:\Program Files\StrategyBuilderFX\experts
$HOCOMMAND$,orderpass,CP,EUR/USD,Forex,Cash,,,,EUR,,,,
これで、ポジションが閉じられるはずです。
投稿者 kawarobo : 10:09 | コメント (0) | トラックバック
為替ロボットの作り方(FXCM用) 仕上げ
[プログラム最終版]最後に、
シグナル発生時にSBFXがオーダーを(メールに見せかけて)書き出すよう、コードに追加します。
MAPreGCDCを以下のように書き換えます(最終バージョン)
(売買ルールは、
- GC前になったら買い、DC前は売り
- 短期移動平均の傾きが反転したらポジションを閉じる
- ストップロスは150pips
また、テスト終了後には忘れず、アカウント名(.csv)ファイルを削除して下さい。
参考:UserFunction()
さらに一つ、mailorderというユーザーファンクションを追加します。
*ユーザーファンクションは、Expertプログラム中から呼び出すことのできる外部ファイルです。繰り返し行なう処理や、他のExpertプログラムでも使用したいものをユーザーファンクションにしておくと、あとから修正や拡張したい時に便利です。
今回は、BJDのメール保存フォルダにオーダーを書き出す処理をユーザーファンクションにしました。これは他のExpertプログラムからも呼び出して使うことができます。
File>new から、「User Function」を選びます。
Nameをmailorderと入力して、OK。
新規ウィンドウが表示されます。
以下のコードを記入して、*3のfilenameとpassの部分を書き換えます。
filenemaはBJDで設定したメールのアカウント名(.csv付き)
passはHOで設定した、オーダー用のパスワードです。
例:アカウント名kawarobo.csv、パスワードorderpassの場合、
vars: filename("kawarobo.csv"),pass("orderpass");
あとは、Verifyボタンで保存、コンパイルして出来上がりです。
(ファイル名はmailorder.mql)
*1 inputsでファンクションの引数を宣言。宣言した順に、UserFunction()からの引数が渡される。参考:UserFunction()
*2 lotmultipleはロット数の単位を調整するための変数。一万通貨はSBFX上では0.1なのに対し、FXCMでは10なので、100倍する。
*3 アカウント名,オーダー用パスワード。環境に合わせて書き換えが必要
*4 SwitchでSymbolごとに処理を振り分ける。SBFXではEURUSDのような記述であるのに対し、HOではEUR/USDのように間に「/」が必要。
*5 ここから、ファイルの読み書き。FileOpen()でcsvファイルを開く。";"は列の区切り文字。今回は「列」を使用しないので関係ない。FileWrite()で一行ずつ書き込み、FileClose()でファイルを閉じる。
*6 ファイルの最後に読み書きポイントを移動。他の通貨との同時運用の場合を考慮して、オーダーを上書きではなく追記するため。
投稿者 kawarobo : 12:24 | コメント (0) | トラックバック
為替ロボットの作り方(FXCM用) 出来上がり
BJD、HO、SBFXを立ち上げた状態で、
SBFXのドル円日足チャートを開き、MAPreGCDCをドラッグアンドドロップ、
Settingsタブの、「Allow Live trading」にチェックを入れて、OK。
Enable Expert AdvisorをONにして、ニッコリマークが表示されれば運用開始です。
あとはそのまま放っておくだけで、シグナル発生時に自動的にオーダーを実行してくれます。
FXCMでのポジションの状態や残高を確認したいときはHOの画面を開き、
Local Server>Activity> FXCM/RefcoFX/...
から、画面下のタブ、PositionsやAccountを見てください。
【自分のシステムを作ろう】
今回作成したMAPreGCDCの売買ルールでは、バックテストで見たように、成果を得るまで、かなりの期間が必要だと思われます。
実際に自動売買システムを運用をする場合には、もっと効率良く、安定した成果を得られるルールを見つけ出さなければいけません。
満足のいくものを作り上げるのは大変ですが、うまくいけば、寝ていても儲かる夢のようなシステムになる可能性もあります。
是非、自分だけの為替ロボットに挑戦してみましょう!
売買ルールを色々試しながら、独自の儲かる手法を見つけ出すこと自体も楽しいと思いますし、思いつかなければネットや書籍などで紹介されているもの用いても良いでしょう。
プログラミングが苦手な方は、プログラミング依頼用の掲示板を作成しますので、そちらで依頼してみて下さい。
なお、このサンプルではFXCMの口座で売買するためにHyperOrderとBlackJumboDogを利用しましたが、HyperOrderが対応していない他のいろいろなブローカー(外為どっとコム等)でも自動化することができます。
(SBFXのエキスパートプログラムはそのままで、HOとBJDを変更するだけですので簡単です。)
その方法については随時紹介していきますので、ご希望のブローカーがあればどんどんリクエストして下さい。
投稿者 kawarobo : 13:58 | コメント (10) | トラックバック
2005年08月08日
他のブローカーへの対応方法
HyperOrderが対応していない他のブローカーで、取引を自動化するには、PC上の様々な操作を自動化することができるソフトを使用するのが簡単です。
つまり、それぞれのブローカーの取引ソフト上で、売りや買いを行なう時の操作(マウス操作やキー入力など)を記憶させておき、
MetaTrader4やStrategyBuilderFXからシグナルが出たときに、記憶しておいた動作を呼び出して売りや買いを実行するようにしておくのです。
その操作を自動化するソフトとしては、UWSC(フリーソフト)がおすすめです。
UWSCは記憶した動作を単純に繰り返すだけでなく、Excelのマクロのように、スクリプトを使用して様々なことが自動化できる素晴らしいソフトです。
為替だけでなく株の取引や日々の雑用にも使えるので、使いこなせるようになると非常に便利なソフトだと思います。
【注意する点】
HyperOrderのように、ブローカーに対して直接オーダーを出すのではなく、単に操作を自動化しているだけなので、注文実行中は画面上をカーソルが動き、数値を入力する様子が見えます。このときにマウスを動かしたり、キーボードをいじったりして邪魔をしてしまうと、うまく注文が出せずに思わぬ誤動作をすることになるので、注意が必要です。
自動化中は、そのパソコンを自動取引専用機として、手動の操作を一切行なわないようにしないといけません。
操作の自動化ではなく、FXCMの時のような自動化をするには、HyperOrderのようなソフトを手に入れるか、ブローカーが提供するAPIをもとに自分でソフトを作らないといけません。
こちらでは、HyperOrder以外のフリーソフトは把握できていません。
(OANDAではAPIを有料で提供しているようです。GFTも有料で自動化できるソフトを提供してくれるようです)