初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 486

 

質問 - テスターはスワップを考慮しているのでしょうか?

エクセル(cent account)で計算したら、変な結果になった

P.P. Data Type Lot Price MaxHigh MaxEqDrd
1 2014.06.12 09:52 sell 0.1 1.6824 0.16824 1.7179 -3.55
2 2014.06.12 15:18 sell 0.2 1.6831 0.33662 1.7179 -6.96
3 2014.06.12 15:18 sell 0.1 1.6831 0.33662 1.7179 -6.96 3 2014.06.12 17:52 sell 0.3 1.6836 0.50508 1.7179 -10.29
4 2014.06.12 19:10 sell 0.5 1.6839 0.84195 1.7179 -17.00
5 2014.06.12 19:10 sell 0.5 1.6839 0.84195 1.7179 -17.00 5 2014.06.12 23:00 sell 0.8 1.6845 1.3476 1.7179 -26.72
6 2014.06.16 09:59 sell 1.3 1.6985 2.20805 1.7179 -25.22
7 2014.06.16.19 09:58 sell 2.1 1.7017 3.57357 1.7179 -34.02
8 2014.06.19 11:21 sell 3.4 1.7018 5.78612 1.7179 -54.74
9 2014.06.19 20:40 sell 5.5 1.7033 9.36815 1.7179 -80.30
10 2014.06.19 22:12 sell 8.9 1.7036 15.16204 1.7179 -127.27
11 2014.06.19 22:12 sell 5.5 1.7033 9.36815 1.7179 -80.30 11 2014.06.20 20:40 sell 1.7036 1.16204 -127.2706.20 05:10 売り 14.4 1.7047 24.54768 1.7179 -190.08
12 2014.06.20 05:22 sell 23.3 1.7049 39.72417 1.7179 -302.90
13 2014.06.26 12:38 sell 37.7 1.7030 64.2031 1.7179 -561.73
14 2014.06.26.26 15:18 sell 61.0 1.7033 103.9013 1.7179 -890.60
15 2014.06.27 06:51 sell 98.7 1.7050 168.2835 1.7179 -1273.23
16 2014.06.27 06:51 sell 1.7050 168.2835 1.7179 -1273.23 16 2014.06.30 17:37 売り 100.0 1.7079 170.79 1.7179 -1000.00
17 2014.06.06。30 17:37 sell 59.7 1.7079 101.96163 1.7179 -597.00
18 2014.07.01 09:03 sell 100.0 1.7100 171 1.7179 -790.00
19 2014.07.01 09:03 売り 100.0 1,7100 171 1,7179 -790.00
20 2014.07.01 09:03 売り 58.4 1,7100 99,864 1,7179 -461.36
21 2014.07.01 09:03 売り 100.0 1,7100 171 1,7179 -790.0007.01 11:30 売り 100.0 1,7110 171.1 1,7179 -690.00
22 2014.07.01 11:30 売り 100.0 1,7110 171.1 1,7179 -690.00
23 2014.07.01 11:30 売り 100.0 1,7110 171.1 1,7179 -690.00 23.07.01 11:30 sell 100,0 1,7110 171,1 1,7179 -690,00
24 2014.07.01 11:30 sell 100,0 1,7110 171,1 1,7179 -690,00
25 2014.07.01 11:30 sell 1,7110 171,1 1,7179 -690,00 25.07.01 11:30 sell 18.1 1.7110 30.9691 1.7179 -124.89
26 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
27 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
28 2014.07.02.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
29 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
30 2014.07.30.07.02.02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
31 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
32 2014.07.02 02:33 sell 76.5 1.7145 131.15925 1.7179 -260.10
33 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -260.10 33 2014.07.02.02 11:32 sell 100.0 1.7176 171.76 1.7179 -30.00
34 2014.07.02 11:32 sell 100.0 1.7176 171.76 1.7179 -30.00
35 2014.07.02 11:32 set 100.0 1.7176 171.76 1.7179 -30.0007.02 11:32 売り 100.0 1,7176 171.76 1,7179 -30.00
36 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
37 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
38 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00 38 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
39 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
40 2014.07.0202 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
41 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
42 2014.07.0202 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
43 2014.07.02 11:32 sell 94.6 1.7176 162.48496 1.7179 -28.38
合計。2865.5 4909.88611 -12756.34
平均始値→1.7134

