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

 
Heroix:

これは1台のパソコンに2つの端子を搭載しています。端末からのアップデートの提案には、「はい」と答えます。

別のパソコンから.mql5としてフラッシュに転送し、2台の端末の異なるエディターで開いてコンパイルした。

とにかく、私の理解では、MTをアップグレードする必要があるのですが・・・。

手動でアップグレードする場合、/MQL5フォルダも転送する必要があります。このフォルダには、使用している膨大な数の標準ライブラリが 含まれているからです。

実行ファイルとソースコードをmq5ファイルとして転送しただけなので、間違いがあります。

 
MQL 5で可能なOrderLots()とiClose?
 

ビルド695にアップグレードしました。Object.mqhの コンパイル時にエラーが表示されるようになりました。


 
denkir:

ビルド695にアップグレードしました。Object.mqhの コンパイル時にエラーが発生するようになりました。

自動でアップデートしたのか、それともファイルを移動させただけなのか?

自動で行った場合は、UserDataにファイルを格納 する際に、プログラムルートから/MQL5ディレクトリをデータディレクトリにコピーします(Fileメニューから開くことができます)。

 
開発者の皆様へ

経済カレンダーは どうなったのか、存在するのか?

追加質問:どのようなデータを基に、どのようにDCに "差し込む "ことができるのでしょうか?

 
papaklass: データは一致しないが、2番目と3番目のケースは最初の条件の別々の部分なので、一致するはずである。 何が問題なのかが理解できない。

これが条件です

if( mn < STP || mn >= STP )

- このままでは、どんなMNやSTPにも対応してしまいます。なぜ、全く導入する必要がないのか?そして、次の2つの選択肢は......ある特定のシチュエーションの切り口があるのです。

しかし、すべてが論理的であるように見える:1 + 2 == 3(1、2、3の計算の詳細は省く)3つのすべてのバリエーションで。

 
papaklass:

そういうことなんです。共用スペース(ケース1)を2つのグループ(ケース2、3)に分けたいのですが、どうしたらいいですか?論理的には、one + two == tri という式は真になるはずですが、そうではありません。最初の条件ではone=148、2番目の条件では172となる。また、twoとfor triにもマッチしていない。何が問題なのかわからない。

もしかしたら、共通の条件に問題があるのでは?このコードは他の何かに依存しているのでしょうか?

ほんの些細な例です。

条件(a):H1のバーが上昇したらオープン。TP=SL=100

条件(b):H1のバーが減少したらオープン。TP=SL=100

追加条件:すでにポジションを持っている場合、2回目の条件確認は行いません。

そして、(a)+(b)を有効にすれば、TP/SLがトリガーされたときに毎回オープンすることになります。

(a)を含めると、すべての初回に加え、(b)の条件で以前開いたために開かなかった回数が、さらに数回開かれます。

とし、条件(b)のみを含むようにすること、同様に

 
papaklass: 論理的には、one + two == tri という式が正しいはずなのですが、私にはうまくいきません。

よく見てください。これは、それぞれの選択肢について、まさに比較(one + two == tri)が実行されているのです。

papaklass:最初の条件ではone=148、2番目の条件では172です。

さて、これは別の問題で、つまり、なぜ第1変種の1個の価値と第2、第3変種の1個の価値は等しくないのか、ということです。

最初のバリアントと比較して、2番目と3番目のバリアントでは制限条件を導入しているのですね。例えば、2つ目のバリエーションでは、1つ目のバリエーションに比べて、1の値が大きくなるのはなぜか考えてみましょう。これまでのコードの引用部分からは不明です。

 
papaklass:

前の記事へ

3番目の場合:one=0, two=124, tri=124.

データは一致しないが、2番目と3番目のケースは最初の条件の別々の部分なので、一致するはずである。 何が問題なのか理解できない。

追記:int STP=200を入力しました。

データセットを変更しても、空間mn<STPが除外されているため、正しい結果が得られます。

if( /*mn < STP || */ mn >= STP ){
 
papaklass: 私の例では、サンプリングを行っているだけです。

1.スペース2(1)とスペース3(2)の両方を選び、230=148+82、すなわちスペース2(1)=148、スペース3(2)=82とします。

2. ...148のままでよいはずが、172になった。

3. ...82のままでよくて、124になる。

そういうことです。あなたにとっての問題は、なぜ1つ目の選択肢の1つの価値が、2つ目と3つ目の選択肢の1つの価値と等しくない のかということなのです。

space2とspace3の値は 前の記事であげた3つの例で得られる条件はすべて同じなので、一定であるべき です。

この論理的前提の誤りを見つけるには、非常に単純に、「spacesX」を増加させた各ケースを3つのバリエーションで印刷し、結果を比較して、「spaces2とspaces3の値」が同じでない理由を分析することを提案します。

追記ilungaは すでに、あるヴァリアントから別のヴァリアントへ移行する際に、一部のトランザクションが失われる可能性があることを示唆している。if()演算子の本体にキラー関数/メソッドOpenPosition()が埋め込まれていますね。そして、if()演算子でチェックした条件によって、異なるタイミングで動作する。