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

 
Andrey Barinov:
道しるべを復活させる。
アイデアをありがとうございました。すっかり忘れていました。
 
Alexey Kozitsyn:
アイデアをありがとうございました。すっかり忘れていました。

それは変ですね。あなたのコードからコンパイルエラーが 発生します。

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

GetBMember関数の説明で(わかりやすく言うとコピーを作れということです)。コンパイラは最新版ですか?

コピーコンストラクタBを追加してこの問題を解決すると、GetBMemberメソッドからconst Bを返すことができるようになります。

そうすると、コンパイラは、返された変数のリセットを行おうとしたところで、悪態をつくことになる。

'Reset' - call non-const method for constant object

 
Stanislav Korotky:

それは変ですね。あなたのコードからコンパイルエラーが 発生しました。

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

GetBMember関数の説明について。コンパイラは最新版ですか?

コピーコンストラクタBを追加してこの問題を解決すると、GetBMemberメソッドからconst Bを返すことができるようになります。

そうすると、返された変数をResetしようとしたときに、コンパイラが悪態をつくことになります。

'Reset' - call non-const method for constant object

このコードはあくまでブラウザ上で書かれた例です。コンパイラが何も報告しないのが不思議だったんです。でも、もうわかっているんです。

また、私の例ではコンストラクタは全くありません:)

 

こんにちは!2017.08.03_18:45GMT+3です。私は、OOPファイルSignalIchimoku.mqhを書きました。しかし、LongCondition()とShortCondition()に対して、別の関数で簡単な計算をする必要がある場合、関数は書かれ、コンパイラは0エラー、0ワーニングを出します。しかし、この機能は動作せず、何の計算も行われない。プログラムがトランザクションを開けない。確認しました:関数にPrint()変数の値を挿入しました。この関数は、標準ライブラリの 標準ファイルである SignalStoch.mqh の StateStoch(int ind), ExtStateStoch(int ind), CompareMaps() 関数と類似しています。標準のファイルではすべてうまくいくのですが、私の場合はうまくいきません。なぜ?また「シンプルなルール」なのでしょうか?誰が知っている--教えてください。詳細やご質問はこちらまで。18:59 GMT+3。

ファイル:
 

CCanvasです。FillCircle関数の実装にちょっとしたバグがあります。このGIFアニメでわかるように、1ピクセル分狭くなっているのです

また、約30%の点が2回描画されるなど、非常に無理のあるアルゴリズム構成になっています。これは2行のコードを移動することで簡単に解決でき、平均で30%のスピードアップを実現します。
FillCircleのオリジナル版はこちらです。

void CCanvas::FillCircle(int x,int y,int r,const uint clr)
  {
   int f   =1-r;
   int dd_x=1;
   int dd_y=-2*r;
   int dx  =0;
   int dy  =r;
//--- draw
   while(dy>=dx)
     {
      LineHorizontal(x-dx,x+dx,y-dy,clr);
      LineHorizontal(x-dx,x+dx,y+dy,clr);
      LineHorizontal(x-dy,x+dy,y-dx,clr);
      LineHorizontal(x-dy,x+dy,y+dx,clr);
      //---
      if(f>=0)
        {
         dy--;
         dd_y+=2;
         f+=dd_y;
        }
      dx++;
      dd_x+=2;
      f+=dd_x;
     }
  }

そして、こちらが修正版です。

void CCanvas::FillCircle(int x,int y,int r,const uint clr)
  {
   int f   =1-r;
   int dd_x=1;
   int dd_y=-2*r;
   int dx  =0;
   int dy  =r;
//--- draw
   while(dy>=dx)
     {
      LineHorizontal(x-dy-1,x+dy,y-dx,clr);
      LineHorizontal(x-dy-1,x+dy,y+dx,clr);
      //---
      if(f>=0)
        {
         LineHorizontal(x-dx-1,x+dx,y-dy,clr);
         LineHorizontal(x-dx-1,x+dx,y+dy,clr);
         dy--;
         dd_y+=2;
         f+=dd_y;
        }
      dx++;
      dd_x+=2;
      f+=dd_x;
     }
  }
 

保留中の注文が削除 されることについて資金 不足)

Expert Advisorの有効な動作とは、動作中にエラーが発生しないことです。

保留中の注文が削除される(資金が足りない)のはエラーです。

問題は、スリッページで注文を出した場合、注文を出すのに必要な証拠金を追跡することが理論的に不可能であることです。

例えば、1.500で売り指値注文を出すのに十分な資金があることが確定し、計算されたとします。(1.499の価格では、これ以上はありません)。

現在の価格は1.501です。

次のティックで、1.499という価格になっています。

注文を開こうとすると、エラーが発生する。

そこで、この誤差を100%回避できない場合を最初に検討しました。

それとも、何か見落としているのでしょうか?

 

folderExpertsのサブディレクトリからmqhファイルを引っ張ってくる方法がわかりません。

OneフォルダからTwoフォルダにmqhファイルをコピーする方法は?

 
Vladimir Pastushak:

folderExpertsのサブディレクトリからmqhファイルを引っ張ってくる方法がわかりません。

OneフォルダからTwoフォルダにmqhファイルをコピーする方法は?


の解決策が見つかりました。インジェクターに接続するファイルがTest FilterOneにあり、インジェクターがTest FilterTwoにある場合、...

こんな感じです。

#include "..\Two\name.mqh""
It turns out: ..\ - from One go to Test and Twoname.mqh - from Test go to Two and select file name.mqh.
 
プロフィールに "マイメッセージ "が表示されない

と、他の方のプロフィールに
 
Vladimir Pastushak:

の解決策が見つかりました。インルーラーを接続したいファイルがTestOneにあり、インルーラーがTestTwoにある場合、...

こんな感じ。

..\ - from One go to Test and Twoname.mqh - from Test go to Two and select file name.mqh It turns out: .

そんな構図があるのです。

#include "..\..\Two\name.mqh"