高値 04.07.2014 1.7179

ドローダウン(pips)→0.0045
ドローダウン(通貨単位)→0.004512756,34

コードによるドローダウン→13823,00
テスターレポートによるドローダウン→。23669,03

TP - > 1.7084
利益(pips)→ 0.0050
計算による利益 - > 14465.91

報告による利益 - > 13915.05


ドローダウンが加算されないのはどうしてですか-特にテスターのレポートに対して。以前はクローズドポジションは なかったのです

 

チャート上の状況はこのような感じです。



 
エクセルで計算したものを添付していますが、そこがバカだったのかもしれません!?
ファイル:
Calculation.zip  104 kb
 

-Aleks-:

グローバル変数は実際の市場業務に関係するもので、私はテスト情報が必要なのですが、それが理由で気にしませんでした。

GlobalVariableの話ではなく、グローバル 変数のレベルの話をしたのです。

-Aleks- です。

資本と残高とは何か。もちろん知っているが、ドローダウンをどのように計算するのかがわからない。 私のコードの例では、残高と資金の両方を最大とし、同様に残高と資金を最小としてみた。

テスターでドローダウンの計算式をマスターしていないのですが、注文開始前の残高と注文終了前の最低自己資本との差を計算してみてはいかがでしょうか。または、最小資金と最大資金を計算し、その差分が最大ドローダウンとなります。

-Aleks- です。

なぜ、if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; という不等式が成立 しないと思うのですか?それは新しいバランスの最大値に達したときにバー上で満たされないだけです(または株式 - まだ真実ではない)、しかしその時点で私は利益のドローダウンProfitMin=ProfitNewを修正 します。

これは、最大ドローダウンは通常、注文を閉じる瞬間に到達しないため、より関連性が高く、目標はEAの動作に必要な平均金額を計算することである。

そうですね、気配りが足りなかったですね。

しかし、ドローダウンは1日単位ではなく、注文(複数可)のライフタイム単位で、それ以降はエクイティが残高になる。これはまさにテスターチャートでエクイティラインとバランスラインが一点になっているところです。

 
Alexey Viktorov:

GlobalVariableの話ではなく、グローバル変数 レベルの話でした。

どうやら私が誤解していたようです。私の変数はコード実行ブロック int start() の前に初期化されているので、マッシュアップなどの問題はないはずなのですが...。それとも他に理由があるのでしょうか?


アレクセイ・ヴィクトロフ

テスターではドローダウンの計算式まで踏み込んでいませんが、注文開始前の残高と注文終了前の最小自己資本との差を計算するようにすればよいのではないでしょうか。あるいは、最大資金と最小資金の差を数えてみて、その差が最大ドローダウンとなる。

また、注文が多い場合は、注文ごとにカウントして、一番大きいものを選べばいいのでしょうか?私の例では、計算されたドローダウンはテスターの結果に比べて2倍少なく、あなたのアルゴリズムによれば、さらに少なくなることがわかります。

アレクセイ・ヴィクトロフ

ファイルへの書き込みの頻度は純粋に個人の問題ですが、ドローダウンはその日のうちにカウントされるのではなく、注文(複数可)の寿命までカウントされ、その後資金が残高となるのです。これはまさにテスターのチャート上で、エクイティとバランスのラインが一点に集まっている場所です。

テスターがドローダウンをいつ考慮するかは問題ではなく、ある日に最大となり、結果が一致するはずなのに、一致しない--これは驚くべきことです。

取引ポートフォリオをテストするために、一度にどれくらいの資金が必要になるのか、またその頻度を理解するために、日ごとのドローダウンが必要なのです。

 

数学的には(テスターの23669.03に対して23497.1)、ドローダウンは預金の変化を象徴するセグメントのサイズ、すなわち最大持分額と最小持分額の差に近い。

 
-Aleks-:

