ライブラリ: BestInterval - ページ 2

 
Sergey Chalyshev:

まだ何もしていない。このコードをコンパイルしようとしているところだ:

このコードはコンパイルできます。VirtualとBestIntervalは昨日更新されました。古いバージョンかもしれません。

Virtual なしでコンパイルできます、

BestInterval なしでもコンパイルできます、

しかし、一緒にコンパイルすることはできません。

アップデートの前は、これらのライブラリは完全に独立していたので、衝突があったのです。昨日投稿したバージョンにはこの問題はありません。
 

どういう意味だ?

2018.10.16 15:54:45.104 Core 1  2018.08.30 23:59:59   Amount of Delete Intervals = 0
2018.10.16 15:54:45.104 Core 1  2018.08.30 23:59:59   SUMMARY: 00:00:00 - 23:59:59 : Profit = 0.00, Total = 0, PF = Max, Mean = 0.00
2018.10.16 15:54:45.104 Core 1  final balance 2978.46 USD
2018.10.16 15:54:45.104 Core 1  OnTester result 0
あなたのライブラリからは他に入力パラメータがありません。

 
Sergey Pavlov:

どういう意味ですか?

ライブラリからの入力パラメータはもう一つもありません。

取引、自動取引システム、取引戦略のテストに関するフォーラム。

ライブラリ: BestInterval

fxsaber, 2018.10.16 2:57 pm.

VirtualとBestIntervalは昨日更新されました。古いバージョンをお持ちかもしれません。

 
fxsaber:

このコードはコンパイルされる。VirtualとBestIntervalは昨日更新されました。古いバージョンかもしれません。

ありがとう!

Virtualを更新しました。

 
fxsaber:

Expert Advisor はコンパイルされ、スキップのインターバルは計算され、ファイルは Common に表示されます。

ステージ1。

しかし、inBestInterval_Actionパラメータはテスターになく、VIRTUAL_TESTERの有無にかかわらず表示されません。

ステージ2。

その結果、スローされたインターバルを考慮してテストを実行することができません。

何が間違っているのでしょうか?

 
Mikola_2:

Expert Advisorがコンパイルされ、スキップの間隔が計算され、ファイルがCommonに表示される。

しかし、inBestInterval_Actionパラメータがテスターになく、VIRTUAL_TESTERの有無にかかわらず表示されません。

従って、投げられたインターバルを考慮してテストを実行する方法はありません。

何が間違っているのでしょうか?

VIRTUAL_TESTERは、最適化または逆方向のスピードアップにのみ必要です。そのため、BestIntervalを使用することは規定されていません。

取引、自動取引システム、取引戦略のテストに関するフォーラム。

ライブラリ: BestInterval

fxsaber, 2018.10.15 13:30

1. 任意のExpert Advisorを取り出し、その冒頭に以下の行を記述します。

#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006

#define  BESTINTERVAL_ONTESTER // 最適化の基準は、最良の区間の利益である。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/ja/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/ja/code/22710


ZY コードがわかってよかったですね。ライブラリがKBと同じ形式であれば、理由はわかりません。おそらく、VIRTUAL_TESTERを削除したときにコンパイルし忘れたのでしょう。

 

fxsaber:

ZY コードが整理されたのはいいことだ。もしライブラリがKBと同じなら、理由はわからない。おそらくVIRTUAL_TESTERを削除する際にコンパイルし忘れたのでしょう。

以下の内容でTesterEA_mq4.mq5というファイルを作りました:

#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006
#define  VIRTUAL_TESTER // 仮想取引環境での実行
#define  BESTINTERVAL_ONTESTER // 最適化の基準は、最良の区間の利益である。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/ja/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/ja/code/22710
#include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>

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で試してみました。

#ifndef  VIRTUAL_TESTER
  sinput
#endif
bool inBestInterval_Action = false; // ベスト・インターバル・アクション

の代わりに

//#ifndef VIRTUAL_TESTER
// sinput
//#endif.
sinput bool inBestInterval_Action = false; // ベスト・インターバル・アクション

BestInterval Action変数がテスターに表示されるのですが、BestInterval Action=falseだと全てログに綺麗に記録されるのですが、BestInterval Action=trueだと全てのテストが実行され、インターバルについては何もログに記録されないのです...。

残念です。)

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
 
Mikola_2:

以下のファイル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のソースです。

#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006

//#define VIRTUAL_TESTER // 仮想取引環境で実行する
#define  BESTINTERVAL_ONTESTER // 最適化の基準は、最良の区間の利益である。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/ja/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/ja/code/22710

#include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>


Action = trueでは、Action = falseでログに計算されたのと同じ利益がテスターのレポートに表示されるはずです。

 
fxsaber:

アクションのソースコード

Action = trueの場合、Action = falseの場合のログで計算されたのと同じ利益がテスターのレポートに表示されるはずです。

いや、石の花は出てこない... :)

この形だと、Action = trueにすると、決済注文が一切出なくなり、すぐに新規注文でマージンを食いつぶしてしまう(おそらくCloseByで何かしている)...。

Virtual.mqhを無効にすると、すべてが機能しますが、Actionの間隔は無視されます。

そして、あなたのコードをより深く理解するのは困難です。;)

 
Mikola_2:

いや、石の花は出てこないよ...)

このフォームでは、Action=trueにすると、決済注文が一切出なくなり、すぐに新規注文でマージンを食いつぶしてしまう(おそらくCloseByで何かしている)...。

ネッティングで実行されても驚かない。CloseByはそこでは機能しない。

Virtual.mqhを無効にすると、すべてが機能しますが、Action intervalは無視されます。

そして、あなたのコードをより深く理解するのは大変なことです。;)

垣根の上でやってくれ。もちろん、MT4-advisorはこのモードでは動作しないはずなので、ネットは気にしなかった。


悪いインターバルを無視するアルゴリズムは簡単だ。TSは仮想環境で起動される。そこで、計算されたインターバルに合うオープン・ポジションだけの ネット・ポジションが計算される。そして、そのネット・ポジションを実環境のバーチャル・ポジションと同期させる。これは分析にとって最も醜い方法で行われますが、実装は簡単です。

実はリバースモードも同じように実装されている。CloseByをネッティング口座でも使えるように書き直すこともできる。私はそれをする暇がなかった。