MetaTrader EA

VQとVQ_EAと商材紹介^^;

今回は、VQ(Volatility Quality)というインディケータの紹介です!

私は、FXのインディケータなどをとてもよく研究されている方から教えてもらい、知りました。

ダウンロードはこちら→VQのページ

『VQ_EA』というのがEAで、『VQ』というのがインディケータです。
それぞれのフォルダに入れましょう!
(ダウンロード先参考記事→ダウンロードしたものを使う

インディケータの完成度、EAの完成度ともに抜群だと思います!

が、

・・・

重たいです^^;

これは、インディケータの計算部分で時間がかかっているのだと思います。
これでは、検証作業がなかなか進みません。

そこで、VQの計算部分だけを抽出し、シンプルなEAを作りました。
EAのみで、計算するので検証もスムーズにできます。

バックテスト用のEA(ex4ファイル)ダウンロードはこちら↓
VQSimpleForTest.zip(ex4ファイル)

さらに、このサインにPipShaker(改)を搭載したものを作りました!

バックテスト用のEA(ex4ファイル)ダウンロードはこちら↓
VQSimpleDePSforTest.zip(ex4ファイル)

これで、VQの検証効率が飛躍的にアップしました!

商材紹介終了しました^^;

では、このへんで。

タグ

2008年7月15日|コメント (6)

カテゴリー:MetaTrader EA

PipShakerOne


今回は、PipShakerの単発版、PipShakerOneというEAを作ってみました!

PipShakerの最初のエントリ(日時と売り買い)をパラメータで決定、その後PipShaker作動し、ポジションがなくなれば終了。
といった感じです。


PipShakerOne.zip(ex4ファイル)


パラメータ

第一取引設定
Date1 最初のエントリの時間
buy0sell1 最初のエントリの売りか買いか
(「買い」は0、「売り」は1を入力)

最少単位での設定
MaxLotSize 最大ロット数
LotSize 最初のエントリのロット数
LotIncrement 買い増し時、売り増し時のロット増加数
MaxTotalLots 1方向の合計ロット数の上限
ProfitTarget 目標利益(単位は口座通貨と同じ)

Spacing ポジショニング用スペース(単位:ピプス)

移動平均線設定
TrendTimeFrame 平均線の時間足(1・5・15...)
TrendPeriods 平均線の計算期間

EA設定
comment コメント
MagicNumber マジックナンバー

trailingpips トレイリングストップ(単位:ピプス)
stoploss 損切り値(単位:ピプス)


使用上の注意

EA作動開始から、移動平均線の計算期間分は買い増し売り増しを行なわないので、開始からエントリの間に余裕を持たせてください。


基本的な動き

価格から一番遠いポジションを利益が出ているポジション全体で相殺する感じです。
ポジションが一つになったら、トレイリングで追っかける感じです。

いろいろ試してみてください。


でわ、このへんで。

タグ

2008年5月26日|コメント (11)

カテゴリー:MetaTrader EA

PipShakerV4誕生!!

PipMakerはポジション同士のチームワークで利益を上げていきます。
これは、最大の特徴で強みですが、場合によっては弱点でもあります。

弱点をカバーするために、保有可能ポジション数を少なくすると、
かえってチームワークが機能しなくなり利益が出ません。

なので、ある程度ポジション数は保有できるように、資金量が必要です。
ですが、Micro Lot(0.01ロット)単位なら、必要資金も10分の1になるのでPipMakerを使うには向いているかと思います。


今回は、PipMakerを改造して、『PipShaker』というものを作ることに成功しました!


Micro Lot最少単位での取引(1999~2007)

PipShakerV2の1999-2007年バックテスト結果

9年間での最大ドローダウンが$651.55なので、Micro Lotでも最低資金数十万円は必要のようですね!

さらに、年末の仕掛け的な動きにダマされることが多いようなので、
12月はお休みする『PipShakerV4』を作りました。

リスクを大きめにとって複利での1年ごとのバックテスト結果↓


1999年
PipShakerV4の1999年バックテスト結果年利:188%


2000年
PipShakerV4の2000年バックテスト結果年利:442%


2001年
PipShakerV4の2001年バックテスト結果年利:167%


2002年
PipShakerV4の2002年バックテスト結果年利:242%


2003年
PipShakerV4の2003年バックテスト結果年利:1590%!


2004年
PipShakerV4の2004年バックテスト結果年利:3429%!!


2005年
PipShakerV4の2005年バックテスト結果年利:1572%!


2006年
PipShakerV4の2006年バックテスト結果年利:270%


2007年
PipShakerV4の2007年バックテスト結果年利:48%^^;


早速、デモ開始です。


でわでわ。

タグ

2008年4月16日|コメント (12)

カテゴリー:MetaTrader EA

PipMakerを改造

今回は、PipMakerを改造したもののバックテストをアップしたいと思います。

改造した点

トレンド方向へ動いた時の無駄を無くす等、細かなところを効率化しました。
(トレイリングなど)

常にポジションを持っているのではなく、出来るだけ損切りをしなくてすむような状況を狙い撃ちして、ポジションをとるようにしました。
(フィルタをつけました)


パラメータは同じで、最少ロットでテストしました。

→EURUSDのテスト結果

→USDJPYのテスト結果


まだまだ、良くなりそうですね!
もう少し、研究を続けたいと思います!

また、PMsimpleのパラメータを説明しますね。
MaxLotSize 最大ロット数
LotSize 最少ロット数
Lotincrement 増加ロット数
ProfitTarget 目標利益
TrendProfitTarget トレンド方向の目標利益
Spacing 買い増し売り増しするときの必要ピプス
TrendSpacing トレンド方向のSpacing
TrendTimeFrame 移動平均の使用時間足
TrendPeriods 移動平均の計算期間

といった感じです。
PipMakerV9-1には、ポジションサイジングなどのパラメータがありますがややこしくなってしまいますので、
無くしました^^;


でわこのへんで。

タグ

2008年4月 7日|コメント (15)

カテゴリー:MetaTrader EA

聖杯EAの原石の原石!?PipMaker

前回紹介しました、PipMakerですが、エラーが出てしまうといった報告がありました。

まだ、原因が分かってませんが、PipMakerV9-1のいろいろな機能を削って骨の部分だけのものを作りました。

PMsimple.zip(mq4ファイル)

また、報告お願い致しますm(..)m

タグ

2008年3月28日|コメント (20)

カテゴリー:MetaTrader EA

聖杯EAの原石!!PipMaker

http://www.forex-tsd.com/expert-advisors-metatrader-4/8126-pipmaker-v1-price-action-based-ea.html

で、無料公開されているEA、PipMakerV9-1をデモ取引で試してみました!

PipMakerV9-1.zip(mq4ファイル)


ものすごい勢いで残高が増えて行きます。
デモで体験してみてください!

バックテスト結果を見ると、時々塩漬け状態になるポジションが発生しますが、他のポジションで相殺する感じですね。ポジション同士のチームワークで勝ち続けるシステムです。なので、ある程度の残高が必要になります。

しかし、相殺できないときがありドローダウンが大きくなりすぎると破産します。
そうならないために、掲示板ではいろいろなバージョンがありますが、PipMakerV9-1にランダムエントリーでも利益を出すあのトレイリング(日足ベース14日ATRの三倍のストップ)を付け加えてみました!

PipMakerV9-1トレイリング(日足ベース14日ATRの三倍のストップ)

2000年から2007年のUSDJPY1分足(データはMeta Quates)でのバックテストのグラフです。
(1分足なのでModelling Qualityは25%です)


http://codebase.mql4.com/en/2595
のような1分足のバックテストの特異性を利用したものではないです^^;


8年間で数回(数年に1度の割合)、数ヵ月分の大きな損失が発生しました。

まだ、コードをしっかりと解読していないので、なんともいえませんが、
ほとんどの通貨ペア、時間足で有効なので、
ポジションサイズ、塩漬けの相殺方法または損切り方法次第で最強の聖杯になると思います。

今後、PipMakerのコード解読、戦略研究をしていきたいと思います!


でわ、このへんで。

ありがとうございます。

タグ

2008年3月26日|コメント (31)

カテゴリー:MetaTrader EA

Multi_Lot_Scalperの改造

今回も、Multi_Lot_Scalperの解読のつづきです。

前回作ったものを、少し改良しました!

MetatoreLotScalperV2.zip(mq4ファイル)


今回の改良点

このシステムは、資産が多ければ多いほど有利なシステムなので、
ロット数を少なめにするようにしました。(ドル口座での計算です)

手仕舞いしたバーでは取引しないようにし、
資産のパーセンテージで利食い、損切りできるようにしました。

手仕舞いしたバーでも取引するバージョン
MetatoreLotScalperV4.zip(mq4ファイル)

パラメータで

ProfitPer

は含み益が資産の何%に達したら利食いするという値。

LossPer

は含み損が資産の何%になったら損切りするという値です。

Pips

は何ピプス損失方向に動いたらナンピンするという値です。

xlot

はナンピン時のロット数を、前回の何倍にするかという値です。


シグナルの部分はそのままなのでフィルタをつけるなどして試してみてくださいね。

シグナルはMACDなので、フィルタはストキャスなどのオシレーター系が良いかと思います。


今回は、コードの説明は無いですが、気になる部分などありましたらコメントしてくださいね!


でわ、手短ですがこのへんで^^;


応援お願い致します!
→FXシステムトレード派
→rank応援クリック
→人気ブログランキング

タグ

2008年1月27日|コメント (10)

カテゴリー:MetaTrader EA

NewNice戦略トレンド編

今回は、ブログ読者様の幸さんのアイデアをMetaboNewNiceに付け加えてみましょう!

幸さんのアイデア
①100日、300日平均移動線とボリンジャー20日線が同じ方向のみエントリー。
②20日線の角度により、エントリーするか見送りか決める。

ここで、 ②の20日線の角度というのは、表示中のチャートの縦幅によって変わってしまうので、20日線の増減で計るようにしましょうか。

使うコードは、
まずは、パラメータ

extern double MA20upPips=0.1;
extern double MA20downPips=0.1;

として、20日線が一つ前のバーで何ピプス以上動いたらシグナルを出すのかという条件の数値です。

次に

//トレンド用の計算
double ma1001=iMA(NULL,0,100,0,MODE_SMA,PRICE_CLOSE,1);
double ma1002=iMA(NULL,0,100,0,MODE_SMA,PRICE_CLOSE,2);
double ma3001=iMA(NULL,0,300,0,MODE_SMA,PRICE_CLOSE,1);
double ma3002=iMA(NULL,0,300,0,MODE_SMA,PRICE_CLOSE,2);
double ma201=iCustom(NULL,0,"Bollinger Bands - Fibonacci Ratios",0,1);
double ma202=iCustom(NULL,0,"Bollinger Bands - Fibonacci Ratios",0,2);

double ma20updown=(ma201-ma202)/Point;

です。
上から、100日線の一つ前の値と、二つ前の値、300日線の一つ前の値と、二つ前の値、
ボリンジャーの真ん中の線の一つ前の値と、二つ前の値。

そして、ボリンジャーの真ん中の線が何ピプス動いたかを計算します。
ここで、ma20updownの値がプラスなら増、マイナスなら減ということになりますね。

これを、買い条件の前あたりに記入して計算してもらいましょう。


そして、

//買い条件
if(STC[2]<5 && STC[1]>5 && ma1002<ma1001 && ma3002<ma3001 && ma20updown>MA20upPips)
{

//売り条件
if(STC[2]>95 && STC[1]<95 && ma1002>ma1001 && ma3002>ma3001 && -1*ma20updown>MA20downPips)
{

というように前回の条件に&&を使って足してあげましょう。
売り条件の最後の-1*ma20updown>MA20downPips
MA20downPipsよりma20updownのほうが大きく減った場合、という意味ですね。

トレンド方向のみのエントリーのコードは以上を付け足せばOKです。

MetaboNewNiceTrend.zip(mq4ファイル)


今回私がバックテストした結果、有効なパラメータ、通貨や時間足などを見つけることができませんでした。

もし、有効なものが見つかりましたら教えてくださいね^^;


でわ、今回はこの辺で。


応援ありがとうございます!
→FXシステムトレード派
→rank応援クリック
→人気ブログランキング


ps
メルマガはじめました!
有益情報を配信したいと思います。
メルマガ読者限定プレゼント企画も考えています。
よろしくお願いいたしますm(..)m

タグ

2008年1月 6日|コメント (5)

カテゴリー:MetaTrader EA

zyx40さんのルール検証3

今回は、zyx40さんのルール検証の続きです。


通貨ペアEURUSDで一時間足(H1)で
zyx40さんのパラメータ
TakeProfit_L=40;
StopLoss_L=134;
TakeProfit_S=26;
StopLoss_S=216;
TradeTime=18;
lot=4;
Orders=3;
MaxOpenTime=168;

を固定し t1, t2, delta_L, delta_S を調べてみました。
(ODLの過去データで検証)

zyx40-2007-10-12.zip(Excelファイル)

やはり、zyx40さんのアイデア部分がないため、同じ動きのものはないようですね^^;


今回はチャンピオンシップのため、大きめのリスクで運用されたと思います。
なので、レバレッジ10倍という条件で2007年のデータで最適化をしてみました。

パラメータ
Leverage=10;
TradeTime=18;
Orders=3;

は固定です。

Zyx40F.zip(mq4ファイル)

zyx40-2007.zip(Excelファイル)


結果から、
取引回数 100回以上
最大ドローダウン 20%以下

というフィルタをかけると7つほどデータが残りました。

プロフィットファクター上位は
TakeProfit_L=44,
StopLoss_L=85,
TakeProfit_S=5,
StopLoss_S=166,
t1=18,
t2=11,
delta_L=15,
delta_S=15,
MaxOpenTime=36,


TakeProfit_L=5,
StopLoss_L=50,
TakeProfit_S=5,
StopLoss_S=114,
t1=9,
t2=1,
delta_L=2,
delta_S=18,
MaxOpenTime=82,

でした。


傾向としては
利食い幅は買いの方が大きい
損切り幅は売りの方が大きい
値動き幅は買いの方が敏感

というような感じです。

これは、2007年は値上がり状態だったので当然ですね。


パラメータが多い分、カーブフィッティングになり易いですが、
ある程度の将来の値動きが予測できる場合は有効かもしれません。

そこのところは、裁量が必要かと思います。


今回はこの辺で。

次回は、MetaboNewNice戦略研究について書こうかと思ってます。


皆様の応援のおかげで→FXシステムトレード派1位になっております!

応援ありがとうございます!
→FXシステムトレード派
→rank応援クリック
→人気ブログランキング

タグ

2008年1月 3日|コメント (4)

カテゴリー:MetaTrader EA

zyx40さんのルール検証

今回は、自動売買チャンピオンシップ2007で第5位に入賞し
3ヶ月弱で$10000を約3.7倍にしたzyx40さんが元にしたEAを見ていきましょうか!

Zyx40.zip

(2007.12.27 記事訂正しました)

なんだか、ロシア語が書いてありますが^^;
早速、上から見ていきましょう!


extern int TakeProfit_L = 40; // Уровень тейкпрофит в пунктах
extern int StopLoss_L = 133; // уровень стоплосс в пунктах
extern int TakeProfit_S = 27; // Уровень тейкпрофит в пунктах
extern int StopLoss_S = 200; // уровень стоплосс в пунктах
extern int TradeTime=18; // Время входа в рынок
extern int t1=7;
extern int t2=2;
extern int delta_L=9;
extern int delta_S=10;
extern double lot = 0.1; // Размер лота
extern int Orders=1; // максимальное количество одновременно открытых позиций
extern int MaxOpenTime=138;

パラメータですね。
ロング(買い)とショート(売り)の利幅と損切り幅を作ってます。(ロシア語部分は各パラメータの説明です)
TradeTime は、時間の設定です。(このEAは、ODLの時間に合わせてあるようです。)
t1,t2はいつのバーなのかを、設定するものです。
delta_L,delta_Sは、変動ピプスのようです。
lotはロット数。
Ordersは、一度に持つポジションの数のようです。
MaxOpenTimeで、ポジション保持時間を制限します。

各パラメータは、コードを見ていくと役割が分かってきますので、次に進みましょう。


int ticket,total,cnt;
bool cantrade=true;
double closeprice;
double tmp;

記憶用の変数を宣言してます。
これらも後にでてくる、大事な変数です。


次から、自作の関数を宣言しています。プログラマーさんが書いたものを見ると、よく見かける形なのですが、こうすることで処理速度を速めてるのだと思います。(推測ですが^^;)

int OpenLong(double volume=0.1)
// функция открывает длинную позицию размером лота=volume
{

整数の性質を持った OpenLong(小数値) という関数を作ります。カッコ内は volume という初期値0.1の小数変数を宣言しています。
その下の説明では、
//ロット数=volume の買いポジションを持つ関数
としてあります。

次に

int slippage=10;
string comment="20/200 expert v2 (Long)";
color arrow_color=Red;
int magic=0;

として、この関数の中だけで使う変数を宣言しています。
SendOrder のカッコ内のもののようですね!commentには v2 の文字がありますが、
バージョン更新の前のままのものかと思います。

そして、

ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss_L*Point,Ask+TakeProfit_L*Point,comment,magic,0,arrow_color);

としています。
ここで、OrderSend という関数の性質なのですが、「カッコ内で指定したものをオーダーする」ということと、「オーダー先のサーバーから割り当てられた注文番号を返す」というものがあります。
ここでは、注文を出しつつ、ticket という整数変数に注文番号を代入しています。
(もし、エラーなどで注文が成立しなかった場合は、【-1】という整数が代入されることになります。)

OrderSend のカッコ内は、ほとんど変数で指定されています。
ここで、volume が出てくるのですが、これは、自作の関数OpenLong(volume) を使ったときに取得するものです。

例えば、プログラム中に
・・・
OpenLong(0.6);
・・・
といった感じで書かれた場合は、小数変数 volume に0.6を代入して
OpenLong(volume)を宣言した{}内をおこなうという手順になります。

次に
if(ticket>0)
{

として、注文番号が割り当てられた時に実行することを書いてあります。

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
return(0);
}

となっています。
ここで、OrderSelect という関数の性質なのですが、「カッコ内で指定したものを選択する」ということと、「無事選択できたら true 、選択できなかったら false になる」というものがあります。

ここでは、二つ目の true か false になるということを利用しています。(,MODE_TRADESを省略しても同じ意味になります)

また、ここではプログラミングの構文みたいなものが使用されています。

それは、

if(bool型)
{
true(真)の場合、実行するコード
}
else
{
false(偽)の場合、実行するコード
}

といったものです。if文のカッコの中に==や>などがないのが特徴的ですね。

なので、
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
return(0);
}
は、注文番号ticketのものをちゃんと選択できたら、
この関数(OpenLong)内の実行は、これでおしまいといった感じです。

次に

else
{
Print("OpenLong(),OrderSelect() - выдал ошибку : ",GetLastError());
return(-1);
}
}

は、先ほどのfalseになったときの実行コードですね。
ここで、Print()というものが、でてきます。これは、()内のものを操作履歴に書き込むというものです。
複数書き込むには、カンマで区切って書いてあげます。また、文字を書き込みたいときは【"】で挟んであげます。
この場合は、OpenLong(),OrderSelect() - выдал ошибку : という文字と、GetLastError()という関数でどんなエラーが生じたのかを書き込みます。
文字の部分は、OpenLong()関数内のOrderSelect()関数で発せられたエラーは:っと言った感じです。

その後、return(-1);で、OpenLong()関数は-1ですよという処理をしてこの関数の実行は終了しています。エラーが出た関数は-1にするといった習慣なのでしょう。


次に

else
{
Print("Error opening Buy order : ",GetLastError());
return(-1);
}
}

として、Ticket が0より大きくない時に実行するコードが書いてあります。

ここでも、先ほどと同じ感じですね。買いのオーダーの時のエラーは:~ といった感じですね。そして、return(-1);で終了です。
最後の}でOpenLongの関数の実行は終わりです。

プログラム中に
OpenLong(小数値);
と書くだけで、
int OpenLong(double volume=0.1)
{
}
の事を実行するわけですね!


次に、

int OpenShort(double volume=0.1)

として、今度は売りオーダーの関数を作るわけです。
やりかたは、OpenLong の時と同じ感じですね。説明は省略です^^;

そのあとの、int init() と int deinit() は空っぽですね。前処理、後処理は特におこなっていません。

さあ、いよいよint start() の中身です!


ですが、今回の記事はこの辺で。
次回は、int start() の中身からです。


皆様の応援のおかげでランキング上位に!ありがとうございます!
みんなの応援クリックが活力になっております。
これからも、よろしくお願いいたしますm(..)m
→FXシステムトレード派
→rank応援クリック

タグ

2007年12月26日|コメント (13)

カテゴリー:MetaTrader EA