2009年07月の記事一覧

オーダーやオーダー変更時に失敗する場合

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
50種類以上の通貨ペア、各種CFD(金、株など)対応

EAでのトレイルストップがうまくいかない質問を受けたので、たぶんこれかな?ってのを回答しておきます。

わたしも初期はこれで悩んだので。。。

OrderSendOrderModifyを行うとエラーになることがあると思います。

こんなとき何が悪いかちょっと確認してほしいことがあります。

1.注文の方向でAskとBidが間違っていないか。

2.StoplossとTakeprofitの幅

の2点です。

1番は、結構よくやります。

2番は、ストップレベルポイントというのがあって、現在のポイントからいくつか離さないといけないというルールがあります。

だいたい、20pipsぐらいだと思います。

この値は、会社などで違ってきます。

調べる方法は、

MarketInfo(Symbol(),MODE_STOPLEVEL);

を使います。

インジケーターでもEAでもいいので、適当なのを作って以下のソースを書いてみてください。

Comment(”ストップレベル:”,MarketInfo(Symbol(),MODE_STOPLEVEL));

これで、最低離さなければいけない値が表示されます。

もう一つ気をつけなければいけないのは、スリップです。

注文するときにスリップページをいくつにするか指定していますよね。

3pipsを指定していたら、20+3で23離す必要があります。

何でもいいけど、20pipsは大きいですよね。

だから、私がEAを作るときは、LossとTakeは保険(通信障害などの)でかける程度にして、実際のクローズはEAにやらせるようにしています。

これだと、1pipsでも狙えます。

あまり細かいとスリップが大きいとダメですがね。

参考にしてみてください。

タグ

iADXって?

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
50種類以上の通貨ペア、各種CFD(金、株など)対応

質問にあったので、iADXについて。

まず、どこの資料を参考にするか。

私の場合は、

mt4 (MetaTrader4)使い倒シストレ

を愛用しています。

無料で利用できるMQL4の日本語リファレンスマニュアルとしては、一番便利だと思います。

MT4関係で調べ物をするときに一番利用しているサイトと言っても過言ではありません。

すべての関数を隅々までのぞいてみると、気がつかなかったことが見えてくると思いますよ。

分からない単語が出てきたら、検索してみてください。

きっとわかりやすい説明のサイトがあると思います。

で、本題のiADX



double iADX( string symbol, int timeframe, int period, int applied_price, int mode, int shift)



symbol – 計算したい通貨名。NULLを指定すると現在の通貨。

timeframe – 時間枠。時間枠列挙型のどれか。0は現在の時間枠。

period – 計算で使用する足の数

applied_price – 適用価格。これは価格定数のどれかをとる。

mode – インジケータの線指定。これはインジケータラインの値をとる。

shift – 現在の足から何本前の値を出したいか



適用価格

PRICE_CLOSE 終値

PRICE_OPEN 始値

PRICE_HIGH 高値

PRICE_LOW 安値

PRICE_MEDIAN 中央値、(high + low)/2

PRICE_TYPICAL 代表値、(high + low + close)/3

PRICE_WEIGHTED 重み付け値、(high + low + close + close)/4



インジケータの線指定

MODE_MAIN インジケータの基本線

MODE_PLUSDI +DIインジケータ線

MODE_MINUSDI -DIインジケータ線

こんな感じの関数仕様です。



質問をくださった方は、MODEの意味が分からないといっていました。

実はこの関数、ADXといいながら、DMIも表示できてしまいます。

ここが分かりにくかったところなんだと思います。

でも、普通は一緒に使うので利用しやすいようにとの配慮でしょう。



ADX(Average Directional Movement Index):トレンドの強さを測定する指標

DMI(Directional Movement Index):一般的に方向性指数といわれる



ADXは、MODE_MAIN。

DMIは、MODE_PLUSDI、MODE_MINUSDI

で表します。



簡単に説明すると、ADXでトレンドの向きを確かめて、DMIで強さを見ます。

いろいろな方法があるので、詳しくは書きませんが一度動きを確かめてみるとおもしろいかもしれませんね。

タグ

メタトレーダーに日本語を表示してみる

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
50種類以上の通貨ペア、各種CFD(金、株など)対応

今回は、メタトレーダーのプログラムで日本語を利用できるようにしてみます。

実は、日本語表示はできないと思っていました。。。

 

あまり困らなかったので、調べようとも思わなかったのが原因です。

