MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1566 1...155915601561156215631564156515661567156815691570157115721573...1953 新しいコメント 削除済み 2021.08.03 16:35 #15651 Mikhail Tkachev:3行のEAであれば、当然OOPは不要です)。でも、もしゴブリンを1本の腕と3本の脚で作り、さらに1本の脚と3本の腕で作らなければならないとしたら......そう、その時はOOPが本当に役に立つのです。とはいえ...私にもわかりません。ここに置く意味はあるのか? そして、「線」の数はまったく関係ないのです。;) Tretyakov Rostyslav 2021.08.03 16:37 #15652 Mikhail Tkachev:intのみ、doubleのみ? 変数がクラスのオブジェクトの 場合はどうでしょうか? また、そのようなオブジェクトの数があらかじめ(OnInit()の実行前に)不明な場合は? また、コンストラクタのパラメータがあらかじめ[OnInit()の前に]不明である場合は? クラスの宣言について、良いリンクと例を示してくれました。 いずれにせよ、グローバルなものはOnInit()の前に宣言され、その他のものは必要な都度宣言されます。 Mikhail Tkachev 2021.08.03 16:45 #15653 MakarFX:いずれにせよ、GlobalなものはOnInit()の前に宣言し、その他は必要な都度宣言します。 これは理論的には明らかです。 実際には、: NB_M1' の宣言でグローバル変数を隠す → OnInit()の1行につき、です。 NB_M1'の以前の宣言を参照。 この場合、ローカル宣言で隠され、OnInit()でローカルとして初期化されても、エキスパートがNB_M1がグローバル(かつ正しく初期化)であるかのように動作します。 考えようによっては、まったく機能しないはずです。 Tretyakov Rostyslav 2021.08.03 17:03 #15654 Mikhail Tkachev:理屈ではわかるのですが、これがなかなか難しい。 実際には、:NB_M1' の宣言でグローバル変数を隠す → OnInit()の1行につき、です。NB_M1'の以前の宣言を参照。を実行すると、OnInit()のローカル宣言によって隠されていますが、NB_M1がグローバルであるかのように(そして正しく初期化されているように)エキスパートが動作します。考えようによっては、まったく機能しないはずです。 NB_M1とは?もしかしたら、すでにライブラリで宣言されているのかもしれませんね。そして、全くコードなしで、ブラインドで聴覚障害者のように) Mikhail Tkachev 2021.08.03 17:04 #15655 Сергей Таболин: そして、「糸」が何本あってもいいのです。;) 百数十行のコードがあるとき、まずこれを追加したいから、次にこれが何のためにあるのかを忘れて、これを追加する、そうすると当然(?)、「どう整理するか」という考えが生じる。 あるいは、そうでない場合もある)。 Mikhail Tkachev 2021.08.03 17:21 #15656 MakarFX: NB_M1とは?もしかしたら、すでにライブラリで宣言されているのかもしれませんね。そして、コードが全くなければ、聾唖者のようなものです) NB_M1 は、各文字の新しいバーの開始を定義するためのクラス CIsNewBar のオブジェクトである。いいえ、ライブラリで宣言されていません。 最初の投稿のコード :https://www.mql5.com/ru/forum/160683/page1547#comment_23712294 Tretyakov Rostyslav 2021.08.03 17:34 #15657 Mikhail Tkachev:NB_M1 は、各文字の新しいバーの開始を定義するためのクラス CIsNewBar のオブジェクトである。いいえ、ライブラリで宣言されていません。 最初の投稿にあるコード :https://www.mql5.com/ru/forum/160683/page1547#comment_23712294 つまり、NB_M1 はクラス内部で宣言され、そこにアクセスすることができるのです このクラスのコードを見てもらえますか? Mikhail Tkachev 2021.08.03 18:14 #15658 NB_M1 は、このクラスのオブジェクトである。中に入れるには? //+------------------------------------------------------------------+ //| IsNewBar.mqh | //| Copyright © 2011, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "2011, Nikolay Kositsin" #property link "farria@mail.redcom.ru" #property version "1.00" //+------------------------------------------------------------------+ //| Алгоритм определения момента появления нового бара | //| Для каждого таймфрейма каждого символа нужно создавать объект | //+------------------------------------------------------------------+ #include <Object.mqh> class CIsNewBar:public CObject // Сделан наследником класса для возможности работы с классом CArrayObj (из библиотеки) // class CIsNewBar // Первоначальная редакция { //---- public: //---- функция определения момента появления нового бара bool IsNewBar() { //---- получим время появления текущего бара datetime TNew=datetime(SeriesInfoInteger(m_Symbol,m_TimeFrame,SERIES_LASTBAR_DATE)); if(TNew!=m_TOld && TNew) // проверка на появление нового бара { m_TOld=TNew; return(true); // появился новый бар! } //---- return(false); // новых баров пока нет! }; //---- конструктор класса CIsNewBar(const string &pSymbol, const ENUM_TIMEFRAMES pTimeFrame){ m_Symbol=pSymbol; m_TimeFrame=pTimeFrame; m_TOld=-1;}; protected: datetime m_TOld; // Время хранится ENUM_TIMEFRAMES m_TimeFrame; // для каждого таймфрейма string m_Symbol; // каждого символа //---- }; //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.08.03 18:17 #15659 Mikhail Tkachev: NB_M1 は、このクラスのオブジェクトである。中に入れるには? このNB_M1という変数は何のためにあるのですか? Tretyakov Rostyslav 2021.08.03 18:34 #15660 Mikhail Tkachev: NB_M1 は、このクラスのオブジェクトである。中に入れるには? そうあるべきだと思います bool NB_M1; int OnInit() { } void OnTick() { NB_M1=new CIsNewBar(_Symbol,PERIOD_M1); // Эта строка потом будет в цикле для разных символов if (NB_M1) // (1) Если появился новый бар M1 {....} ...... } 1...155915601561156215631564156515661567156815691570157115721573...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
3行のEAであれば、当然OOPは不要です)。
でも、もしゴブリンを1本の腕と3本の脚で作り、さらに1本の脚と3本の腕で作らなければならないとしたら......そう、その時はOOPが本当に役に立つのです。とはいえ...私にもわかりません。
ここに置く意味はあるのか?
そして、「線」の数はまったく関係ないのです。;)intのみ、doubleのみ?
変数がクラスのオブジェクトの 場合はどうでしょうか?
また、そのようなオブジェクトの数があらかじめ(OnInit()の実行前に)不明な場合は?
また、コンストラクタのパラメータがあらかじめ[OnInit()の前に]不明である場合は?
クラスの宣言について、良いリンクと例を示してくれました。
いずれにせよ、グローバルなものはOnInit()の前に宣言され、その他のものは必要な都度宣言されます。
いずれにせよ、GlobalなものはOnInit()の前に宣言し、その他は必要な都度宣言します。
これは理論的には明らかです。
実際には、:
NB_M1' の宣言でグローバル変数を隠す → OnInit()の1行につき、です。
NB_M1'の以前の宣言を参照。
この場合、ローカル宣言で隠され、OnInit()でローカルとして初期化されても、エキスパートがNB_M1がグローバル(かつ正しく初期化)であるかのように動作します。
考えようによっては、まったく機能しないはずです。
理屈ではわかるのですが、これがなかなか難しい。
実際には、:
NB_M1' の宣言でグローバル変数を隠す → OnInit()の1行につき、です。
NB_M1'の以前の宣言を参照。
を実行すると、OnInit()のローカル宣言によって隠されていますが、NB_M1がグローバルであるかのように(そして正しく初期化されているように)エキスパートが動作します。
考えようによっては、まったく機能しないはずです。
そして、「糸」が何本あってもいいのです。;)百数十行のコードがあるとき、まずこれを追加したいから、次にこれが何のためにあるのかを忘れて、これを追加する、そうすると当然(?)、「どう整理するか」という考えが生じる。 あるいは、そうでない場合もある)。
NB_M1とは?もしかしたら、すでにライブラリで宣言されているのかもしれませんね。そして、コードが全くなければ、聾唖者のようなものです)
NB_M1 は、各文字の新しいバーの開始を定義するためのクラス CIsNewBar のオブジェクトである。いいえ、ライブラリで宣言されていません。
最初の投稿のコード :https://www.mql5.com/ru/forum/160683/page1547#comment_23712294
NB_M1 は、各文字の新しいバーの開始を定義するためのクラス CIsNewBar のオブジェクトである。いいえ、ライブラリで宣言されていません。
最初の投稿にあるコード :https://www.mql5.com/ru/forum/160683/page1547#comment_23712294
つまり、NB_M1 はクラス内部で宣言され、そこにアクセスすることができるのです
このクラスのコードを見てもらえますか?
NB_M1 は、このクラスのオブジェクトである。中に入れるには?
NB_M1 は、このクラスのオブジェクトである。中に入れるには?
そうあるべきだと思います