Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
まだ何もしていない。このコードをコンパイルしようとしているところだ:
このコードはコンパイルできます。VirtualとBestIntervalは昨日更新されました。古いバージョンかもしれません。
Virtual なしでコンパイルできます、
BestInterval なしでもコンパイルできます、
しかし、一緒にコンパイルすることはできません。
どういう意味だ?
あなたのライブラリからは他に入力パラメータがありません。どういう意味ですか?
ライブラリからの入力パラメータはもう一つもありません。取引、自動取引システム、取引戦略のテストに関するフォーラム。
ライブラリ: BestInterval
fxsaber, 2018.10.16 2:57 pm.
VirtualとBestIntervalは昨日更新されました。古いバージョンをお持ちかもしれません。
このコードはコンパイルされる。VirtualとBestIntervalは昨日更新されました。古いバージョンかもしれません。
ありがとう!
Virtualを更新しました。
Expert Advisor はコンパイルされ、スキップのインターバルは計算され、ファイルは Common に表示されます。
しかし、inBestInterval_Actionパラメータはテスターになく、VIRTUAL_TESTERの有無にかかわらず表示されません。
その結果、スローされたインターバルを考慮してテストを実行することができません。
何が間違っているのでしょうか?
Expert Advisorがコンパイルされ、スキップの間隔が計算され、ファイルがCommonに表示される。
しかし、inBestInterval_Actionパラメータがテスターになく、VIRTUAL_TESTERの有無にかかわらず表示されません。
従って、投げられたインターバルを考慮してテストを実行する方法はありません。
何が間違っているのでしょうか?
VIRTUAL_TESTERは、最適化または逆方向のスピードアップにのみ必要です。そのため、BestIntervalを使用することは規定されていません。
取引、自動取引システム、取引戦略のテストに関するフォーラム。
ライブラリ: BestInterval
fxsaber, 2018.10.15 13:30
1. 任意のExpert Advisorを取り出し、その冒頭に以下の行を記述します。
ZY コードがわかってよかったですね。ライブラリがKBと同じ形式であれば、理由はわかりません。おそらく、VIRTUAL_TESTERを削除したときにコンパイルし忘れたのでしょう。
fxsaber:
ZY コードが整理されたのはいいことだ。もしライブラリがKBと同じなら、理由はわからない。おそらくVIRTUAL_TESTERを削除する際にコンパイルし忘れたのでしょう。
以下の内容でTesterEA_mq4.mq5というファイルを作りました:
TesterEA.mq4ファイルはKBのオリジナルです。正常にコンパイルされている。
MT4Orders、Virtual、BestIntervalはKBからの新しいものです。
EMA.mqhを修正した(ゼロ除算の エラーが出ていた):
EMA( const int period ) :アルファ(1.0 / 期間), 値(0)
で
EMA( const int period ) :アルファ(2.0 / (期間+1.0)), 値(0)
の代わりにBestInterval.mqhで試してみました。
の代わりに
BestInterval Action変数がテスターに表示されるのですが、BestInterval Action=falseだと全てログに綺麗に記録されるのですが、BestInterval Action=trueだと全てのテストが実行され、インターバルについては何もログに記録されないのです...。
残念です。)
以下のファイルTesterEA_mq4.mq5を作成した:
TesterEA.mq4はKBのオリジナル。普通にコンパイルした。
MT4Orders,Virtual,BestIntervalはKBから入手したものです。
EMA.mqhを修正(ゼロ除算 エラーが出る):
EMA( const int period ) :アルファ(1.0 / 期間), 値(0)
による
EMA( const int period ) :Alpha(2.0 / (period+1.0)), Value(0).
周期がゼロというのは正しくない値です。つまり、ゼロによる除算は正常であり、そのような値を設定できないことを示すためにわざと残している。
BestInterval.mqhで試したのは、代わりに
作る
BestIntervalのAction変数がテスターに表示され、BestIntervalのAction=falseでは全てログに美しく表示されるのですが、BestIntervalのAction=trueではテストは全て実行され、ログにはインターバルについて何も書かれません...。
残念です。)
以下はActionのソースです。
Action = trueでは、Action = falseでログに計算されたのと同じ利益がテスターのレポートに表示されるはずです。
アクションのソースコード
Action = trueの場合、Action = falseの場合のログで計算されたのと同じ利益がテスターのレポートに表示されるはずです。
いや、石の花は出てこない... :)
この形だと、Action = trueにすると、決済注文が一切出なくなり、すぐに新規注文でマージンを食いつぶしてしまう(おそらくCloseByで何かしている)...。
Virtual.mqhを無効にすると、すべてが機能しますが、Actionの間隔は無視されます。
そして、あなたのコードをより深く理解するのは困難です。;)
いや、石の花は出てこないよ...)
このフォームでは、Action=trueにすると、決済注文が一切出なくなり、すぐに新規注文でマージンを食いつぶしてしまう(おそらくCloseByで何かしている)...。
ネッティングで実行されても驚かない。CloseByはそこでは機能しない。
Virtual.mqhを無効にすると、すべてが機能しますが、Action intervalは無視されます。
そして、あなたのコードをより深く理解するのは大変なことです。;)
垣根の上でやってくれ。もちろん、MT4-advisorはこのモードでは動作しないはずなので、ネットは気にしなかった。
悪いインターバルを無視するアルゴリズムは簡単だ。TSは仮想環境で起動される。そこで、計算されたインターバルに合うオープン・ポジションだけの ネット・ポジションが計算される。そして、そのネット・ポジションを実環境のバーチャル・ポジションと同期させる。これは分析にとって最も醜い方法で行われますが、実装は簡単です。
実はリバースモードも同じように実装されている。CloseByをネッティング口座でも使えるように書き直すこともできる。私はそれをする暇がなかった。