攻略テスターへの不満。MQL開発者への不満。 - ページ 2

 
Alexey Volchanskiy:

レナート せっかくだから、この機会に聞いてみようか。新社屋でのサービスはあるのか、それとも今のところ延期なのか。

後日談です。

一方、合成楽器のデータフィードは、それらを使用せずに書くことができます。

 
Renat Fatkhullin:

後日談です。

とりあえず、それがなくても合成ツールのデータフィードは書けるんです。


マルチスレッドが欲しいので、何とかサービスでできないかと考えていました。個人的にはまだデータフィードは必要ありません。

 

皆さん、ごきげんよう。

いや、この記事は誰かが書いたようなデタラメなものではありません。

フルサージ中です。

プログラマーが書いたり、言ったりするものが機能するのは理解できるのですが、残念です。

ブローカーで全員が誤ったデータで作業しても、私の結果は誤りではない、ということがすぐに分かります。

皮肉なことに、私は大学で統計学のエンジニアになるべく勉強してきたのかもしれないということです。

だから私のために誤ったデータは、一般的にそれに応じて偽のデータである私は何を参照してください動作することを99%を言うために統計の男として私は同じが言う知っていないと言うあなたとすべての人は、このポストをお読みください。

解決策は、上に書いたとおりです。

簡単なロボット・アルゴリズムで、誰でもできるダニ集め。

実際、5MQLでも4MQLでも、ストラテジーのテストに使用すべきマーケットデータはありません。

長期的な戦略では、ロボットは必要ないと思います。

私にとってはティックのためのティックであり、ティックごとにascとbidを研究する面白いアイデアを持っています。

本当に忙しくて、長い返信と時間になってしまい申し訳ありません。

敬具 Ivan S.

 
Alexey Volchanskiy:

一度書いたので、探してみます。

5人分https://www.mql5.com/ru/code/18046

4人分https://www.mql5.com/ru/code/18047

6の場合、https://www.mql5.com/ru/code/。


驚かれると思いますが、5も4も同じです。

4と5を同時に語れる!


アルゴリズムの全コードを読んだわけではありませんが、基本的にこの部分は保存用ですが、今度はこのAskを再現してStrategy Testerに出力させる必要があるのです。

もし、これができるプログラマーがいたら、私はとても注意深く聞いていますよ。

 
Renat Fatkhullin:
私の記憶違いでなければ、mt5ではテスターはbid/askがリアルなティックにあるのでは?

Renatは、mql5が4 mqlと同じように動作することを確認しました。

 
Ivan Stepanenko:

Renatは、mql5が4mqlと同じように動作することを確認しました。


この問題はとっくの昔に解決しています。

1.MQL5では、約1年前から実際のティックでのテストが可能になっています。端末の勉強をしていれば...。

2.MQL4では、お手持ちのティック.fxtファイルを使用することができます。最も簡単な方法は、TickStory Liteを使用することで、Ducasから実際のティックをダウンロードすることができます。

 
Ivan Stepanenko:

mql5が固定スプレッドを設定するのと同じように動作することをrenatが確認しました。


うそつき

私が作成したティック保存用のExpert Advisor、SaveTicks、上にあげたCodeBaseへのリンクを取り、テスターで「Every tick based on real ticks」モードで実行します。出力ファイルの中身を見てみましょう。私の場合は、 \TesterAgent-127.0.0.1-3000 の場合です。

2017.11.28 09:11:16,1.1895,1.18952

2017.11.28 09:11:16,1.1895,1.18952

スプレッド2

2017.11.28 09:11:26,1.18947,1.18951

2017.11.28 09:11:26,1.18947,1.18951

スプレッド4
 

キャラクターブラウザを見て、どのキャラクターにもチェックが入っている。

これらはテスターで実際に使用されているティックです。

 
Ivan Stepanenko:

皆さん、ごきげんよう。

いや、この記事は誰かが書いたようなデタラメなものではありません。

フルサージ中です。

プログラマーが書いたり、言ったりするものが機能するのは理解できるのですが、残念です。

ブローカーで全員が誤ったデータで仕事をすると、すぐに考えがまとまるので、私の結果は誤りではありません。

皮肉なことに、私は 大学で統計学のエンジニアになるべく勉強して きたのかもしれないということです。

だから私のために誤ったデータは、一般的にそれに応じて偽のデータである私は何を参照してください動作することを99%を言うために統計の男として私は同じが言う知っていないと言うあなたとすべての人は、このポストをお読みください。

解決策は、上に書いたとおりです。

簡単なロボット・アルゴリズムで、誰でもできるダニ集め。

実際、5MQLでも4MQLでも、ストラテジーのテストに使用すべきマーケットデータはありません。

長期的な戦略では、ロボットは必要ないと思います。

