記事"「サル」でもわかるMQL:オブジェクトクラスの設計 構築方法"についてのディスカッション - ページ 2

 

念のため、ターミナルをダウンロード可能なものにアップグレードしたところだ。

ライブラリを更新したのは確かだ。

ターミナルを起動し、ファイルを開くと、これだ。

ボタンのグループ分けがとても気に入りました。)

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 

このアプリケーションに必要なすべてのファイルを1つのアーカイブにアップロードし、MQL5フォルダが1つになるように構造を尊重していただけないでしょうか。

すべてのファイルが正常に開き、内容が読めることを確認しました。

 
CoreWinTT:

このアプリケーションに必要なすべてのファイルを1つのアーカイブにアップロードし、MQL5フォルダが1つになるように構造を尊重していただけないでしょうか。

すべてのファイルが正常に開き、内容が読めることを確認しました。

プライベートメッセージでお送りしました。
 

ありがとう。

多分問題はビットファイルにあり、サーバーへのアップロードが間違っていたか、ダウンロード時にエラーがあったのでしょうが、気がつきませんでした。

一般的に、5つ以上のファイルを個別にダウンロードするのは非常に不便です。

引き続き理解し、どこかに配置しようと思いますので、結果を報告します。

全体的に、十字ボタンの機能はとても気に入っています。

しかし、最小化ボタンには失望した・・・・・・。

私が理解したように、それは次の行の下に最小化する必要があり、アイデアでは、動作しませんか?

 

一般的に、非常に有益な記事。

そして、このようなメニューのためのプロのコンストラクタであることが判明し、その上ですべてがクリックされ、追加され、一般的に動作します。

また、この奇跡のセルにアクセスする方法についての簡単なマニュアルがあればとてもいいと思う。

例えば、Expert Advisorがティックイベントでセルから値を読み取るとします。

そして、これらのセルはoninitプロセス中に入力パラメータで満たされるとします。

それとも、そんなものを自分で書かなければならないのだろうか?

これは視覚的なコンストラクタとして機能するのでしょうか?

 

貴重なコメントをありがとう。すでに熟考し、そのほとんどを修正するつもりだ。

 

プログラム全体が利用できる

を形成する。

この形式でデータを格納する

そして、これらの値を

をHeader[1].2カラムとして参照できるようにする。

少なくとも文字列データ型では

似たようなものがすでにあるようですね。

string Mstr[][3]=
  {
     {"MACD","",""},
     {"NEW1","metod",""},
     {"elders","new2",""},
     {"Fast","new3",""},
     {"Slow","new4",""},
     {"Signal","new5",""},
     {}
  };

二次元配列のように。

このようなことをすると叱られます。

     {"NEW1",""+TrailingStop+"",""},


おそらくゲッターとセッターはカプセル化を分割できないのだろう。

 

それぞれのセルには固有の名前があります。マウス・カーソルをオブジェクトの上に置くと、それを見ることができます。ClassMasterWindowsEXE.mqhファイルはセルにアクセスする方法を示しています。

//+------------------------------------------------------------------+
//| イベントをインターセプトして処理するメソッド OnChartEvent() |...
//+------------------------------------------------------------------+
void CMasterWindowsEXE::OnEvent(const int id,
                                const long &lparam,
                                const double &dparam,
                                const string &sparam)
  {
   if(on_event) // イベント処理が有効
     {
      //--- メインウィンドウでSTARTボタンを押す
      if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }
      //--- EDIT STR18エディタで変数を編集する。
      if(id==CHARTEVENT_OBJECT_ENDEDIT
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR18",0)>0)
        {
         string textedit=ObjectGetString(0,sparam,OBJPROP_TEXT);
         if(StringFind(textedit,".",0)>=0)
           {
            ObjectSetString(0,sparam,OBJPROP_TEXT,"");
            ChartRedraw();
            MessageBox("ファイル名には完全なストップがあってはならない!",「ファイル名エラー,MB_OK);
           }
         else nameFile=textedit;
        }
 

しかし、ここでは文字列パラメータはすべて

つまり、各ボタンに対して次のようなイベントを書く必要がある。

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,CWin1.STR2.RowType3.Button3,0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }

ボタンに対して

などの文字列から値を取り出し、それを整数に変換し、1を足して戻す。

そしてイベント・オンティックで

そして

などの文字列から値を取り出し、それを整数に変換する。

一般的には、構造体のようなものがあれば、保存されたオブジェクトの型を設定することができ、文字列への値の転送モジュールはクラス内に実装することができます。

イベントにコードを挿入する ことで、例えばプラスセルのトラッキングができることは正しく理解できました。

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1.STR2.RowType3.Button3",0)>=0)
        {
         Generator();
        }

 
最小化ボタンが機能するかどうかも気になる。