Ads by Google
新しい記事を書く事で広告が消せます。
MetaTrader Expert Advisorでの注意事項
よなよなExpert Advisorをいじったり、エクセルでデータ編集したりしているサイト主です。で
ちょっと気づいたことがあるのでUPです。
エクセル上では、60%ぐらいの勝率で、かつ勝ち幅も負けよりは大きいという状態を見つけたので、
これはいけんじゃね?
と思ってExpert Advisorかしたら、見事なまでに大赤字になりました。
で、その原因っぽい内容なんですが、Expert AdvisorはSlippageを相当大きくとってシュミレーションするようです。
ある通貨では常に7pipのスリップををとって、シュミレーションしておりました。
ということで、細かい取引のシュミレーションには、Expert Advisorは余り向いていないようです。
追記1
通貨ペアによって固定Slippageは大きく変るようです。EURUSDは毎回2pipを確実に取っていきます。自分で作っている決済系のシステムなら、平均すれば2pipもスリップさせないって自信はあるのでMetaTraderで利益が出せれば、結構望みはありそうだと思えてきました。
ちなみに、7pipはGBPCHFです。
追記2
この現象は、OP_BUY、OP_SELLの成り行き系?の注文時の場合のみのようです。指値(Stop)の場合はきっちり指定した値で動きました。stopでもslipするときはあると思うんですが、、、
ちょっと気づいたことがあるのでUPです。
エクセル上では、60%ぐらいの勝率で、かつ勝ち幅も負けよりは大きいという状態を見つけたので、
これはいけんじゃね?
と思ってExpert Advisorかしたら、見事なまでに大赤字になりました。
で、その原因っぽい内容なんですが、Expert AdvisorはSlippageを相当大きくとってシュミレーションするようです。
ある通貨では常に7pipのスリップををとって、シュミレーションしておりました。
ということで、細かい取引のシュミレーションには、Expert Advisorは余り向いていないようです。
追記1
通貨ペアによって固定Slippageは大きく変るようです。EURUSDは毎回2pipを確実に取っていきます。自分で作っている決済系のシステムなら、平均すれば2pipもスリップさせないって自信はあるのでMetaTraderで利益が出せれば、結構望みはありそうだと思えてきました。
ちなみに、7pipはGBPCHFです。
追記2
この現象は、OP_BUY、OP_SELLの成り行き系?の注文時の場合のみのようです。指値(Stop)の場合はきっちり指定した値で動きました。stopでもslipするときはあると思うんですが、、、
雑学:著作権について
法律の勉強:著作権法で保護されるのは「特定の表現」であり「情報そのもの」ではない
ということで、indicatorの場合も上記のように扱いになるのでしょうか?「解法」「アルゴリズム」等は、著作権の対象にならないと理解しているので、indicatorのロジック自体も著作権で保護されるものではないと私は認識しています(ソースの表現のみが著作権保護の対象と理解してます)。
(注)法律の専門家ではないので誤っている可能性もあるので鵜呑みにはしないでください。著作権まわりはソフトウェア屋として多少は勉強しているのですが、所詮WEBでの知識です。
先日、著作権に関するとても興味深い話を弁護士の人から聞くことができた。実際にあった法廷闘争に基づく話だが、トピックは、「他の人が書いた料理の本に乗っているレシピを参考に、似たような料理の本を出版した場合、どんな法律を破っていることになるか」という話である。
適用できる法律は、著作権、特許、登録商標の三つ。それぞれについて考察を加えるとこうなる。
【著作権】このケースで言えば、著作権で守られているのは、文章そのもの・イラスト・写真。レシピそのものは著作権では保護されない。つまり、オリジナルの料理本の文章を丸写しにしたり、イラスト・写真をそのままコピーしさえしなければ、(材料・調理方法などが)まったく同一のレシピの本を書いても著作権法違反にはならない。言い換えれば、著作権で保護されるのは、「特定の表現」であり「情報そのもの」ではない。
ということで、indicatorの場合も上記のように扱いになるのでしょうか?「解法」「アルゴリズム」等は、著作権の対象にならないと理解しているので、indicatorのロジック自体も著作権で保護されるものではないと私は認識しています(ソースの表現のみが著作権保護の対象と理解してます)。
(注)法律の専門家ではないので誤っている可能性もあるので鵜呑みにはしないでください。著作権まわりはソフトウェア屋として多少は勉強しているのですが、所詮WEBでの知識です。
MetaTrader 小物Tips6 あまりにもindicatorの動作が遅いと感じたら・・・
indicator単独で遅さを感じることは余り無いと思いますが、indicatorを使用したExpert Advisorの場合、非常に遅く延々と待ち時間が発生する場合があります。
その場合は、下記の一行があるか確認しましょう。
int counted_bars=IndicatorCounted();
上記は、動作の正確性には関係ないですが、無駄な計算を省くための機能となります。
以下説明の引用です。
やっていることは、変っていないBarの数を取得し、現在のBarの総数(Bars)より変っわっていないBar数の数を引くことによって、変ったBarの数を算出します。
で、変わって再計算の必要のあるBar分だけ計算し直すといった事をしております。
この処理は、拾ってきたindicatorから抜けていることがままあります。この処理を入れるだけでパフォーマンスは劇的に改善するので、パフォーマンスで悩んだ場合は見てみるのがいいと思います。
いまいちピンと来ない方は下記のページ等も参考になるでしょう。
移動平均線を作る(移動平均線の描画)
MT4入門(4) - カスタムインディケータの作り方(2)
できましたら、下記の協力お願いいたします。
その場合は、下記の一行があるか確認しましょう。
int counted_bars=IndicatorCounted();
上記は、動作の正確性には関係ないですが、無駄な計算を省くための機能となります。
以下説明の引用です。
The function returns the amount of bars not changed after the indicator had been launched last. The most calculated bars do not need any recalculation. In most cases, same count of index values do not need for recalculation. The function is used to optimize calculating.
Note: The latest bar is not considered to be calculated and, in the most cases, it is necessary to recalculate only this bar. However, there occur some boundary cases where custom indicator is called from the expert at the first tick of the new bar. It is possible that the last tick of the previous bar had not been processed (because the last-but-one tick was being processed when this last tick came), the custom indicator was not called and it was not calculated because of this. To avoid indicator calculation errors in such situations, the IndicatorCounted() function returns the count of bars minus one.
Sample:int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- main loop
for(int i=0; i{
//---- ma_shift set to 0 because SetIndexShift called abowe
ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
}
//---- done
return(0);
}
やっていることは、変っていないBarの数を取得し、現在のBarの総数(Bars)より変っわっていないBar数の数を引くことによって、変ったBarの数を算出します。
で、変わって再計算の必要のあるBar分だけ計算し直すといった事をしております。
この処理は、拾ってきたindicatorから抜けていることがままあります。この処理を入れるだけでパフォーマンスは劇的に改善するので、パフォーマンスで悩んだ場合は見てみるのがいいと思います。
いまいちピンと来ない方は下記のページ等も参考になるでしょう。
移動平均線を作る(移動平均線の描画)
MT4入門(4) - カスタムインディケータの作り方(2)
できましたら、下記の協力お願いいたします。
MetaTrader 小物Tips5 未来を見ているindicatorにご用心
各indicatorの意味、使用方法を熟知していれば問題ないと思うのですが、山のようなindicatorがあり、その中には未来の情報を見ているもの(≒遅延して結果が出る)といったものがあります。
本来の使い方では、他のサインと組み合わせるため、その遅延はなんら問題ないのですが、知識がないとチャート上に表示される結果のみを見て、
これすごくね!!?
みたいに期待して痛い目を見ることがあります。
indicatorが過去の情報のみを参照しておりサインをそのまま使っていいものか判断するには、EA化するのがお勧めです。EA化して、サインが出たときに発注を行い、シュミレーション結果をチャートに表示して、画面上のindicatorのマーカーと、実際の注文位置がずれていた場合は、たぶん黒でしょう。
チャートのみをみているとそのindicatorが実際に何をしているか理解を誤ることが多々あります。
・英語でもしっかり説明を読む
・ソースを読んで何を行っているか理解する
・EAにして実際の動作を確認してみる
・リアルタイムでチャートにどう表示され、どう変っていくかみる
といったことが必要なのではないかと思います(まあ、説明読めっていうのが基本なんですが、日本語での情報が全然無いものもありますので、、、)。
参考になりそうな記事
メタトレーダーQ&A:エキスパートプログラムで自動売買できない
本来の使い方では、他のサインと組み合わせるため、その遅延はなんら問題ないのですが、知識がないとチャート上に表示される結果のみを見て、
これすごくね!!?
みたいに期待して痛い目を見ることがあります。
indicatorが過去の情報のみを参照しておりサインをそのまま使っていいものか判断するには、EA化するのがお勧めです。EA化して、サインが出たときに発注を行い、シュミレーション結果をチャートに表示して、画面上のindicatorのマーカーと、実際の注文位置がずれていた場合は、たぶん黒でしょう。
チャートのみをみているとそのindicatorが実際に何をしているか理解を誤ることが多々あります。
・英語でもしっかり説明を読む
・ソースを読んで何を行っているか理解する
・EAにして実際の動作を確認してみる
・リアルタイムでチャートにどう表示され、どう変っていくかみる
といったことが必要なのではないかと思います(まあ、説明読めっていうのが基本なんですが、日本語での情報が全然無いものもありますので、、、)。
参考になりそうな記事
メタトレーダーQ&A:エキスパートプログラムで自動売買できない