私の変数はコード実行ブロックのint start()の前に初期化されているので、マッシュか何かで問題はないはずなのですが......。それとも他に理由があるのでしょうか?


また、注文が多い場合は、注文ごとに計算し、一番大きいものを選択すればよいのでしょうか。この例では、計算されたドローダウンがテスターのほぼ半分であり、あなたのアルゴリズムによれば、さらに少なくなることがわかります。

テスターがドローダウンをいつ考慮するかは問題ではなく、事実はある日に最大となり、結果は一致するはずなのに、一致しない--これは驚くべきことです。

一度にどれだけの資金が必要なのか、またその頻度を把握するため、取引ポートフォリオをテストするために日別のドローダウンが必要なんだ。

そうではありません。1件1件の注文ではなく、最初の注文を開けてから最後の注文を閉めるまで。すなわち、OrdersTotal()== 0からOrdersTotal() == 0までです。

これは、最初の注文の開始から最後の注文の終了までのポイントであり、実際の打ち上げはいつでも行われるため、それに伴い、24時間の間にドローダウンが起こる可能性があるので、ドローダウンを決定する必要があります。

あとは全部...他人の研究を覗くのは好きじゃないし、長いコードでも、ある問題を解決する方法を議論することはできても、コード例を見ることはできないんだ。でも、ドローダウンの計算方法について、私の思い込みを誰も訂正してくれないのは不思議です......。

とにかく、あなたのドローダウンの計算方法が気に入らないのです。頻繁に印刷されるので、それを把握するのは根気がいるような気がします。

 

Karputov Vladimir:
Не кусок, а программу, которую можно скомпилировать и прогнать в режиме отладки.

お忙しいところ申し訳ありませんが、テスターが停止する問題を見つけるためにプログラムをクリーニングしていたところ、プログラムのテキストにそのアルゴリズムに違反する部分があることがわかりました。コンパイルは順調に進んでいたが、テスターは障害箇所を示さずに停止してしまった
 
Alexey Viktorov:

そうではありません。各注文ごとではなく、最初の注文のオープニングから最後の注文のクロージングまで。すなわち、OrdersTotal() == 0からOrdersTotal() == 0までです。

これは、最初の注文を出した瞬間から最後の注文を閉じるまでのポイントです。実際の起動は0:00ではなく、いつでも行われるため、ドローダウンは24時間の間に起こるかもしれないので、我々はドローダウンを決定する必要があります。

つまり、この例では、これらの条件が正確に守られているのです - 注文が開始され、毎ティック ごとに閉じるまで追跡されます。

もし本当にエクイティ最大からエクイティ最小になる計算なら、この対決はテスターの読み方を見直すきっかけになると思うのですが...。

Alexey Viktorov:

とにかく、あなたのドローダウンの計算方法が気に入らなかったのです。頻繁に印刷されるので、それを把握するのは根気がいるような気がします。

私が興味があるのは、EAが実際に必要とする資金、つまり注文開始から終了までの実際のドローダウン(現在の損失額)から、失われた利益を差し引いた金額です。

1日1回印刷する。それは全然頻繁ではないし、ある目的のために必要なことだ。

 
こんにちは。

一見すると、3セントのような簡単な作業に見えます。が! ..............................
インジケータウィンドウに任意のオシレータのラインが表示され、"0 "を基準に異なる振幅で揺れ動きます。
実際の問題点は
- 下から上へ交差する "0 "の位置で、インジケーターウィンドウの下枠に矢印を描きます。
- 0 "で上から下へ交差するように、インジケーターウィンドウの上側の境界線 付近に矢印を描きます。
- インジケーターウィンドウのオシレーターチャートのセルフスケーリングでは、矢印は自動的にインジケーターウィンドウの境界線に留まるはずです。
例えば、チャートをヒストリーに沿って前後にスクロールしたり、水平スケールを変更したりしても、矢印は常に自動的にインジケーターウィンドウの境界線に留まるはずです。

お金で助けて」なんてアドバイスはしないで 下さいね)。この機能を実装した動作 コードの例、またはそのリンクが必要です。

ありがとうございました。
理由: