かなり役に立つ。ありがとう。
Andrey Khatimlianskii:
Defines.mqhのdefineを再定義する。
Defines.mqhのdefineを再定義する。
- 次回のアップデートでは、標準ライブラリが 復元され、それに伴ってDefines.mqhファイルも復元されます。
- 標準ライブラリを編集するのはよくない。
私は編集することを勧めていません。このファイルをインクルードした後、パネルを作成する前に再定義する必要があります。
Andrey Khatimlianskii:
編集することは勧めていない。このファイルを有効にした後、パネルを作成する前に上書きする必要があります。
簡単な例でやり方を教えてください。私はライブラリ自体の定義の色を変更しましたが、パネルの色は変わりません。
編集することは勧めていない。このファイルを有効にした後、パネルを作成する前に上書きする必要があります。
Maxim Dmitrievsky:
簡単な例で教えてください。私はライブラリ自体の定義の色を変更しました - パネルの色は変わりません。
簡単な例で教えてください。私はライブラリ自体の定義の色を変更しました - パネルの色は変わりません。
ファイルを変更した後、EAを再コンパイルしてください。アップデート後にバリアントを復元するためにバックアップを取るのを忘れないでください。
オーバーライドは#undefと#defineを使って行います。しかし、正しい場所に置く必要があります;)
Andrey Khatimlianskii:
唯一の違いはと....
オーバーライドは#undefと#defineで行う。ただし、正しい場所に置く必要がある;)
Andrey Khatimlianskii:
ファイルを変更した後、EAを再コンパイルすれば動くはずです。アップデート後にバリアントをリストアするためにバックアップを取ることを忘れないでください。
オーバーライドは#undefと#defineを使って行います。しかし、正しい場所に置く必要がある;)
さて、そうやってやってみたが、何も動かない。パネルは以前のように白いままだ。
コンパイラはMacro redifinitionを書き出す。
//+------------------------------------------------------------------+ //|マイパネルmqh //|著作権 © 2013, DeltaTrader|デルタトレーダー //|http://デルタトレーダー.com.br|http://www.deltatrader.com.br //+------------------------------------------------------------------+ #property copyright 「デルタトレーダー © 2013 #property link "www.deltatrader.com.br" #property version "1.000" #property description "Test Panel" #property indicator_plots 0 //+------------------------------------------------------------------+ | 含む| //+------------------------------------------------------------------+ #include <Controls\Dialog.mqh> #include <Controls\Label.mqh> #include <Controls\Panel.mqh> #include <Controls\Edit.mqh> #include <Controls\Defines.mqh> #define CONTROLS_DIALOG_COLOR_BORDER_LIGHT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0x00,0x00,0xFF' //+------------------------------------------------------------------+ //| グローバルパラメーター| //+------------------------------------------------------------------+ int panelXX = 200; int panelYY = 200; int panelWidth = 600; int panelHeight = 400; CAppDialog m_panel; //--- 入札オブジェクト CPanel m_bidcolor; CLabel m_bidlabel; //--- オブジェクトに尋ねる CPanel m_askcolor; CLabel m_asklabel; CEdit m_edit; //+------------------------------------------------------------------+ //| 初期設定| //+------------------------------------------------------------------+ int OnInit() { //--- パネルの作成 m_panel.Create(0,"blablabla",0,panelXX,panelYY,panelWidth,panelHeight); //--- 入札ラベルと色 m_bidcolor.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_bidcolor.ColorBackground(clrYellow); m_panel.Add(m_bidcolor); m_bidlabel.Create(0,"Bid Text",0,5,5,0,0); m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); m_bidlabel.Color(clrBlue); m_panel.Add(m_bidlabel); //--- ラベルと色を尋ねる m_askcolor.Create(0,"Ask Background Color",0,1,1,panelWidth-30,30); m_askcolor.ColorBackground(clrAqua); m_panel.Add(m_askcolor); m_asklabel.Create(0,"Ask Text",0,5,30,0,0); m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); m_asklabel.Color(clrRed); m_panel.Add(m_asklabel); m_edit.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_panel.Add(m_edit); //--- パネルの実行 m_panel.Run(); return(0); } //+------------------------------------------------------------------+ | 終了時| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- パネルを破壊する m_panel.Destroy(reason); //--- すべてのオブジェクトを削除する ObjectsDeleteAll(0,0); } //+------------------------------------------------------------------+ //| 計算時| //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- 非常にシンプルな入札ラベル m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); //--- 非常にシンプルな質問ラベル m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); //--- return(rates_total); } //+------------------------------------------------------------------+ //| チャートイベント| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- マウスでパネルを動かす m_panel.ChartEvent(id,lparam,dparam,sparam); //--- } //+------------------------------------------------------------------+

取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 エキスパートアドバイザとインディケータに素早く制御パネルを追加する方法 はパブリッシュされました:
自分のエキスパートアドバイザやインディケータに便利な制御パネルを追加したいけど、何をどうしたら良いかわかりませんか?この記事では、貴方のMQL4/MQL5プログラムに入力パラメータを持つダイアログパネルを『取り付ける方法』をステップバイステップでご紹介します。
次の例では、NewBar.mq5インディケータがどのように新しいバーを検出するかを詳細に分析していきましょう。
図1. インディケータで新しいバーを検出するプロセス
作者: Karputov Vladimir