MetaTrader 4 Build 529 ベータ版リリース、新コンパイラー搭載 - ページ 37

 
Renat:
つまり、あなた個人はソフトウェアの操作性に問題がなく、一般的な質問をしているのです。

質問を何度か読み返しましたが、理解できません。ここでは、具体的な内容を議論しているのです。

コンパイルに問題はありません。操作性に問題があり、私の理解では、MQL5のロジックとMQL4のロジックを混ぜることに関係があるようです。しかし、ここで取り上げた問題だけでは、あらゆる場面で対応できるわけではありません。全ては特別なケースです。ルールは必要です。MQL5の機能とルールのMQL4への翻訳について、予備的なガイドかプレビューを公開していただければ、私たちだけでなく、あなたが発生する問題を理解する上でも助けになると思います。そして想像してみてください、500ページ以上になるのです。どうすれば再読できるのでしょうか?

 
ForexMoneyMaker:

コンパイルに問題はありません。操作性に問題があり、私の理解では、MQL5のロジックとMQL4のロジックを混ぜることに関係があるようです。しかし、ここで取り上げた問題だけでは、あらゆる場面で対応できるわけではありません。全ては特別なケースです。ルールは必要です。 MQL5の機能とルールのMQL4への翻訳について、予備的なガイドかプレビューを公開していただければ、私たちだけでなく、あなたが発生する問題を理解する上でも助けになると思います。そして想像してみてください、500ページ以上になるのです。どうやったら全部読めるんだ?

第一に、他の何かが変わるかもしれない(互換性に影響するものも含めて)。第二に、今度はすべての「記述資源」がヘルプの準備に費やされる。すでにフル稼働しているシステムになぜ負担をかけるのか?
 

MT4ビルド536、MEビルド872。

次の入力パラメータは、別ウィンドウのインジケータで使用されます: extern string Currency_Name = "EURUSD "です。

入力パラメータを変更せずに起動すると、インジケータが描画され、エラーなく動作します。しかし、最初の実行後にシンボルを変更するとすぐに、例えば「GBPUSD」のように、インジケータは新しいシンボル名を受け付けません。インジケーターのShort_Nameに同じ名前がありますが、インジケーターは全く描画されません(空のフィールド)。初回呼び出し時にシンボル名を変更した場合、インジケータはプログラム中に書かれた初期名で描画されます。

インジケーターの初期データの数値変更については、全てのケースで変更され、エラーなく描画されます。

 
Renat:

プログラム中に何百ものグローバル変数があるのは良くないことです。

OOPとクラスは、スコープを隠蔽し、データへのアクセスを保護することによって、この問題を完全に、そして劇的に解決します。

おそらく、それではダメなのでしょう。でも、なぜそうなのか、そこに書きました。MT4とは異なる意図のものを実装することは不可能だった。グラフィックでは他にないことでした。外部変数を通してのみ、グラフィック要素の スタイルを設定することができます。さまざまなグラフィック要素があれば、外部変数がたくさん出てきます。スタイルとは別に、グラフィックアイテムには膨大な数のプロパティがあり、それらもEXTERNAL VARIABLESによってのみ変更することができます。グラフィックはensignで問題ないです。しかし、MT4では、それは本当の混乱です。そのため、何百もの外部変数が存在するのです。MT4の新バージョンでどうなるかは、まだわかりません。見ていきます。
 
nen:
十分とは言えないかもしれません。でも、なぜそうなのか、そこに書きました。 MT4とは異なる意図のものを実装することは不可能だった。グラフィックでは他にないことでした。 グラフィックアイテムのスタイルは、外部変数を通してのみ設定できます。 グラフィックアイテムがたくさんあれば、外部変数もたくさんあります。 スタイル以外にも、グラフィックアイテムのプロパティは、外部変数を通してのみ変更できます。 ensignのグラフィックは、問題なく表示されています。しかし、MT4では、それは本当の混乱です。そのため、何百もの外部変数が存在します。 MT4の新バージョンでどうなるかは不明です。見ていきます。

つまり、グラフィックの話ではなく、変数の話です。それに、MT5はグラフィックが素晴らしいので、コンピューターゲームまで何でもできます。Mt4もそろそろステップアップです。

どのようなプログラムでも、ユーザーがいつでも自分で変更しなければならない100ものパラメータをどうやって伝えることができるのでしょうか?入力パラメータの表がある場合のみ。プログラムの種類に依存しない。

とにかく、何百ものパラメータは、プログラマーにとって、どこにも行けない道なのです。インテリジェントな自動制御手法で、パラメーターの数を10分の1にする必要があります。考え始めると、すぐに解決策が見えてくる。

 
nen:

インジケータに数百の外部変数があり、インストール時に数十を変更する必要がある場合、...

再インストールする前に、前回のインジケーターのインストール時に変更された値から、どの変数を保存する必要があるかを覚えておく必要があります。

100個のパラメータを取り除くことの不可能性については言及せず......。

すでに変更された内容を覚えておく必要がないように、「リセット」ボタンが用意されています。

また、新しい動作(再コンパイル後に入力された変数の値を保存する)により、作業がより便利になりました - インジケータの何かを変更した場合、すべてのコピーを再設定する必要がありません。

 

レナット、ストリンゴ、ユニコードは永久に 残るのか?

 
input datetime  Date_From = D'08.10.2013';      // Начало периода
input datetime  Date_To = D'08.11.2013';        // Окончание периода
input bool      Column_Headers = true;          // Создавать заголовки колонок?

これはスクリプトで、起動時に Date_From フィールドは常に現在のローカルな日付/時刻になり、Date_To フィールドは問題ないです。設定の順番を変更しました。datetime型の 変数がリストの最初でない場合、この不具合は存在しません。

---

ヘルプでは、PRICE_CLOSEはENUM_APPLIED_PRICEという型を持っていますが、コンパイラは知りません - 'ENUM_APPLIED_PRICE' - 型のない宣言です。ヘルプやコンパイラで直るのでしょうか?

---

そして、このエディター/コンパイラーに感謝します。

 

通貨ペアのチャート上にある、すでにコンパイルされたインジケータに変更を加えるのです。再コンパイルしています。変更を有効にするためには、端末全体を再起動する必要があります。チャートからインジケータを削除して再起動してもダメ、タイムフレームを変えてもダメ。端末自体を再起動することで、変更された内容を確認することができます。

修正お願いします。

 
ObjectSetInteger(0,"Name",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
ObjectSetInteger(0,"Name",OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);

CORNER_RIGHT_LOWER と ANCHOR_RIGHT_LOWER は検出されません。

Mqh-fileで、ログに"undeclared identifier"エラーが表示される。


StringConcatenateの 動作がおかしい

このように動作します

StringConcatenate("Text 1 ","Text 2");
StringConcatenate("Text 1 ",10);
StringConcatenate(10," Text 2");
StringConcatenate(10,11);
StringConcatenate("Copyright ",CharToString(169));

しかし、このように動作しません("©"のみが表示される)。

StringConcatenate(CharToString(169)," Copyright");




理由: