多通貨分散トラリピで安定運用TOP ≫  トラリピEA開発 ≫  FOREX.com Japan 仕様変更によるEA改修のポイント

FOREX.com Japan 仕様変更によるEA改修のポイント

昨日紹介したとおり、FOREX.com JapanのMT4の仕様が
一部変更され、場合によってはEAを改修する必要があります

今回の変更で、成行注文の場合は注文時にTPやSLを
指定できなくなります

そのため、成行注文をする場合は、TP/SLを指定せずに注文を出し、
約定後に注文修正にてTP/SLを設定するように変更する必要があります


改修が必要かどうかを見極めるには2つ方法があります

まず1つ目は、プログラムを見る方法です。
OrderSend関数を呼んでいるところを検索し、引数を確認してください
6番目がSL、7番目の引数がTPなので、ここにゼロ以外の値を
セットしていたら改修の必要があります


もうひとつの方法はプログラムを見る自信がない方向けです

バックテストを実施し、結果タブを参照してください。
新規ポジションを建てる時にTP/SLが空白になっていて、
その直後にmodifyでTP/SLをセットしていれば、
改修の必要はありません
そうでなく、新規ポジションを建てる時に、同時にTP/SLが
セットされていれば改修の必要があります


さて、前振りが長くなりましたが実際の改修の方法です

まずは、OrderSend関数を呼んでいるところを検索します

sl = hogehoge;
tp = hogehoge;

OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,sl,tp,comment,magic,0,Blue);



サンプルなので適当ですが、大体こんな感じのプログラムになっているでしょう

OrderSend関数の第6引数と第7引数を見ると、少し上で計算したSLとTPが
セットされているので改修が必要とわかります

改修の内容は、SLとTPをゼロで注文して、約定後注文修正するように
しないといけないので、大体こんな感じに修正します

sl = hogehoge;
tp = hogehoge;

int ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,0,0,comment,magic,0,Blue); ・・・@

if(ticket > -1){ ・・・A
if(sl != 0 || tp != 0){
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sl,tp,0,CLR_NONE); ・・・B
}
}



まずは、@で一旦TPとSLをゼロで発注します
OrderSend関数は、注文が正常に通ったら、注文番号を返しますのでticketに代入します
(注文がエラーだった時は「-1」が返ります)

そして、Aでticketをチェックし、これが「-1」以上だった場合に
Bの注文の修正処理を行います
ここで、事前に計算等で求めたTPやSLで注文の修正を行います

まぁ大体こんな感じでいけると思いますが、本来はもっとしっかりと
エラーチェックなどをした方がよいでしょう

特にOrderModifyでエラーが発生すると、TPやSLがセットされないまま
進んでしまうのでちょっと危険な状態になってしまいます

相場が激しく動いている時などは、サーバーで注文がはねられて
OrderModifyがエラーになる可能性もありえますので、
エラー時にはリトライ処理をするなどの処理を入れておいた方が
安全だと思います

Order系の関数は、ライブラリ化されたものもいろいろとあるので
そういったものを使うのも良いかもしれませんね

にほんブログ村 為替ブログへ  にほんブログ村 為替ブログ FX トラップトレード派へ  人気ブログランキングへ

お便利ツール+α

ポジション情報&口座情報表示インジケータ
 通貨ペアごとのポジション集計情報と
 口座情報を表示するインジケータ
 【詳しい説明
 【ダウンロード
通貨ペア情報表示インジケータ
 4本値やスワップ値、ポジション情報
 などを表示するインジケータ
 【詳しい説明
 【ダウンロード
FOREX.com Japan
 1000通貨単位で取引可能
 Proスプレッドにすればスプレッドも良好
 フォレックス・ドットコムMT4
Alpari Japan
 1000通貨単位で取引可能
 スプレッドは国内最狭レベルで
 スキャル系EAには最適です
 アルパリ

コメント
投稿者:窮鼠(2011年08月26日 16:59)
OrderModify関数について理解が深まりました。
ありがとうございました。
質問なんですが、まささんはmq4プログラミングにかなり精通しているのに、現在トレードではEAによるトラりピを中心にしているのは、やはりトラりピが一番確実に収益をあげられるという結論に至ったからと考えて良いのでしょうか。
投稿者:窮鼠(2011年08月26日 17:13)
過去記事を読んでいたら、ハイパーリピートのことが書かれていたのを発見しました。メールにて質問させていただきます。
投稿者:まさ(2011年08月26日 22:24)
窮鼠さん

トラリピを気に入っているのは確かですが、ベストだと思っているわけではありません。

本業がSEなんでプログラミングは得意なのですが、
肝心のトレーディング技術が無いため、EA化できるアイデアが湧いてこないという感じでしょうか・・・

