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

 

私の質問はもう飛んでしまいましたが(笑)。何度でも言う。

tol64:
Почему то между 2001 и 2006 годом не тестируются эксперты. Смотрел по евро и фунту. Закрыл терминал, удалил историю. Закачалась заново. Всё равно. До 2001 сделки открываются. А начиная с 2001 по 2006 при наличии сигналов пропуск. Почему?

---
Дополнительная информация. Это происходит только, если в настройках тестера выбран таймфрейм D1. Если выбрать таймфрейм D1 в настройках эксперта, а в настройках тестера меньший ТФ, то пропуска нет. Это баг или есть какое-то этому объяснение? 

同じような問題に遭遇した方はいらっしゃいますか?
 
Yedelkin:
さて、著者が示した コードをご覧ください。また、どのような場合にPositionGetDouble が呼び出されるのでしょうか:)

そうですね、原則的にポジションがなく、特定のポジションの選定に失敗したと判断した後にデータを取得するのですが......。

なんだか不思議な感じです。

 
papaklass:

ヴェデルキンへ

もう一度言います。リファレンスによると、新鮮なポジションデータを保証するために、それらを呼び出す直前にPositionSelect( Symbol() )関数を 呼び出すことを推奨しているとのことです。ここで紹介するコードは、この発言を反証するものです。論理的には、このコード自体が不合理なのですが、ヘルプの記述の正しさが強調されています。

今すぐ

また、PositionGetDouble(POSITION_VOLUME)関数は、位置がない場合は0を返すべきというバグです。それだけです。IMHO

いや、間違って いますね...。

の場合は0を返します。 あるにはある(PositionSelect()内)位置で、volume=0とする。

それとも、ポジションがない場合は、ゼロと始値=0を 返すべきとお考えですか?

 
papaklass:

また、PositionGetDouble(POSITION_VOLUME)関数は、位置がない場合は0を返すべきというバグです。

:)欠点」は、オープンポジションがない場合、そのデータを要求し、そのデータに基づいてさらに計算することに意味がないことである。

まあ、ポジションがないことは確かだとしましょう。では、ポジションがないことがすでに分かっているのに、なぜそのデータを要求する(余分なステップを行う)のでしょうか?少しコードを書き換えた方が楽です。

papaklass

もう一度言います。リファレンスによると、新鮮なポジションデータの取得を保証するために、PositionSelect( Symbol() )関数を 呼び出す直前に呼び出すことを推奨しているとのことです。ここで紹介するコードは、この発言を反証するものです。論理的にはコード自体が無茶苦茶なのですが、ヘルプに書いてある文の正しさが強調されています。

上記のコードでは、作者が「新鮮なデータを保証するために」PositionSelect()関数を呼び、その関数が失敗を報告し、それでも作者は新鮮な位置データを要求しているというだけです。これでいいのでしょうか?

しかし、その後に次のようなことが起こります。

  • (a) PositionSelect関数が失敗すると、新しい位置データが(著者が望むように)ソフトウェア環境にコピーされない。
  • (b) その後のPositionGetDouble、PositionGetInteger、PositionGetStringの呼び出しでは、PositionSelect関数が成功したときに以前に一度コピーしたデータが返さ
  • れる。

言い換えれば、開発者は、関数が正常に終了したら、新しい位置データで作業を続けるために関数を呼び出すことを推奨し、関数が偽を返した場合は何も約束しません。)

2.さらに、新しいバージョンのコードも考えてみましょう。

if(PositionSelect(Symbol()))
   {//---еще одно непосредственное обращение
      //---например, расчитываем объем позиции при доливки
   } 
else 
   {
      //---например, расчитываем объем позиции при отсутствии позиции
   }

ここで、PositionSelect() 関数が失敗すると、 ポジションが ないときの ポジション量を計算する」ように促される。しかし、PositionSelect() 関数の失敗が 自動的に「ポジションがない」ことを意味するとは、誰が言ったのでしょ うか PositionSelect() 関数が失敗する原因はさまざまです。

 

もう一度、開発者を困らせたいのですが...。

ある価格に達したときに、保留中の注文を 削除できることが極めて重要であることを、絵で伝えたい。このようなオプションのないMT4トレーダーとして、より興味があります。 この方向での将来の計画を教えてください。ありがとうございます。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
ファイル:
zhq04b2p01.png  16 kb
 

テスターで作業していると、端末が非常によくクラッシュする。

 
tol64:

テスターで作業していると、端末が非常によくクラッシュする。

端末のクラッシュは、自動モードで定期的に開発者に報告されます。しかし、もし望むなら、すべての詳細をCDに申請し、ログを添付することができます。
 
tol64:

テスターで作業していると、端末が非常によくクラッシュする。

サービスデスクに状況を詳しく説明し、具体的に説明してください。

  • テスト中のExpert Advisorの入力パラメータ
  • インジケータを取り付ける(インジケータは固定後、取り外す)。
 
Interesting:
端末のクラッシュレポートは、定期的に開発者に自動的に送られてくるようです。しかし、必要であれば、CAにリクエストを出し、そこですべての詳細を指定し、ログを添付することができます。
つまり、Details>>に あるその情報は、インターネットであれば自動的に開発者に送られるのですね。もしそうなら、それは素晴らしいことです。全て自動化すべきです)))
 
ALozovoy:

サービスデスクに状況を詳しく説明し、具体的に説明してください。

  • テスト中のExpert Advisorの入力パラメータ
  • インジケータを取り付ける(インジケータは固定後、取り外す)。

わかりました、後でやります。