初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 609 1...602603604605606607608609610611612613614615616...1503 新しいコメント Vladimir Karputov 2016.08.23 05:30 #6081 Alexander Antoshkin:ボタンのコードも例からパクりました、、、、。ボタンの押下が固定されない、つまり機能実行後に初期状態に戻るようにするには。ボタンに関しては、ヘルプに記載されている例をご紹介します。//+------------------------------------------------------------------+ //| ControlsButton.mq5 | //| Copyright 2015, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property description "Панель индикации и диалогов управления. Демонстрация работы класса CButton" #include <Controls\Dialog.mqh> #include <Controls\Button.mqh> //+------------------------------------------------------------------+ //| defines | //+------------------------------------------------------------------+ //--- indents and gaps #define INDENT_LEFT (11) // indent from left (with allowance for border width) #define INDENT_TOP (11) // indent from top (with allowance for border width) #define INDENT_RIGHT (11) // indent from right (with allowance for border width) #define INDENT_BOTTOM (11) // indent from bottom (with allowance for border width) #define CONTROLS_GAP_X (5) // gap by X coordinate #define CONTROLS_GAP_Y (5) // gap by Y coordinate //--- for buttons #define BUTTON_WIDTH (100) // size by X coordinate #define BUTTON_HEIGHT (20) // size by Y coordinate //--- for the indication area #define EDIT_HEIGHT (20) // size by Y coordinate //--- for group controls #define GROUP_WIDTH (150) // size by X coordinate #define LIST_HEIGHT (179) // size by Y coordinate #define RADIO_HEIGHT (56) // size by Y coordinate #define CHECK_HEIGHT (93) // size by Y coordinate //+------------------------------------------------------------------+ //| Class CControlsDialog | //| Usage: main dialog of the Controls application | //+------------------------------------------------------------------+ class CControlsDialog : public CAppDialog { private: CButton m_button1; // the button object CButton m_button2; // the button object CButton m_button3; // the fixed button object public: CControlsDialog(void); ~CControlsDialog(void); //--- create virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2); //--- chart event handler virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam); protected: //--- create dependent controls bool CreateButton1(void); bool CreateButton2(void); bool CreateButton3(void); //--- handlers of the dependent controls events void OnClickButton1(void); void OnClickButton2(void); void OnClickButton3(void); }; //+------------------------------------------------------------------+ //| Event Handling | //+------------------------------------------------------------------+ EVENT_MAP_BEGIN(CControlsDialog) ON_EVENT(ON_CLICK,m_button1,OnClickButton1) ON_EVENT(ON_CLICK,m_button2,OnClickButton2) ON_EVENT(ON_CLICK,m_button3,OnClickButton3) EVENT_MAP_END(CAppDialog) //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CControlsDialog::CControlsDialog(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CControlsDialog::~CControlsDialog(void) { } //+------------------------------------------------------------------+ //| Create | //+------------------------------------------------------------------+ bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2) { if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2)) return(false); //--- create dependent controls if(!CreateButton1()) return(false); if(!CreateButton2()) return(false); if(!CreateButton3()) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button1" button | //+------------------------------------------------------------------+ bool CControlsDialog::CreateButton1(void) { //--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y); int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button1.Text("Button1")) return(false); if(!Add(m_button1)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button2" button | //+------------------------------------------------------------------+ bool CControlsDialog::CreateButton2(void) { //--- coordinates int x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X); int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y); int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_button2.Create(m_chart_id,m_name+"Button2",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button2.Text("Button2")) return(false); if(!Add(m_button2)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button3" fixed button | //+------------------------------------------------------------------+ bool CControlsDialog::CreateButton3(void) { //--- coordinates int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X); int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y); int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_button3.Create(m_chart_id,m_name+"Button3",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button3.Text("Locked")) return(false); if(!Add(m_button3)) return(false); m_button3.Locking(true); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CControlsDialog::OnClickButton1(void) { Comment(__FUNCTION__); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CControlsDialog::OnClickButton2(void) { Comment(__FUNCTION__); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CControlsDialog::OnClickButton3(void) { if(m_button3.Pressed()) Comment(__FUNCTION__+" Состояние элемента управления: On"); else Comment(__FUNCTION__+" Состояние элемента управления: Off"); } //+------------------------------------------------------------------+ //| Global Variables | //+------------------------------------------------------------------+ CControlsDialog ExtDialog; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create application dialog if(!ExtDialog.Create(0,"Controls",0,40,40,380,344)) return(INIT_FAILED); //--- run application ExtDialog.Run(); //--- succeed return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- очистим комментарии Comment(""); //--- destroy dialog ExtDialog.Destroy(reason); } //+------------------------------------------------------------------+ //| Expert chart event function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // event ID const long& lparam, // event parameter of the long type const double& dparam, // event parameter of the double type const string& sparam) // event parameter of the string type { ExtDialog.ChartEvent(id,lparam,dparam,sparam); } //+------------------------------------------------------------------+ 注意:ボタン1、ボタン2はロック不可、ボタン3はロック可能です。 ファイル: ControlsButton.mq5 10 kb Vladimir Karputov 2016.08.23 05:37 #6082 持ち越した。 ジョージそのような点をアドバイスしてください。1.EA + インジケータが動作している2.サーバーへの接続が切断され、すべてのインジケーターレンダリングが失われますが、提供されるデータは残ります。接続が切れるとどうなるのか、なぜ絵は消えるのにデータは残るのか、どこで読めばいいのか、教えてください。もう一度描き直すことは可能でしょうか?ありがとうございました。 Vladimir Karputov 2016.08.23 07:15 #6083 Karputov Vladimir:持ち越した。 ジョージそのような点をアドバイスしてください。1.EA + インジケータが動作している2.サーバーへの接続が切断され、インジケーターのすべてのレンダリングが消え、提供されるデータは残ります。接続が切れるとどうなるのか、なぜ絵は消えるのにデータは残るのか、どこで読めばいいのか、教えてください。もう一度描き直すことは可能でしょうか?ありがとうございました。まずはインジケータから、つまり「rates_total」パラメータが「0」のときにOnCalculate()で何が起こるか、から始めます。最初のrates_totalパラメータは、計算のためにインジケータが利用できるバーの数を含んでおり、チャートで利用可能なバーの数に対応しています。OnCalculate()が返す値と2番目の入力パラメータprev_calculatedの関係に注目してください。関数呼び出しの prev_calculated パラメータには、前の呼び出しで OnCalculate() が返した 値が含ま れる。これにより、この関数の前回の呼び出し以降に変更されていないバーについて、計算を繰り返すことを避けるために、カスタム・インジケータを計算するための経済的なアルゴリズムが可能になります。そのためには、通常、現在の関数呼び出しのバーの数を含む rates_total パラメータの値を返せば十分である。OnCalculate()の最後の呼び出し以降に価格データが変更された場合(より深いヒストリがポンピングされたか、ヒストリの空白が埋められた)、入力パラメータprev_calculatedの値はターミナルによってゼロに設定されます。 削除済み 2016.08.24 18:10 #6084 Karputov Vladimir:ボタンに関することであれば、ヘルプにある例です。注:ボタン1、ボタン2はロック不可、ボタン3はロック可。これは良い例ではありません。1 図書館があるから 2 パネルで作られているため3 理解していないからです。2つのボタンをスケッチしました。1つは固定で、もう1つはロックを解除する必要があります - ロックを解除する必要がある「追加//+------------------------------------------------------------------+ //| 0000.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" bool stop_trading; int OnInit() {//--- Создание Фиксированной кнопки "Старт-Стоп" if( !ObjectCreate( 0, "stop_button", OBJ_BUTTON, 0, 0, 0 ) ) { MessageBox( "Кнопка 'Старт-стоп' не создана!", "Ошибка", MB_OK | MB_ICONHAND );return( INIT_FAILED );} else {ObjectSetInteger( 0, "stop_button", OBJPROP_CORNER, CORNER_RIGHT_LOWER ); ObjectSetInteger( 0, "stop_button", OBJPROP_XDISTANCE, 60 ); ObjectSetInteger( 0, "stop_button", OBJPROP_YDISTANCE, 20 ); ObjectSetInteger( 0, "stop_button", OBJPROP_XSIZE, 60 ); ObjectSetInteger( 0, "stop_button", OBJPROP_YSIZE, 20 ); if ( stop_trading ) {ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR,clrMagenta); ObjectSetInteger( 0, "stop_button", OBJPROP_STATE, true ); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Старт" );} else {ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR, clrMediumSeaGreen); ObjectSetInteger( 0, "stop_button", OBJPROP_STATE, false ); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Стоп" );} } //--- Создание Нефиксированной кнопки "Добавить if( !ObjectCreate( 0, "Add", OBJ_BUTTON, 0, 0, 0 ) ) { Print( "Кнопка 'Добавить' не создана!" );return( INIT_FAILED ); } { ObjectSetInteger( 0, "Add", OBJPROP_CORNER, CORNER_RIGHT_LOWER ); ObjectSetInteger( 0, "Add", OBJPROP_XDISTANCE, 140 ); //--- установим координаты кнопки ObjectSetInteger( 0, "Add", OBJPROP_YDISTANCE, 20 ); ObjectSetInteger( 0, "Add", OBJPROP_XSIZE,80); //--- установим размер кнопки ObjectSetInteger( 0, "Add", OBJPROP_YSIZE, 20); //--- ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR, clrWhite ); //--- установим цвет фона ObjectSetInteger( 0, "Add", OBJPROP_STATE, false ); //--- переведем кнопку в состояние false ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); //--- установим текст } return( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit( const int reason ) { //--- Удаление кнопки старт-стоп ObjectDelete( 0, "stop_button" ); //--- Удаление кнопки Добавить ObjectDelete( 0, "Add" ); } //+------------------------------------------------------------------+ //| Expert Chart event function | //+------------------------------------------------------------------+ void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) { long b_state; long f_state; //--- if( id == CHARTEVENT_OBJECT_CLICK ) { if ( sparam == "stop_button" ) { if ( ObjectGetInteger( 0, "stop_button", OBJPROP_STATE, 0, b_state ) ) { if ( b_state == 1 ) { stop_trading = true; ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR, clrMagenta); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Старт" ); } else { stop_trading = false; ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR,clrMediumSeaGreen ); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Стоп" ); } } } } ChartRedraw(ChartID()); //--Создание Нефиксированной кнопки "Добавить if(id==CHARTEVENT_OBJECT_CLICK) // НАЖАТ ГРАФИЧЕСКИЙ ОБЪЕКТ if ( sparam == "Add" )// Нажата кнопка { if ( ObjectGetInteger( 0, "Add", OBJPROP_STATE, 0, f_state ) ) { if (f_state == 1 ) { // то, что то =true; здесь можно выбирать цвет /текст и т.д до нажатия //--- ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR,clrWhite ); //цвет кнопки ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); // текст кнопки } else { // то ,что то равно false; //---здесь можно изменять цвет /текст и т.д после нажатия // ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR,clrMediumSeaGreen );//цвет кнопки // ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); // текст кнопки } ChartRedraw(ChartID()); } } return; } coon 2016.08.25 09:41 #6085 マネージャーになるには? Vladimir Karputov 2016.08.25 09:44 #6086 coon: マネージャーになるには? 以下は、「シグナル登録方法」です。 coon 2016.08.25 09:45 #6087 うーん、マネージャーがいて、その仕事の有効性を見て、「投資」したくなる。ps - すみません、私はティーポットなんです。 Vladimir Karputov 2016.08.25 09:46 #6088 coon:うーん、マネージャーがいて、その仕事の有効性を見て、「投資」したくなる。すみません、全くの初心者です。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム 初心者の方からの質問 カルプトフ ウラジミール 2016.08.25 11:43 シグナルを購読 する方法について 説明します。 coon 2016.08.25 09:50 #6089 ありがとうございます、調べてみます。本当に、第一近似値で......どうやら現場でないとわからないようです。でも、そうしたい......。何かオプションはありますか?入会申し込みをして、書類に記入し、$を入金して終わりなのでしょうか? Vladimir Karputov 2016.08.25 09:57 #6090 coon:ありがとうございます、調べてみます。本当に、第一近似値で......どうやら現場でないとわからないようです。でも、そうしたい......。何かオプションはありますか?入会申し込みをして、書類を書いて、お金を入金して終わりですか?チュートリアルビデオを見る:YouTubeで信号に関するチュートリアルビデオを見る。有料会員登録の開始には、MQL5.アカウントへの入金が必要です。シグナルズのサービスに関するFAQは こちら Витрина торговых сигналов в MetaTrader 4/5 2015.03.09www.youtube.com Как выбрать торговый сигнал в платформе MetaTrader и подписаться на него за пару кликов? Очень просто, смотри наше видео и ты узнаешь все о торговых сигналах. 1...602603604605606607608609610611612613614615616...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ボタンのコードも例からパクりました、、、、。ボタンの押下が固定されない、つまり機能実行後に初期状態に戻るようにするには。
ボタンに関しては、ヘルプに記載されている例をご紹介します。
注意:ボタン1、ボタン2はロック不可、ボタン3はロック可能です。
持ち越した。
ジョージそのような点をアドバイスしてください。
1.EA + インジケータが動作している
2.サーバーへの接続が切断され、すべてのインジケーターレンダリングが失われますが、提供されるデータは残ります。
接続が切れるとどうなるのか、なぜ絵は消えるのにデータは残るのか、どこで読めばいいのか、教えてください。もう一度描き直すことは可能でしょうか?
ありがとうございました。
持ち越した。
ジョージそのような点をアドバイスしてください。
1.EA + インジケータが動作している
2.サーバーへの接続が切断され、インジケーターのすべてのレンダリングが消え、提供されるデータは残ります。
接続が切れるとどうなるのか、なぜ絵は消えるのにデータは残るのか、どこで読めばいいのか、教えてください。もう一度描き直すことは可能でしょうか?
ありがとうございました。
まずはインジケータから、つまり「rates_total」パラメータが「0」のときにOnCalculate()で何が起こるか、から始めます。
最初のrates_totalパラメータは、計算のためにインジケータが利用できるバーの数を含んでおり、チャートで利用可能なバーの数に対応しています。
OnCalculate()が返す値と2番目の入力パラメータprev_calculatedの関係に注目してください。関数呼び出しの prev_calculated パラメータには、前の呼び出しで OnCalculate() が返した 値が含ま れる。これにより、この関数の前回の呼び出し以降に変更されていないバーについて、計算を繰り返すことを避けるために、カスタム・インジケータを計算するための経済的なアルゴリズムが可能になります。
そのためには、通常、現在の関数呼び出しのバーの数を含む rates_total パラメータの値を返せば十分である。OnCalculate()の最後の呼び出し以降に価格データが変更された場合(より深いヒストリがポンピングされたか、ヒストリの空白が埋められた)、入力パラメータprev_calculatedの値はターミナルによってゼロに設定されます。
ボタンに関することであれば、ヘルプにある例です。
注:ボタン1、ボタン2はロック不可、ボタン3はロック可。
これは良い例ではありません。
1 図書館があるから
2 パネルで作られているため
3 理解していないからです。
2つのボタンをスケッチしました。1つは固定で、もう1つはロックを解除する必要があります - ロックを解除する必要がある「追加
マネージャーになるには?
うーん、マネージャーがいて、その仕事の有効性を見て、「投資」したくなる。
ps - すみません、私はティーポットなんです。
うーん、マネージャーがいて、その仕事の有効性を見て、「投資」したくなる。
すみません、全くの初心者です。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
初心者の方からの質問
カルプトフ ウラジミール 2016.08.25 11:43
シグナルを購読 する方法について 説明します。ありがとうございます、調べてみます。
本当に、第一近似値で......どうやら現場でないとわからないようです。
でも、そうしたい......。
何かオプションはありますか?入会申し込みをして、書類に記入し、$を入金して終わりなのでしょうか?
ありがとうございます、調べてみます。
本当に、第一近似値で......どうやら現場でないとわからないようです。
でも、そうしたい......。
何かオプションはありますか?入会申し込みをして、書類を書いて、お金を入金して終わりですか?
チュートリアルビデオを見る:YouTubeで信号に関するチュートリアルビデオを見る。
有料会員登録の開始には、MQL5.アカウントへの入金が必要です。シグナルズのサービスに関するFAQは こちら