エラー、バグ、質問 - ページ 131

 
Dmitriy2:

コードが挿入され、ファイルが添付されていません。


訂正がありました。

もう一度やり直してください。

 
alexvd:

無限ループのため、ハングアップしてしまいます。

ループから抜け出すには、ブレークしかないんですね。しかし、あなたが持っているブレークは、ある条件が満たされたときに発生します。コンポーネントの1つ

毎回関数内でインジケータハンドルを取得し、データが準備できたかどうかを確認せずにコピーしています。

提案します。

1.ハンドル変数をグローバルレベルまで持っていく。

2.OnInitでインジケータハンドルを受け取る(いずれにせよパラボリックパラメータを変更することはない)。

3.インジケーターバッファから データをコピーする前に、その準備(計算可能性)を確認します - BarsCalculated(Parabolic)関数が役に立ちます。

4) サイクルからの出口を整理する、もしあなたが項目 3 をしないなら、関数 BarsCalculated(Parabolic) を呼び出す必要があります。3は満たされていない。

2.テスト例では変更されていません。実際、この関数は異なるパラメータで常に使用されています。

3.確認します。ただ、何のために必要なのかよくわかりません。失敗できないような条件です。放物線の連続は最も近い棒です。それらは間違いなくアップロードされるべきです。(一般的に、履歴は指定されたテスト開始日の1年前にテスターにアップロードされると理解しています)。本当によく効くんですよ。MQL4では実機でもテスターでも動作します(別途放物線関数があるわけではなく、内蔵されていますが・・・)。

 
alexvd:

訂正がありました。

もう一度試してみてください。

はい、うまくいきました、ありがとうございます。
 
Dmitriy2:

2.テスト例では変更されず、実際、この関数は異なるパラメータで常に使用されているため、OnInitではなくハンドルを取得する。

3.わかりました、確認してみます、ただ、その点がよくわかりません、失敗できないような条件です、放物線の連続が一番近い棒です、絶対にアップロードされているはずです(一般的には、指定した試験開始日の1年前に履歴がテスターにアップロードされると理解しています)。本当によく効くんですよ。MQL4では実機でもテスターでも動作します(別途放物線関数があるわけではなく、内蔵されていますが・・・)。

3.なぜ必要なのかは、すでに参考文献(https://www.mql5.com/ru/docs/series/barscalculated)で議論され、記述されています。

備考

この関数は、インジケーターの作成直後にインジケーターデータを取得したい場合(インジケーターハンドルを取得したい場合)に便利です。

これはあなたのケースです。

インジケーターはバーデータをもとに算出されます。バーはあるが、計算されたデータがない場合がある。

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
 
Rosh:
これは、このポジションが、この商品の複数の取引の結果であることを意味します。その結果、ポジションの加重平均 価格が表示されます。
加重平均価格って テクニカル指標だけだと思ってた...テスターでいつも0にできない気がする...たまに数セントはみ出るけど
 
alexvd:

3.なぜそれが必要なのかは、すでに何度も議論されており、ヘルプ(https://www.mql5.com/ru/docs/series/barscalculated)にも記載されています。

これはあなたのケースです。

この指標は、バーデータで計算されます。バーはあるが、計算されたデータがない場合がある。

はい、BarsCalculatedで持っています、ありがとうございました。

しかし、とにかくテスターで動く、動かないというのは論理的におかしい。テスターですべてのチェックをすでに構築しておく必要があり、リクエストがあるデータに行き、それがない場合はエラーが表示されます。 しかし、テスターにはバーがあるのに、なぜかデータを計算できず、黙ったまま...。

 
maryan.dirtyn:
加重平均 価格はあくまでテクニカル指標だと思っていたのですが・・・ストラテジーテスターで動かしているといつも0にならない・・・たまに数セント発生することがあるのです。

数量による 加重平均。例えば、EURUSDでは3つのトレードがありました。

ディール
ボリューム
価格
EURUSDの買い
0.1区画
1.2800
EURUSDの買い0.2区画
1.3400
EURUSDの買い0.3区画
1.2000
合計:EURUSDのロングポジション
0.6区画
?


その結果、EURUSDのポジションを0.6ロットの出来高で持っていますが、価格はいくらでしょうか?

 
Rosh:

数量による 加重平均。例えば、EURUSDでは3つのトレードがありました。

ディール
ボリューム
価格
EURUSDの買い
0.1区画
1.2800
EURUSDの買い0.2区画
1.3400
EURUSDの買い0.3区画
1.2000
合計:EURUSDのロングポジション
0.6区画
?


結局、EURUSDのポジションは0.6ロットですが、価格はいくらなのでしょうか?

サーバーレベルで通貨の精度に合わせて価格を丸める方が簡単ではないか?結局、Expert Advisorは精度やポイント単価の調整に対応することになるのですが...。
 
Interesting:
サーバーレベルで通貨の精度に合わせて価格を切り上げる方が簡単ではないか?結局、どんなEAでも精度やポイント単価の調整で悩むことになるのですが...。
なぜEAが悩むのか?この加重平均 価格は、ポジションの決済を計算するために必要です。Expert Advisorには必要ありません。それでもこのシンボルに必要な桁数の正常な価格でポジションを閉じる必要があります。
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Rosh:
なぜExpert Advisorが被害を受けなければならないのか?この加重平均 価格は、ポジションの決済を計算するために必要です。Expert Advisor には何の役にも立ちません。このシンボルに必要な数のサインで、正常な価格でポジションを閉じる必要があります。

場合によっては、価格の受け取り方に関係なく、正規の価格値を持たなければならないこともあります。

どうせサーバーが始値を再計算するのであれば、サーバーサイドで正規化する方が簡単です(少なくとも私の意見では)。


ところで、加重平均価格とネッティングプラットフォームの話なので。

私の理解では、以前決済した負けポジションのトリミング(部分決済)には、2つのモデルがあります。

1.部分終値の損失を確定せず、単純に始値を再計算してください(私の記憶違いでなければ、FCはそうしています)。

2.始値を据え置き、損失を確定させる。

負けポジションの取り消しについても同様


最終的にどのような方式がMT5で標準化されるのか、できればその理由も含めて開発者の意見を知りたいのですが...。