MG4スクリプトとアドバイザーをサポートするテスター - ページ 3

 
AlexeyVik:
まあ、それが事実であることを証明するつもりはないのですが。C++プログラミングやOOP一般に精通していない人にとっては、かなり複雑で、単なる言葉や神話の創作のためでは全くありません。不思議なことに、1週間ですべてを理解し、必要なことを書きました。これは全く違う神話です。これは、私のような専門家でなくてもmql5を学ぶことができることを示しています。
どのようなOOPでも、アルゴリズム的にプログラムすることができ、OOP自体はラッパーとしてのみ使用することができます。私もJavaでコーディングを始めたとき、最初はOOPを理解していませんでしたが、特に問題は感じていません。アルゴリズム言語の原材料を読み取るのは非常に難しいので、問題は後から発生します。アルゴリズム言語では、ライブラリを使う前にボルトで固定しなければならないので、ライブラリを使うのはもっと大変です。
 
Reshetov:
どのようなOOPでもアルゴリズム的にプログラムすることは可能ですが、OOPはあくまでラッパーとして使用します。私もJavaでコーディングを始めたとき、最初はOOPを理解していませんでしたが、特に問題はないと思っていました。アルゴリズム言語の原材料を読み取るのは非常に難しいので、後で問題が発生します。アルゴリズミックでのライブラリの使用は、使う前にネジ止めをしなければならないので、何倍も大変なんです。
ユーリ、なんで簡単なことを説明してるんだ?ある人にとってはシンプルで、ある人にとってはとてもシンプルで、ある人にとってはとっつきにくい。習得が不可能とは言っていない...。あくまで言語の違いの話ですが...。身近なものから、新しいものまで。
 
Renat:
まったく違和感がない。この2つは、1つのコンパイラを持つ2つの同一の言語である。
その点、C++はJavaScriptと何ら変わりはない。そして、それは本当なのか!
 
Integer:
その点では、C++もJavaScriptと変わりはない。そして、それは本当なのか!

私たちのフォーラムでは、他のものは見ることができません。

でも、責任はない。何でもぶちまけていいんです。

 
AlexeyVik:
ユーリ、なんで簡単なことを説明してるんだ?シンプルだと思う人もいれば、とてもシンプルだと思う人もいるし、とっつきにくいと思う人もいる。
ドキュメントがない、例がない、記事がない、では理解するのは難しい。しかし、それが全て揃い、問題のあるケースでもフォーラムで質問できるようになると、アクセスしにくいという言い訳が腐るほど出てきますね。
 
Reshetov:
ドキュメントも例も記事もないのでは、理解するのは難しい。しかし、それがすべて揃っていて、問題のあるケースでも掲示板で質問できるとなると、アクセスしにくいという言い訳が腐るほど出てくるわけです。

消えろ個人的には、何の問題も疑問もなく、この言語を使いこなすことができます。でも、性格的に無理な人がいる、何でも書ける。

あなたが対話の場に入り、全く別のテーマで意見を述べる目的が、私にはまだ理解できません。

 
Renat:

この掲示板に書かれていないこと。

なぜかというと、責任がないからです。何でも言っていいんですよ。

ええ、その通りです。特に、上の立場の権威を利用すること。

どの言語も、贅沢なものを除けば同じです。どれも、どんなダミーでも21日で習得できるものばかりです。for, while, if, switchはすべて表記が違うかもしれませんが、原理的には何の違いもありません。重要なのは演算子の書き方ではなく、言語と相互作用するインフラです。この点で、MT4とMT5は別世界のものです。

全てにおいての違い。MT4では右から左へ、MT5では左から右へ、インジケータ内のバーのナンバリングで、小さなことから始めます。より重要なもの、つまり集計位置と取引履歴データの整理の続きです。頻繁に必要とされるものの最大の違いは - 引用符や指標のデータにアクセスする方法で、データのコピーは、左から右へ、右から左へのインデックスをチェックする必要があり、バーの時間はどちらかの範囲に含まれるか、またはされていません。CodeBaseのiBarShift()関数の 議論を一手に引き受けましょう。

MT4ではEAの安定稼働のためにOrderSelect()の戻り値をチェックすればよかったのですが、MT5では最後のティックのデータまで毎ステップでチェックする必要があります。また、MT5のプログラミングは、落とし穴が多いので、たくさん悩んで初めて分かる微妙なところがあります。

 

あなたの意見を心から応援しています

機能を拡張することはもちろん良いことですが、MT5のボンネットの下には、互換性のためにMT4の機能を残しておくべきだったのです。もちろん、MT5の取引モデルの枠に収まるもののみです。

MT4のソースが最小限の変更で移植されるように。

MT5を多通貨のテスターとして使っていますが、あまりに複雑な関数呼び出しには閉口してしまいます。

MT5への切り替え機能も同じです(https://www.mql5.com/ru/articles/81)、カーネル自体に実装してはいかがでしょうか。

なぜ、型変換するための関数名を変更する必要があるのか、例えば

CharToStr - CharToString,  StrToDouble - StringToDouble

初歩的なことのように思えるが改革のための改革?

あるいは、時間を扱うための関数、例えば

int Hour()
int HourMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.hour);
  }

チャートからのデータ取得機能

double iClose(string symbol,
              int timeframe,
              int shift)
double iCloseMQL4(string symbol,int tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyClose(symbol,timeframe, index, 1, Arr)>0) 
        return(Arr[0]);
   else return(-1);
}

このような例は何百とあるのです

もちろんMT5の方が高機能ですが、MT4はもっと便利ですそして、これは時にもっと重要なことなのです

 
Integer:

その通りです。特に、自分の優れた地位の権威を利用すること。