私にとってはティックのためのティックであり、ティックごとにascとbidを研究する面白いアイデアを持っています。

本当に忙しくて、長い返信と時間になってしまい申し訳ありません。

敬具 Ivan S.

文法はどうなっていますか?//ちょっと言ってみただけなんだけど...

もし、すべてが深刻なら、質問の解答は次のようになる。

統計、引用の歴史と仕事を収集し、アレクセイVolchanskyはすでにあなたのためにすべてを発見し、上記のリンクを与えた。

Askについて - DucasCopyからAskとBidsの履歴をダウンロードすることができます(ググってください)。

がんばってください。
 

興味深い記事をご紹介します。


また、MetaQuotes-DemoからアップグレードできるMetaTrader 5の昨日のベータ版では、カスタムシンボルを作成する本格的な数式システムが搭載されています。

既存の金融商品を基にした合成金融商品の作成が可能になりました。相場計算式を指定するだけで、プラットフォームはリアルタイムモードで合成商品のティックを生成し、その分履歴を作成します。

仕組み

  • 合成記号を作り、その数式を設定するのです。
  • プラットフォームは、1秒間に10回の割合でそのティックを計算します(式に含まれる少なくとも1つの商品の価格が変更された場合のみ)。
  • プラットフォームは、計算式に含まれる金融商品の分足バーを基に、分足バーの履歴(過去2ヶ月分)を計算します。 すべての新しいバー(現在およびそれ以降)は、合成楽器の生成されたティックを基にリアルタイムで構築されます。
例えば、ドルインデックス(USDX)を表示するようなツールを作成することができます。その数式は次のようになる。
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
注:オリジナルのドルインデックスの計算式は、USDEURとUSDGBPのペアを使用しています。 プラットフォームにはインバース通貨ペアしかないため、合成ツールの計算式では、インバース通貨ペアにマイナス度数を使用し、Bidの代わりにAsk価格を使用します。

リアルタイムで、ブローカーから提供された他の6つの商品の相場を基に、新しい商品の価格を計算します。マーケットウォッチやチャートで、その価格がどのように変化しているかを見ることができます。



カスタム楽器を新規に作成し、その仕様を開いて計算式を指定します。




数式エディタでは、楽器名や関数名を入力すると、可能なオプションのリストが表示され、便利です。

合成商品のティックと分バーの計算は、「Market Watch」に追加された時点から開始されます。その計算に必要なシンボルは、即座に「マーケットウォッチ」に自動的に追加されます。計算開始の記録はプラットフォームのログに追加されます。合成シンボルUSDX:処理を開始しました。
  • 合成商品の計算が停止するのは、Market Watch から非表示にしたときです。
  • 現在、合成商品の計算に使用しているシンボルは、Market Watchから非表示にすることができません。

リアルタイムでの見積もり計算
100ミリ秒(1秒間に10回)ごとに、数式に含まれる少なくとも1つの商品の価格が変化しているかどうかを確認します。その場合、合成商品の価格が計算され、ティックが生成されます。 計算は、Bid、Ask、Lastの3つのストリームで並行して行われます。例えば、計算式に EURUSD*GBPUSD が指定されている場合、合成物質の価格計算は以下のようになります。

  • ビッド - ビッド(EURUSD)*ビッド(GBPUSD)
  • アスク - アスク(EURUSD)*アスク(GBPUSD)
  • 最後 - 最後(EURUSD)*最後(GBPUSD)

変更の有無は、各価格ごとに個別に確認します。例えば、次の計算で最初の商品のビッド価格だけが変更された場合、合成商品のティックでは変更のあった価格だけが計算されます。

ミニッツバーの歴史を築く
リアルタイムでティックを収集するだけでなく、プラットフォームは合成楽器の分単位の履歴を作成します。そのため、トレーダーは通常の商品のようにチャートを表示し、オブジェクトやインジケータを使用してテクニカル分析を行うことができます。

トレーダーが合成商品を Market Watch に追加すると同時に、その商品について計算された分単位の履歴が あるかどうかをチェックします。 そうでない場合は、過去60日分、つまり約5万本のバーが作成されます。プラットフォーム設定のウィンドウにある最大バーがより低い値である場合、これが使用される制限となります。

この時期のバーの一部が既に出来上がっていれば、プラットフォームが新たにバーを作ることになります。より深い履歴は、チャート上で対応するタイムフレームを表示しようとしたときにのみ作成されます(スクロールバックするか、MQL5プログラムから履歴を要求した場合)。

合成楽器の分足の履歴は、その計算式に含まれる楽器の分足(ティックではありません)をもとに計算されます。 例えば、合成商品のオープン分バーの価格を計算するために、プラットフォームは、その式に含まれるオープン商品の価格を取ります。高値、安値、終値も同様に計算されます。