やっぱり、こうしたことは興味がないとやりませんね。

 重要指標を表示するインジケータを作ってみるにコメントを下さった犬養さんに感謝です。

 

本題の日本語を表示してみる方法です。

メニューとかの表示は、できていますよね。

今回のは、プログラムのコードの中に日本語を利用できるようにして、チャート上にも日本語を表示します。

 

MetaEditorを開いてください。

メニューの

「Tool」-「Options…」を押してください。

「Font」タブを選択すると以下のような画面が表示されます。

jp1

ここで、日本語のフォントを選択し、Scriptの日本語を選択してください。

2箇所あるので間違えないでください。

「OK」ボタンを押してください。

 

これで、全部終了です。

むちゃくちゃ簡単です。

 

これで、ソース内のコメントを日本語化したり、チャートに表示させたりすることができます。

 

サンプルで、インジケータを作って見ました。

単純にコメントを表示するだけのものです。

jp2

こんな感じですね。

Comment(”日本語を表示してみる”);

今まで、日本語が化けていたのが表示できることが確認できると思います。

 

これをコンパイルして、チャートに貼り付けてみます。

jp3

こんな感じです。

赤丸のところに「日本語を表示してみる」が表示されていることが確認できると思います。

 

やっぱり、日本語が表示できると見やすいですね。

プログラムを組むのにも日本語コメントを入れられるだけで作業効率がアップすると思います。

がんばってみてください。

タグ

Excel用にデータを出力してみる2

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
50種類以上の通貨ペア、各種CFD(金、株など)対応

前回に引き続き、エクセルを使っていろいろやってみたいと思います。

今回は、DDEというアプリケーション間通信の機能を利用します。

 

DDEというのは、かなり古い規格で今はほとんど利用されません。

最近の.NETではサポートされていないほどの企画です。

ですが、なぜかMT4ではDDEのサーバー機能を持っていて、ExcelはDDEのクライアント機能を実装しています。

 

ということで、通信できてしまいます。

やり方も簡単です。

 

まず、メタトレーダーの設定です。

メニューの「ツール」-「オプション」でオプションを開きます。

dde1

「DDEサーバーを有効にする」にチェックを入れて、「OK」を押します。

これだけです。

 

Excel側は、サンプルがあるのでそれを使ってみましょう。

インストールフォルダ\MetaTrader

DDE-Sample.xls

があるので、開いて見ましょう。

開くと

dde2

こんな感じのメッセージが表示されるので、「更新する」を押します。

dde3

こんな感じで、最新の状況がリアルタイムに表示されます。

売値は、MT4|BID!USDCHF

買値は、MT4|ASK!USDCHF

高値は、MT4|HIGH!USDCHF

安値は、MT4|LOW!USDCHF

時間は、MT4|TIME!USDCHF

時間・売値・買値は、MT4|QUOTE!USDCHF

を表示したいセルに「=MT4|QUOTE!USDCHF」と書けば、利用できます。

 

通貨ペアを変更したいときは、USDCHFの部分を変更するだけです。

これで、いろいろできると思います。

タグ

Excel用にデータを出力してみる

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
50種類以上の通貨ペア、各種CFD(金、株など)対応

どうも、エクセルを使っていろいろやっている方が多いみたいなので、ちょっとしたテクニックを。

 

MT4では、EA用に過去の履歴データを取得できます。

そのデータを使って、バックテストをしたりします。

 

でも、その履歴データをExcelで利用できたら便利だと思いませんか?

今回は、そんな方法です。

 

まず、履歴データを取得する方法です。

メニューの「ツール」-「History Center」でHistory Centerを呼び出すか、F2を押してください。

こんな感じの画面が表示されます。

his1まず、利用したい通貨を選択します。

次に、「Download」ボタンを押します。

こんな画面が表示されるので、「OK」を押します。 

his2

 

ダウンロードが始まります。

his3

しばらくすると終了するので、通貨をダブルクリックすると時間が展開されます。

ダウンロードしたい時間を選択して、「エクスポート」ボタンを押します。

his4

保存先を聞かれるので、保存したいところを選択して保存します。

 

エクセルで表示すると

his5

こんな感じですね。

 

あとは、グラフにしても計算にしても好きなことができます。

一応、項目の順番は、

日付、時間、始値、高値、安値、終値、出来高

の順番です。

 

次は、DDEというのを使ってみたいと思います。

タグ