C++はこの点でもJavaScriptと変わらない」という発言は、MQL4とMQL5の違いを論じるようなナンセンスなものです。と誰かがぼやいていた。

信用は、長い間の努力によって得られるものです。私はこのボリュームを満たしているので、言っていることに従います。


何事にも違いがあります。MT4では右から左へ、MT5では左から右へ、インジケータ内のバーの番号付けを行うなど、細かいところから。より重要なもの、つまり集計位置と取引履歴データの整理の続きです。しばしば必要とされるものの最大の違いは - データの引用符や指標にアクセスする方法で、データのコピーは、その後、左から右へインデックスを作成し、右から左へ、バーの時間は、範囲に含まれるかどうか、チェックが必要です。CodeBaseのiBarShift()関数の議論を一手に引き受けましょう。

何とも不思議な状況です。どんな言語でもダミーなら21日で習得できるが、バーナンバーリングとデータアクセスが問題になる。

繰り返しになるが、言語はほとんど同じで、ごく一部の機能が異なるだけで、コンパイラも共通である。MQL4はデータの扱い方が時代遅れで、深く詳細な履歴を持つシステムには受け入れがたいものです。MQL4の新しいCopyXXX関数を使えば、MQL5と同じようになります。


MQL4ではEAの安定性を確保するためにOrderSelect()の戻り値をチェックすればよかったのですが、MQL5では最後のティックのデータ受信時にも各ステップでチェックする必要があります。また、MT5のプログラミングには微妙なところがあり、落とし穴が多いので、何度もヒヤリングして初めて覚える必要があります。

MQL4やMQL5では、関数の結果を随所で確認する必要があります。

MQL4では、多くのトレーダーがチェックを無視して、そのままデータを受け取っていました。MQL5でも同じことを書いていて、CFDや先物、株式で起動するとFXプログラムが クラッシュしてしまうのは、単に作者が商品のパラメータやデータの可用性をチェックするのが面倒だからです。

 
Nemser:

MT5を使っていても、多通貨のテスターとして、しかし不必要に複雑な関数呼び出しには反吐が出ます。

新しいデータアクセス機能は何を提供するのか、なぜそのようにするのか、考えてみてください。

MetaTrader 4は、履歴の深さに制限があり、タイムフレームが分かれており、Open/High/Low/Close/Time[xxx]を介してそのシンボルバーへ直接アクセスが可能です。このようなダイレクトアクセスは、リソースやCPUコストの面で実装が非常に高価になります。他のExpert Advisorや端末との競合を避けるため、各Expert Advisorはこのデータの独自のローカルコピーを持っていることを考慮してください。

シンボル数の増加(例えばMT5では5,000~10,000シンボル)と、すべてのタイムフレームの基礎として深い1分足の履歴を使用すると、MT4の方法を使用することは基本的に不可能です。RAMが足りず、大きなチャンクをコピーするとパフォーマンスが落ちる。そのため、MT5では、各エキスパートのチャートの隠れた高価なコピーを自動的に維持しなくなりました。

その代わりに、非常に経済的な CopyXXX 関数に移行しました。この関数では、開発者は利用可能なチャート全体ではなく、必要なだけのデータをローカル配列に正確に要求します。そして、ローカルデータの最速の処理(昔のかなり高価な Open/High/Low/Close/Time[xxx] の代わりに)、さらに作者はそのデータをキャッシュして次の呼び出しで控えめに使用することができるのです。メモリとCPUの節約は莫大なものです。さらに、プラットフォーム自体が膨大なデータベースを管理するために特にハンズフリーになっています。データベースへのアクセスは(監視されていない直接アクセスではなく)常にオンデマンドであり、これによりキャッシュを柔軟に管理することが可能です。

また、MQL4におけるOpen/High/Low/Close/Time[xxx]コールの簡略化は、現在のシンボルとタイムフレームに限られ、他のシンボルとタイムフレームのデータはすべてiClose/iLow(...)関数で取得していたため、深刻な遅延が発生していたことも特筆されるでしょう。MQL5では、単一のCopyXXX関数モデルへの移行により、開発者は必要なデータチャンクを1回のリクエストで取得でき、複数のブロックされた呼び出し(iCloseの各単一呼び出しでのロックについて考える)を行う必要がなく、状況が根本的に改善されました。


MT5への切り替えも同じ機能(https://www.mql5.com/ru/articles/81) なので、カーネル自体に実装してはいかがでしょうか。

これらは私たちの機能ではなく、この記事もそうです。この記事は、怪しげな松葉杖とセットですが、違いを示すために公開されました。

私は、恐ろしい松葉杖ではなく、MQL5の新機能を使う必要性を繰り返し説明してきました。


なぜ、型変換関数の名称を変更する必要があるのか、例えば

初歩的なことだが改革のための改革?

これは、質の高い言語アーキテクチャを構築するための正しいアプローチです。関数名は理解しやすいものでなければならず、略語の集合体であってはならない。

新しい言語と便利なオートコンプリート機能により、言語を見直し、よりすっきりさせることができました。


また、例えば、時間を扱う関数 チャートからデータを取得する関数 このような例は何百とあるのです

これらは、比較対象にしてはいけない松葉杖の例です(通常「腺孔のある扁桃腺切除術を行うため」と言われます)。

MQL4がそのままMQL5になり、現在はMQL4が互換機能を多く持っているため、理論的な資料は古くなっています。


もちろんMT5の方が高機能ですが、MT4はもっと便利ですそして、それは時にもっと重要なことなのです

私はそうは思いません。

MetaTrader 5は、ソフトウェアと言語の両面で、よりユーザーフレンドリーになっています。