シンボルの数式に分バーがない場合、プラットフォームは前のバーの終値を計算します。 例えば、3つのシンボル:EURUSD、USDJPY、GBPUSDを使用することができます。USDJPYに12:00に対応する分足バーがない場合、以下の価格で計算されます。

  • オープン時:EURUSDオープン12:00、USDJPYクローズ11:59、GBPUSDオープン12:00
  • 高値の場合 - EURUSD高値12:00、USDJPY終値11:59、GBPUSD高値12:00
  • 安値の場合 - EURUSD安値12:00、USDJPY終値11:59、GBPUSD安値12:00
  • クローズの場合 ・EURUSDクローズ12:00、USDJPYクローズ11:59、GBPUSDクローズ12:00

数式内のすべてのシンボルに分バーがない場合、対応する合成分バーは計算されません。

ミニバーの新設
合成ツールのすべての新しいバー(現在と次のバー)は、生成されたティックを基に作成されます。バーが構築される価格は、仕様の「チャート構築」パラメータに依存します。





ツールフォーミュラで使用できる操作について
価格データだけでなく、利用可能なシンボルのいくつかのプロパティ(ブローカーによって提供される)を計算式に使用することができます。これを行うには、指定します。

  • シンボル名 - 合成シンボル価格に応じて、数式は指定されたシンボルのBid、AskまたはLast価格を使用します。例えば、EURUSD*GBPUSDを指定した場合、Bid価格はBid(EURUSD)*bid(GBPUSD)、Ask価格はAsk(EURUSD)*ask(GBPUSD)として算出されます。
  • Bid(symbol name) - 合成シンボルのビッド価格を計算するために、指定されたシンボルのビッド価格が強制的に使用されます。実際には、このバリエーションは以前のもの(価格の種類を指定しない)に相当します。
  • Ask(シンボル名) - 指定されたシンボルのアスク価格は、合成商品のビッド価格を計算するために強制的に使用されます。アスク価格は、指定されたシンボルのビッド価格を使用して計算されます。最終価格の計算には、指定したシンボルの最終価格が使用されます。例えば、Ask(EURUSD)*GBPUSDを指定した場合、以下のような計算になります。
    • ビッド = アスク(EURUSD)*ビッド(GBPUSD)
    • アスク = ビッド(EURUSD)*アスク(GBPUSD)
    • 最後 = 最後(EURUSD)*最後(GBPUSD)
  • last(シンボル名) - 指定されたシンボルの最終価格は、すべての合成シンボル価格(ビッド、アスク、および最終)を計算するために使用されます。例えば、last(EURUSD)*GBPUSDを指定した場合、以下のような計算になります。
    • ビッド = last(EURUSD)*bid(GBPUSD)
    • アスク = last(EURUSD)*ask(GBPUSD)
    • 最後 = 最後(EURUSD)*最後(GBPUSD)
  • volume(シンボル名) - 数式は、指定されたシンボルのティックのボリュームを使用します。ボリューム情報は、指定された機器に翻訳されていることを確認してください。
  • point(シンボル名) - 指定された商品の最小の価格変化の大きさが計算式に使用されます。
  • digits(シンボル名) - 指定したシンボルの価格の小数点以下の桁数が計算式に代入されます。

記号が複雑な名前(ハイフンやドットなどを含む)の場合は、逆カンマで囲む必要があります。例えば、"RTS-6.17 "のように。
計算式には、加算(+)、減算(-)、乗算(*)、除算(/)、除算の余り(%)の算術演算が使用できる。 例えば、EURUSD+GBPUSDは、EURUSDとGBPUSDの合計として価格が計算されることを意味します。また、数式中の単項のマイナスを利用して、例えば符号を変更することも可能です。-10*EURUSD.

算術演算には優先順位があります。

  • 乗算、除算、剰余の演算を先に行い、次に加算、減算の演算を行う。
  • 操作は左から右へ行う。数式中に同じ優先順位を持つ演算が複数ある場合(例えば乗算と除算)、左側の演算が先に実行されます。
  • 大括弧( と )は、操作の優先順位を変更するときに使用します。括弧内の式は、計算上、最も優先されます。左から右への原則も適用され、数式中の左側の括弧内の式が先に計算されます。

数式には定数を使用することもできます。

  • Numeric(整数、実数、ドット付き)。例えば、EURUSD*2+GBPUSD*0.7となります。
  • Digitsと_Pointのシンボルプロパティです。仕様書からカスタムシンボルのプロパティを数式に置き換えるのである。桁数 - シンボル価格の小数点以下の桁数、_ポイント - シンボル価格の最小変化量の大きさです。

また、MQL5でサポートされているすべての数学関数(MathSrand、MathRand、MathIsValidNuberを除く)を数式で使用することが可能です。 fabs()、acos()、asin()など、すべての関数に短い名前だけが使用されます。