テクニカルを勉強しようとは思っているのですが、なかなか先に進みません(^^;
投稿者:仙(2011年08月27日 05:39)
今後、各社がNDD仕様に移っていくんですかね。
オーダーが面倒になり、
喜んでよいのかどうか。。。
投稿者:zzz(2011年08月27日 12:30)
コメント失礼します。

弊社FXアカデミーではアフィリエイターを募集いたしております。

弊社で取り扱っている無料EA(FX自動売買ソフト)のご紹介をしていただく
ことで

紹介料を報酬でお支払いいたします。

弊社取り扱い商品はすべて<無料提供>なので、成約率が大幅に高いのが特徴で
す。

詳細は公式ブログをご参考くださいませ。
http://fxacademy.jp/blog/archives/12567.html

無料EA(FX自動売買ソフト)に関する資料はこちら
http://fxacademy.jp/fxacademy_seles/index.html

投稿者:まさ(2011年08月27日 23:22)
仙さん

どうなんでしょう
実はカウントダウン方式とこれまでの違いが良くわかってないません
手間が増えたのは確かですが、長い目で見て良い変更なんですかね?
投稿者:jully(2011年09月06日 15:56)
お忙しい所すみません。
トラリピEAをDLさせていただき使用しています。FXCMで普通に使えているのですが、スプレッドが小さい会社がある(FXTF)ので
そっちにデモ口座を開いて同じEAでテストしているのですが、何故か注文が逆指値注文しか出ません。上からどんどん注文発注の線がチャートに描かれて行くまでは問題ないのですが、何故か現在値まで来ると注文が止まってしまい、指値注文が出ません。買いだけの設定です。
何か原因あるでしょうか?
ロット数を変えただけで他は何も変更していません。

投稿者:jully(2011年09月06日 16:10)
補足ですが、スタート値段を現在値より下にしてEAを開始すると何故か指値注文が発注されます。現在値よりスタート値段が高いなら現在値で注文が止まってしまいます。><
投稿者:jully(2011年09月06日 20:02)
再度補足ですがFXTFは指値、逆指値注文共に5pip離れていないと注文できないようです。
これが何か関係ありますか?
テストEAの新規指値注文は現在値を挟んで上下30本ほど出るようになっています。例え現在値の5pip以内の注文がはじかれても、その下の方には関係ないはずですが。。。
投稿者:まさ(2011年09月06日 22:53)
jullyさん
現象だけ伺っていると、現在値に近いところでの発注がエラーになって、それが原因でおかしくなっていると思われます

ただ、jullyさんが仰るとおりエラーが起こっても、これ以降の注文は出るはずなんですが・・・

expertsタブに何かエラーメッセージは出ていないでしょうか
投稿者:jully(2011年09月07日 02:36)
お忙しいところ返信すみません。
かなり長い時間放置していたら相場が動いて↑に動いたら指値注文が出ました。結局5pip規制が原因で、自分もしばらく待てなくて焦り投稿してしまいました。本当にすみません。
まささんのブログはとても面白く役に立ちます。
これからも相場で儲けて続けてください。
ほんとうに何度も投稿すみませんでした。
投稿者:jully(2011年09月07日 12:44)
昨日は有難うございました。今日は逆指値モードにしてデモやってるのですが、買いは問題なく発注約定するのですが、売りにすると全く注文が出ません。buytrapの箇所をfalseにしただけではだめなのですか?
バックテストでもトレード数0になってしまいます。
それともし正常に動いて買いと売りの両方をやりたいときはマジックナンバーを変えて別名でex4ファイルを作って稼動させれば両建てにも対応できますか?

お忙しい所よろしくお願いします。
投稿者:jully(2011年09月07日 13:51)
補足ですがバックテストで売りのテストをした時
スタート値段を下げればトレードをしたようですがスタート値段の意味が分かりません。
usd/jpyで 
スタート値段82.00円
トラップ本数500
トラップ幅4
doorderrangepips 4
期間2011/8/1〜2011/9/6
です。
スタート値段82.00円ではトレード数0
スタート値段81.00円ではトレード数0
スタート値段80.00円ではトレード数53
スタート値段79.00円ではトレード数89

のように全然おかしな結果が出てしまいます。
通常モードの時のテストではスタート値段とかトラップ本数は適当に大きくしておけば問題なかったのですが、逆指値モードの時の意味が分からず
どう設定すればいいのでしょうか?
投稿者:まさ(2011年09月08日 00:47)
jullyさん
doOrderRangePipsやstopOrderSpreadPipsは全部同じ値なんですよね?
確かにおかしな結果です・・・

一度FXCMのMT4でも試してみてもらえませんでしょうか?

ちなみに、doOrderRangePipsは、現在値からdoOrderRangePipsで指定したpips内のトラップを発注すると言う意味のパラメータになります
これが4と言うことは、現在値から上下4pips以内のトラップのみ発注することになるのですが
FXTFでは5pips離れていないとエラーになるとの情報と照らし合わせると
全てエラーとなって取引はゼロとなるのが正しいはずです
投稿者:まさ(2011年09月08日 00:49)
両建てする場合ですが、
ex4ファイルはひとつでいいのですが、
チャートを2つ開いてそれぞれでEAを起動させる必要があります

その際、マジックナンバーを変更して被らないようにして下さい
投稿者:jully(2011年09月08日 13:50)
書き足らずと書きミスがありました。
5pip規制で昨晩お騒がせしたので上のテストはFXCMでやったものです。それと
doOrderRangePipsでなくstopOrderSpreadPips=4
です。
今下の条件で同じ期間やりましたが結果は0です。。><
extern double lots = 0.2; // ロット数
extern double maxOpenPrice = 82.00; // 新規指値(最高値)
extern int trapCount = 500; // トラップ数
extern int profitPips = 20; // 利益幅
extern int trapIntervalPips = 6; // トラップ幅
extern double stoploss = 0; // ストップロス
extern bool isBuyTrap =false; // 買/売
extern int magic = 20000; // MAGIC NUMBER--->AUDと被らないように

extern bool isTrendFollowOnly = true;
extern int stopOrderSpreadPips = 6;
extern int doOrderRangePips = 5000;
--------------------------------------
以下は「操作履歴」のコピーです。
2011.09.08 13:40:28 買い逆指値 inputs: lots=0.2; maxOpenPrice=82; trapCount=500; profitPips=20; trapIntervalPips=6; stoploss=0; magic=20000; stopOrderSpreadPips=6; doOrderRangePips=5000;
---------------------------------------
この状態でスタート値段を77円に変えると
結果が出ます。

トレード数 58回

ああ 諦めたくないです。

投稿者:まさ(2011年09月08日 23:50)
jullyさん

私のところでは、同じパラメータで動かすと
ちゃんと動いているように見えます・・・

ところで、結果タブにも何も表示されていないでしょうか?
投稿者:jully(2011年09月09日 09:32)
結果タブには何も表示されてません。

スタートを押すとあっという間にバーが右まで動いて終了します。
投稿者:まさ(2011年09月10日 17:35)
あっという間に終わると言うことは、注文時にエラーが出ていると言うよりは
全然動いていないようですね

操作履歴タブに、エラーメッセージは出ていないでしょうか?
投稿者:jully(2011年09月10日 18:37)
まささん 何度もすみません。昨日今までのex4ファイルを削除して再度まささんのDLからコピーして変数だけ変えてコンパイルしたら動きました。。。。
自分プログラムが分からないので下の方は全く触ってないのに原因がさっぱり分かりません。動いたときは焦りました。最後に一つ質問させてください。
私が勘違いしていなければですが、なぜMT4は証拠金が足りないはずなのにそれを超えたIFD注文がいくらでも出せるのか?
それとdoOrderRangePips = 100としていても
trapCount = 500なら注文が出されていないだけで
実際その注文付近に来ると注文をトラップカウントの範囲なら出してくれるという事でしょうか?

無料のDLなのにすみません。
投稿者:まさ(2011年09月10日 23:29)
原因はよくわかりませんが動くようになってよかったです

>なぜMT4は証拠金が足りないはずなのにそれを超えたIFD注文がいくらでも出せるのか?
何故でしょうね?
ロスカットされて資金マイナスの口座でも注文は出せたのでそういう仕様なのでしょう(笑)
さすがに約定はしないと思いますが・・・

>実際その注文付近に来ると注文をトラップカウントの範囲なら出してくれるという事でしょうか?

その通りです
投稿者:jully(2011年09月11日 09:18)
有難う御座いました。バナーをクリックさせていただきました。
投稿者:まさ(2011年09月11日 21:59)
ありがとうございます
投稿者:gucci 大阪(2013年07月15日 18:01)
メンズ パンプス
投稿者:コバヒデ(2014年12月03日 06:30)
まささん

はじめまして、コバヒデと申します。
トラップ系トレードに大変興味を持ち、貴殿のブログにたどり着き、とても感銘受けました。

トラップ系トレードを実際に行ってみたいのですが、Fx-onのトラップ系インジケーターの取り扱いが不可対応の様でして、どうにかまささんのインジケーター購入させていただく方法、または購入案内等をご連絡いただけないでしょうか?

背景事情が解らぬ新参者なのでコメント投稿欄にて詳細を、うかがってよいものなのかも解らないので投稿フォームのメール記入欄に、メアド記載させていただきました。

なにとぞ、お時間ある時で構いませんので、ご連絡いただけますと幸いです。

よろしくお願いします。
コメント投稿フォーム:
 [必須]
: [必須]
認証:
 [必須]
※ 画像の中の文字を半角で入力してください。
Copyright (C) 多通貨分散トラリピで安定運用. All Rights Reserved.
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。