//************************************************************************************************/double Envelopes(string symb, ENUM_TIMEFRAMES TF_1, int period, int method, int shift, int price,double Deviation(ENUM_TIMEFRAMES TF_2, int kanal), int buff, int index)
{
double buf[1];
int handle=iEnvelopes(Symbol(), TF_1, period, method, shift, price, Deviation(TF_2, kanal), buff);
if(handle<0)
{
Print("Failed to create handle ATR, Error: ",GetLastError());
return(WRONG_VALUE);
} else
{
if(CopyBuffer(handle,0,index,1,buf)<0)
{
Print("Failed to copy data from the indicator ATR, Error: ",GetLastError());
return(WRONG_VALUE);
}
}
return(buf[0]);
}
//************************************************************************************************/
の場合、コンパイラが「OrderSelectの結果を確認する必要がある」と強調表示します;-)
最初の1つについて変更する場合 if (!OrderSelect(...)) continue; とすると、オプションは同じになります。
最初のものは視覚的に直線的なコードで、2番目のものは階段のように見えます。最初の方が読みやすいし、一般的に深い論理的なタブ{{{ }}の出現は、何かを変更する時期であることを示唆します:-)。
ありがとうございます。階段状に書くとコードのスピードに 影響する?千鳥足で書くと分かりやすいですね。
ありがとうございます。階段状の記録はコードの実行速度に影響を与えるか?階段状に書くと分かりやすいですね。
そもそも実行 速度に影響を与えるのはアルゴリズムである。そして、それをコードでどう表現するかは、あまり重要ではありません。
それは、あなたが考えていることではありません。
後で作業できるように、コードを書くのです。だから、とにかく好きなように書いて、現実に遭遇しない問題で頭を悩ませないことです。
しかし、スピードの問題は、コーディングのトリックや特殊性によって回避する必要があります。単純に保証されるわけではありません。
いつ(可能性は低いですが)登場するかは、その時、パフォーマンスを最適化します。
実行速度は、主にアルゴリズムに影響されます。そして、それをどのようにコードで表現するかは、それほど重要ではありません。
それは、あなたが考えていることではありません。
後で自分で作業できるように、コードを書くのです。だから、とにかく好きなように書いて、現実に遭遇しない問題で頭を悩ませないことです。
しかし、スピードの問題は、コーディングのトリックや特殊性によって回避する必要があります。ただ、保証される、されない。
いつ(起こりそうもないけど)、コードを最適化するか。
ありがとうございました。非常に理解しやすい。
この質問についてご教授ください :https://www.mql5.com/ru/forum/160683/page833#comment_11585085
役に立つかどうかは疑問ですが、そんなところでしょう。
- MT5からコードの一部を取り出し、MT4に「ボルトで固定」しようとしていますが、これはMT4でのインジケータの呼び方とは異なります。
- 関数ヘッダを正しく宣言していない
- MT4にはCopyBuffer()関数が組み込まれていません。
MQL4とMQL5の構文は95%似ていますが、プラットフォーム間でコード部分を無謀にコピーすることはできません。
役に立つかどうかは疑問ですが、そんなところでしょう。
- MT5からコードの一部を取り出し、MT4に「ボルトで固定」しようとしていますが、これはMT4でのインジケータの呼び方とは異なります。
- 関数ヘッダを正しく宣言していない
- MT4にはCopyBuffer()関数が組み込まれていません。
MQL4とMQL5の構文は95%似ていますが、プラットフォーム間でコードセクションを無謀にコピーすることはできません。
すみません、MT5用のコードを指定するのを忘れてました
Deviation(int kanal)関数を呼び出さないだけ です。
どうやったら正しくできるのか?
記事から一対一の例を実行するhttps://www.mql5.com/ru/articles/18
オプションとして、64ビットDLL用にプロジェクトをコンパイルした場合、MT4ターミナルは32ビットなので、32ビット.DLL用にプロジェクトを構成してコンパイルする必要があります。
私もそこで質問していますし、そこで提案された例も試しましたし、実際、実験した写真も載せています。そうですね、これらのバージョンには何かがあります。通常、すべてのことはヘルプに書かれているはずで、どのようなニュアンスのものをどうつなげばいいのかが書かれています。私はコードでいくつかのリンクを与えられた、私はこれらのクラスを開き、それらを閉じて、情報の一般的なあざらしで、いや、あなたが望むと行う。さて、失礼ながら、プログラミング歴20年の私が、この話題に戻ります。コンピレーションが64用であること、どうやって調べればいいのでしょうか?
64用にコンパイルされたDLLであることを確認するにはどうすればよいですか?
Visual Studioの プロジェクトプロパティを見ると、DLLをコンパイルするプラットフォームのオプションがあるはずです - MT4は32ビットコードが必要です
追記:GoogleでVS設定を検索
役に立つかどうかは疑問ですが、そんなところでしょう。
- MT5からコードの一部を取り出し、MT4に「ボルトで固定」しようとしていますが、これはMT4でのインジケータの呼び方とは異なります。
- 間違った関数ヘッダを宣言した
- MT4にはCopyBuffer()関数が組み込まれていません。
MQL4とMQL5の構文は95%似ていますが、プラットフォーム間でコードセクションを無謀にコピーすることはできません。
以下のようなコード断片がありませんか?
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム。
MQL4初心者の質問、ヘルプ、アルゴリズムやコードに関するディスカッションなど何でもOK
アレクサンダー・レイゼレヴィッチ, 2019.05.06 17:21
この機能を使って、 MT5で インジケーターのデータを受信しようとして います。
エラーが発生しました。
MT5用の コードを修正する方法を教えてください。