忍者ブログ
FXやその他投資についてのつれづれです
[16] [15] [14] [13] [12] [11] [10] [9] [8] [7] [6]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

こんばんは(*'-')

前回作成したGBPJPY14時エントリーEAにトレーリングストップ機能を追加しました
(ついでに、いくつかの設定値をパラメータ化しました)
ソースファイルはこれです→ ダウンロード(mq4)

EAのパラメータ化は、関数の外に変数を定義して、先頭に
extern
とつけると、実行時のダイアログにパラメータとして表示されるようになります。
今回パラメータ化したのは
・エントリー時分
・クローズ時分
・エントリーするための設定Pip
・リミット値
・クローズ値
・スリップページ数
・ロット数
をパラメータ化しました。
これでバックテストなどをするときにいちいちソースを書き換えて再コンパイル
しなくてすむようになります。

次に本題のトレーリングストップ機能ですが、再利用しやすいように
関数化しました。(・∀・)
int TralStop()
て関数がそれです。

ロジックの解説としては、まずポジションを持ったオーダーを特定します
ここはクローズのロジックと同じですね
ポジションを持ったオーダーを特定したらトレールするかしないかの判定です
私が理解しているトレールの動作は
「含み益状態のときに、ストップ注文を含み益中の最高値-トレール幅に設定する」
ということなので、まずポジションが含み益状態か判定しています。
これで前半部分はOK
後半の部分は、注文が通った後の最高値を記録していくのは面倒くさい大変なので
現在の売値(買値)とストップ値の差がトレール幅を上回ったら、トレール幅におさまる
ようストップ値を変更するということにしておきましょう
条件がそろったら、OrderModify関数でストップ値のみ変更して注文をだしております。

ちなみに、この関数をほかのEAに移植するばあい、
extern double dStop=0.2;
の変数も一緒にもっていけば移植可能になります。
(この関数自体に改善の余地はたっぷりありますけどねw)

これらの追加変更によって、メインのロジックも少し手をくわえました。
まずはトレールする/しないを判定するためのフラグを追加して
フラグがtrueだったらトレーリングストップの関数を呼び出します
(Tick単位でトレールロジックは稼動するわけですね)
また、このEAの参考になったルールではリミット値は設定しないことになっているので
dLimitが0だったときはリミット値をつけないように変更しております。
(ついででストップ値もやっちゃいました)

トレーリングストップ機能をONに、リミットの設定なしで、前回と同じ条件で
バックテストをしてみると・・・・

20090111_001.JPG




やっぱり右肩下がり(´・ω・`)

でも前回と違って多少持ち直してる部分がでていますね。
とりあえず機能は追加できたのでこのあたりで・・・
次回は、また機能追加か、このEAで勝てる設定の探りをやってみたいと思います(*'-')
PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カウンター
プロフィール
投資は自己責任・自己判断で実施するようお願いいたします。 ここの情報を見て損失が発生しても責任は負えませんのでご注意してください
HN:
Aki
性別:
男性
最新コメント
[06/06 fxjol]
[02/18 FXに人生を賭ける男]
[01/01 Aki]
[01/01 Aki]
[12/31 FXに人生を賭ける男]
ブログ内検索
最新トラックバック
アクセス解析