MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1097 1...109010911092109310941095109610971098109911001101110211031104...1953 新しいコメント Alexandr Sokolov 2020.03.20 21:08 #10961 Seric29: パラメータとして、関数へのポインタが渡される。クラスでこれを実現する方法は、誰も考えていないようですね。また、クラスへのポインタを返すべき理由も、まだよく分かっていません。 面白いサンプルがありますが、私の質問とは関係ありません。 私もガイドで似たようなものを見たことがありますが、手が痛いし、仕事もあるので、これらのサイトはすでに閉じています。 なんでこんな簡単な作業を変に弄らなくちゃいけないんだ。クラスオブジェクトを通して必要なデータを単純に取得することができます 参照、ポインタ、関数ポインタはよく知っているが、実際に使うことはほとんどない。また、一般的には、メモリ節約のためだけに必要だと思います。インジケータ付きのExpert Advisorはゲームではないので、グローバルスコープの 共通変数やクラスオブジェクトで管理することができます。 Seric29 2020.03.20 21:14 #10962 Alexandr Sokolov: なぜ、そんな簡単なことをわざわざやるのか。クラスオブジェクトを通して必要なデータを取得するだけでいいのです 参照、ポインタ、関数へのポインタを使いこなしているが、ほとんど使っていない。私の考えでは、これらはメモリ節約のために必要なだけで、インジケータ付きのExpert Advisorはゲームではないので、グローバルスコープで 普通の変数やクラスオブジェクトを使用することができるのです。 単純な作業で派手なことはしたくないし、もちろん以前関数が呼ばれていたプログラムを修正したり、演算式を書いて計算を簡略化したり、簡略化したオーバーロード関数に切り替えたりするので、プログラムをクラスに変換したいのです。しかし、上に書いたように、ほとんど使わないし、今問題なのは、クラスはあるが、このクラスの関数へのポインタを作るのは不可能だ、なぜこんなプログラミングが必要なのか、一方をやると他方はできない、それはプログラミングではなく悪魔の所業だ、と。 Alexandr Sokolov 2020.03.20 23:38 #10963 Seric29: 単純な作業で派手なことはしたくないし、もちろん以前は関数が呼ばれていたプログラムをやり直したり、演算式を書いて計算を簡略化したり、簡略化したオーバーロード関数に切り替えたりするので、プログラムをクラスに変換したいんです。しかし、あなたが上に書いたように、それらを使用することはほとんどありませんし、今の質問は、クラスがありますが、このクラスの関数へのポインタを作成することは不可能です、なぜこの種のプログラミングが必要な、あなたは他のを行うことができない場合、それはプログラミングではなく、悪魔は何を知っている。 クラスは何らかのオブジェクトのテンプレートであり、このテンプレートにある機能を使うためには、まずオブジェクトを作成する必要があります。 要するに、クラス名はint、double、stringなどのデータ型として 機能するが、機能は拡張されているのである。変数の型を指定せずに変数を宣言することはできません。 その上、関数をクラスから切り離すだけで、オブジェクトを作成することなく、クラス内でもクラスと別でも使用することが可能です Alexandr Sokolov 2020.03.21 11:19 #10964 インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末ではインジケータがコンパイルされて動作するが、別の端末では動作しない) Seric29 2020.03.21 12:05 #10965 Alexandr Sokolov: クラスはあるオブジェクトのテンプレートであり、このテンプレートにある機能を使うためには、まずオブジェクトを作らなければならない。 実際には、クラス名はint、double、stringなどのデータ型として 機能するが、機能は拡張されている。変数の型を指定せずに変数を宣言することはできません。 その上、関数をクラスから切り離すだけで、オブジェクトを作成することなく、クラス内でもクラスと別でも使用することが可能です ない限り。まあ、ただ、クラスというのは複雑なトピックで、参考書には転送、リンクやポインタの作成に関する例がたくさん載っているので、可能だと思います(少なくともc++では可能ですが、mql4はc++とは関係ありません)、その仕組みを理解することが必要です。授業で簡単な例を示す代わりに、余分な計算や情報を詰め込みすぎて、何を言っているのか理解できません。 よし、じゃあ、クラスから関数を引っ張ってこよう。 削除済み 2020.03.21 12:46 #10966 Alexandr Sokolov: インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末でコンパイルして動作するインジケータが、別の端末では動作しない) マーケットから? Igor Makanu 2020.03.21 12:48 #10967 Alexandr Sokolov: インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末ではインジケータがコンパイルされて動作するが、別の端末では動作しない) ターミナルとExpert Advisorのログにメッセージが表示される。 スクリーンショットは、このインジケータがソースコードを持っていないことだけを示しています。 Tretyakov Rostyslav 2020.03.21 12:56 #10968 Alexandr Sokolov: インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末ではインジケータがコンパイルされて動作するが、別の端末では動作しない) 追加ライブラリが必要なのかもしれない Alexandr Sokolov 2020.03.21 13:45 #10969 Сергей Таболин: マーケットから? いいえ イゴール・マカヌ ターミナルとExpert Advisorのログにメッセージが表示される。 スクリーンショットは、このインジケータにソースがないことだけを示しています。 ありがとうございました。 MakarFX。 おそらく、追加のライブラリが必要なのでしょう そのとおり、私が書いたのだから、わかるはずだ。 Grigori.S.B 2020.03.22 10:02 #10970 以下のMQL4テストスクリプトのコードで、コンパイラが警告を発生させる理由を教えてください。 #property strict struct st_sig { string sym; // Symbol int age; // Bars ago }; st_sig Signals[]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { BubbleSort(Signals); } //+----------------------------------------------------------------------------+ void BubbleSort(st_sig &sig[]) { double t; int i, j, n=ArraySize(sig); for (i=n-1; i>0; i--) { for (j=0; j<i; j++) { if (sig[j].age>sig[j+1].age) { t=sig[j].age; sig[j].age=sig[j+1].age; sig[j+1].age=t; // Line#27 with warning } } } } 27行目でデータ型の不一致に関する警告が発生しました。どちらの変数も同じint型です。以下は、スクリプトをコンパイルした画面です。 27行目を以下のように置き換えると sig[j+1].age=(int)t; という警告が表示されない。 その仕掛けとは? 1...109010911092109310941095109610971098109911001101110211031104...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
パラメータとして、関数へのポインタが渡される。クラスでこれを実現する方法は、誰も考えていないようですね。また、クラスへのポインタを返すべき理由も、まだよく分かっていません。
面白いサンプルがありますが、私の質問とは関係ありません。
私もガイドで似たようなものを見たことがありますが、手が痛いし、仕事もあるので、これらのサイトはすでに閉じています。なんでこんな簡単な作業を変に弄らなくちゃいけないんだ。クラスオブジェクトを通して必要なデータを単純に取得することができます
参照、ポインタ、関数ポインタはよく知っているが、実際に使うことはほとんどない。また、一般的には、メモリ節約のためだけに必要だと思います。インジケータ付きのExpert Advisorはゲームではないので、グローバルスコープの 共通変数やクラスオブジェクトで管理することができます。
なぜ、そんな簡単なことをわざわざやるのか。クラスオブジェクトを通して必要なデータを取得するだけでいいのです
参照、ポインタ、関数へのポインタを使いこなしているが、ほとんど使っていない。私の考えでは、これらはメモリ節約のために必要なだけで、インジケータ付きのExpert Advisorはゲームではないので、グローバルスコープで 普通の変数やクラスオブジェクトを使用することができるのです。
単純な作業で派手なことはしたくないし、もちろん以前関数が呼ばれていたプログラムを修正したり、演算式を書いて計算を簡略化したり、簡略化したオーバーロード関数に切り替えたりするので、プログラムをクラスに変換したいのです。しかし、上に書いたように、ほとんど使わないし、今問題なのは、クラスはあるが、このクラスの関数へのポインタを作るのは不可能だ、なぜこんなプログラミングが必要なのか、一方をやると他方はできない、それはプログラミングではなく悪魔の所業だ、と。
単純な作業で派手なことはしたくないし、もちろん以前は関数が呼ばれていたプログラムをやり直したり、演算式を書いて計算を簡略化したり、簡略化したオーバーロード関数に切り替えたりするので、プログラムをクラスに変換したいんです。しかし、あなたが上に書いたように、それらを使用することはほとんどありませんし、今の質問は、クラスがありますが、このクラスの関数へのポインタを作成することは不可能です、なぜこの種のプログラミングが必要な、あなたは他のを行うことができない場合、それはプログラミングではなく、悪魔は何を知っている。
クラスは何らかのオブジェクトのテンプレートであり、このテンプレートにある機能を使うためには、まずオブジェクトを作成する必要があります。
要するに、クラス名はint、double、stringなどのデータ型として 機能するが、機能は拡張されているのである。変数の型を指定せずに変数を宣言することはできません。
その上、関数をクラスから切り離すだけで、オブジェクトを作成することなく、クラス内でもクラスと別でも使用することが可能です
インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末ではインジケータがコンパイルされて動作するが、別の端末では動作しない)
クラスはあるオブジェクトのテンプレートであり、このテンプレートにある機能を使うためには、まずオブジェクトを作らなければならない。
実際には、クラス名はint、double、stringなどのデータ型として 機能するが、機能は拡張されている。変数の型を指定せずに変数を宣言することはできません。
その上、関数をクラスから切り離すだけで、オブジェクトを作成することなく、クラス内でもクラスと別でも使用することが可能です
ない限り。まあ、ただ、クラスというのは複雑なトピックで、参考書には転送、リンクやポインタの作成に関する例がたくさん載っているので、可能だと思います(少なくともc++では可能ですが、mql4はc++とは関係ありません)、その仕組みを理解することが必要です。授業で簡単な例を示す代わりに、余分な計算や情報を詰め込みすぎて、何を言っているのか理解できません。 よし、じゃあ、クラスから関数を引っ張ってこよう。
インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末でコンパイルして動作するインジケータが、別の端末では動作しない)
マーケットから?
インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末ではインジケータがコンパイルされて動作するが、別の端末では動作しない)
ターミナルとExpert Advisorのログにメッセージが表示される。
スクリーンショットは、このインジケータがソースコードを持っていないことだけを示しています。
インジケーターのファイルが該当フォルダから削除された以外に、インジケーターが動作しない理由はありますか? (ある端末ではインジケータがコンパイルされて動作するが、別の端末では動作しない)
マーケットから?
いいえ
ターミナルとExpert Advisorのログにメッセージが表示される。
スクリーンショットは、このインジケータにソースがないことだけを示しています。
ありがとうございました。
おそらく、追加のライブラリが必要なのでしょう
そのとおり、私が書いたのだから、わかるはずだ。
以下のMQL4テストスクリプトのコードで、コンパイラが警告を発生させる理由を教えてください。
27行目でデータ型の不一致に関する警告が発生しました。どちらの変数も同じint型です。以下は、スクリプトをコンパイルした画面です。
27行目を以下のように置き換えると
という警告が表示されない。
その仕掛けとは?