MQL4と旧コードのアップデート(問題解決体験の共有化) - ページ 2

 

この記事のコードも動かなくなりました。 https://forum.mql4.com/ru/3481

具体的には、Cドライブからファイルを書き込んだり、読み込んだりすることはできません。

 
509のビルドを持っています。今日見たら、編集者が変わっていた。EAのコードのロットを変更する必要があり、コンパイル時にstdlib.mqhとstderrorに関連するエラーが発生しました。これらのファイルを /MQL4/Include にコピーしたところ、Expert Advisor は何とか.NET Framework をコピーすることができました。
 

一晩で509のRealとポジションオープンの 両方のMEを更新しました。Pointは0.0001、Digitsは4であることが判明!ドキュメントにあるように緊急で変数を作らなければならなかったのですが、StopLossがなぜか5桁目に0が設定されているのです。そして、「良心を落ち着かせる」ために使っている唯一のインジケータDailyPivotPointsが消えてしまった。再コンパイルが必要でした。

デモでは、更新された先のPointとDigitsが一気に正常になり、DailyPivotPointsが飛ぶことはなかったです。

 
これは、開拓時代のキャンプでやったように、就寝時に聞かせるべき話です)))
 
evillive:
ここで語る恐怖は、開拓時代のキャンプのように、夜に語られるべきものだ ))))

だから、MT0に至っては、全部だけ。今のところDocumentationに書かれている通りにやっていますが、PointとDigitは、どう色をつけても4桁のロットの場合と同じです。

  double point = MarketInfo(Symbol(),MODE_POINT);
  int   digits = MarketInfo(Symbol(),MODE_DIGITS);
そして、Demoはもちろん、比較的、問題ありません。
 
borilunad:

だから、MT0に至っては、全部だけ。ここまではDocumentationに書かれている通りですが、PointとDigitsは、どう色をつけても4桁の場合と同じです。

そして、デモはもちろん、比較的、問題ありません。

リファレンスを更新しましたか?入ってみると、次のようなものがありました。以前はなかったものです。

-----------------------

int _Digits

変数_Digitsには、現在のチャートシンボルの価格の精度を決定する小数点以下の桁数が格納されます。

Digits() 関数を使うこともできます。

----------------------

チェックすると、 AUDJPYと EURUSDでこのPrint(_Digits, " ", Digits()); は次のように出力さ れます。

2014.02.07 18:52:54.313 TestFileOpen EURUSD.e,M30: 5 5
2014.02.07 18:52:33.317 TestFileOpen AUDJPY.e,M15: 3 3

 
VDev:

ヘルプを更新しましたか?入ってみると、次のようなものがありました。以前はなかったものです。

-----------------------

int _Digits

変数_Digitsには、現在のチャートシンボルの価格の精度を決定する小数点以下の桁数が格納されます。

Digits() 関数を使うこともできます。

これは、更新された言語に切り替えたときに違いない、私はしない、すべてがコンパイルされる!?しかし、別の端末で同じExpert Advisorを使ったデモでは、月曜日に更新されたPointとDigitsは5桁で正常なのに、ここRealではMarketInfo()で5桁になるのは非常に不思議です :(((;゚Д゚))))))))

ここで、グラフのコメントにチェックが入っています。

  "\n\n                                  ",DoubleToStr(Point,Digits), //тут выводится 0.0001
  "\n                                  ",DoubleToStr(point,5),   //а тут с переменной 0.00001
もちろん、SLが10倍に設定されたときは「ゾッ」としましたよ。ちゃんと動くことを期待して、とりあえずこのチェックをキープして、片付けます。
 

他にも問題はあるだろう、まずはそこからだ)))今のコンパイラは、C/C++のような通常の言語はもちろん、MQL5にも厳格なコンプライア ンスを要求しているようです。つまり、そんな無意味なものはもうコンパイルできないのです。

switch(n)
{
case 1: double d=1; break;
case 2: d=2; break;
}
 
VDev:

他にも問題はあるだろう、まずはそこからだ)))今のコンパイラは、C/C++のような通常の言語はもちろん、MQL5にも厳格なコンプライアンスを要求しているようです。つまり、そんな無意味なものはもうコンパイルできないのです。

そんなバカなことはしない!メインはif...else-動作していること、それだけです。本当だ、スイッチはスタート以外の借用機能にあり、すべて動作している。もしかしたら、休み明けの月曜日から普通に始まるかもしれませんよ。;))
 
borilunad:
ダブらないですねー。メインはif...elseが動くかどうか、それだけです!真のスイッチは、スタート以外の借用機能にあり、すべてが機能する。もしかしたら、休み明けの月曜日から普通に始まるかもしれませんよ。;))
今日1時間だけこのバージョンを試しましたが、意識していません。今日、知人に笑わされました ))))彼は変数名にドットを入れるのが好きなんです。長い間、アンダースコアに変更するように言ってきたんだ。 今日はうまくコンパイルできませんでした。だから、彼は私にこう言ったのです。「なぜかというと、今、変数はクラスになるしかないからだ!」と。