エラー、バグ、質問 - ページ 2968

 
Mihail Matkovskij:

無効な削除があります!あなたのコード

1つ1つ削除していくと、リストが小さくなっていくのですだから、こうすればいいんです。

あるいはもっとシンプルに。

ご回答ありがとうございました。問題は、やはりアイテムの追加

 
Mihail Matkovskij:

将来、マルチコアプロセッサを搭載したアイアンを作るために、MQL5クラウドネットワークサービスの 2つのエージェントがどれくらいの収入を得られるか調べることにした。Agent Managerを使用してエージェントを追加しました。問題なく追加されているようです。

何も不審な 点はないようですが...。MQL5.COMのアカウントにログインしてみました。私のアカウントの「エージェント」で作成されたエージェントを確認しました。また、タスクマネージャーでMetaTester-1とMetaTester-2 という2つのサービスを発見しました。しかし、半日ほどは代理店の仕事は ない。すべてがNULLです。なぜエージェントは機能しないのか?

そして今、私のオフィスからすべてのエージェントが削除されたことを確認しました。


タスクマネージャーで サービスMetaTester-1とMetaTester-2が 表示され、エージェントマネージャーでも表示されます。 しかし、エージェントマネージャーでは、サービスが無効になって いることが表示されます。しかも、昨日まであったのに、キャビネットにない...。MQL5 Cloud Networkの このような動作の理由は何でしょうか?

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
Mihail Matkovskij:

そして今、私のキャビネットでエージェントが削除されたことを確認しました。


タスクマネージャーにはMetaTester-1とMetaTester- 2のサービスが表示れ、エージェントマネージャーにも表示されます。 しかし、エージェントマネージャーではサービスが無効になって いることがわかります。しかも、昨日までいたのに、内閣にいない...。MQL5 Cloud Networkが そのような挙動をする理由は何でしょうか?

誰も削除されない - このボックスのチェックを外す...

 
Vladimir Karputov:

誰もどこにも行っていない-チェックを外してください ...

А...そうなんだ!私のエージェントはアクティビティがゼロなのですが・・・。

 

コンテンツのサイズを変更することができないので、解決してください。チャートウィンドウのサイズを変更した場合、高さを変更する必要があります。

また、OnCalculate() が再度起動されると、スクロールが失われる


//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#include <Controls\Dialog.mqh>
#include <Controls\ListView.mqh>

//+------------------------------------------------------------------+
//| Class CPanelDialog                                               |
//| Usage: main dialog of the SimplePanel application                |
//+------------------------------------------------------------------+
class CPanelDialog : public CAppDialog
  {
public:
   CListView         m_list_view1; // the list object
   CListView         m_list_view2; // the list object

public:
                     CPanelDialog(void);
                    ~CPanelDialog(void);

   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
   virtual void      OnChangeListView(void);
protected:
   bool              CreateListView(void);
   virtual bool      OnResize(void);
   bool              OnDefault(const int id,const long &lparam,const double &dparam,const string &sparam);
  };

//+------------------------------------------------------------------+
//| Event Handling                                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CPanelDialog)
ON_EVENT(ON_CHANGE,m_list_view1,OnChangeListView)
ON_OTHER_EVENTS(OnDefault)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CPanelDialog::CPanelDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CPanelDialog::~CPanelDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CPanelDialog::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(!CreateListView())
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "ListView" element                                    |
//+------------------------------------------------------------------+
bool CPanelDialog::CreateListView(void)
  {
//--- coordinates
   int x1=0;
   int y1=0;
   int x2=ClientAreaWidth();
   int y2=ClientAreaHeight();
//--- create
   m_list_view1.Create(0,m_name+"ListView",0,x1,y1,x2,y2);
   m_list_view1.ColorBackground(clrMistyRose);
   Add(m_list_view1);
   m_list_view1.Alignment(WND_ALIGN_HEIGHT,0,0,0,0);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Handler of resizing                                              |
//+------------------------------------------------------------------+
bool CPanelDialog::OnResize(void)
  {
//--- call method of parent class
   if(!CAppDialog::OnResize())
      return(false);

//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CPanelDialog::OnChangeListView(void)
  {

//+------------------------------------------------------------------+
  }
//+------------------------------------------------------------------+
//| Rest events handler                                                    |
//+------------------------------------------------------------------+
bool CPanelDialog::OnDefault(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

//--- let's handle event by parent
   return(false);
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#property version "1.00"
#property strict

#property indicator_chart_window

string symbols[];
//+------------------------------------------------------------------+
//| Global Variables                                                 |
//+------------------------------------------------------------------+
CPanelDialog ExtDialog;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   if(!ExtDialog.Create(0,"Spread",0,12,12,250,300))
      return(INIT_FAILED);
//--- run application
   if(!ExtDialog.Run())
      return(INIT_FAILED);
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy application dialog
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//---
   ExtDialog.m_list_view1.ItemsClear(); // Очистим список

   int k=MarketWatch();
   for(int i=0; i<k; i++)
     {
      string str = (string)(i+1)+" из "+(string)k+": "+symbols[i]+" = "+(string)SymbolInfoInteger(symbols[i],SYMBOL_SPREAD);
      ExtDialog.m_list_view1.ItemAdd(str); // Заполним строками
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   ExtDialog.OnEvent(id,lparam,dparam,sparam);

   if(id==CHARTEVENT_CHART_CHANGE || (id==CHARTEVENT_OBJECT_CLICK && StringFind(sparam,"MinMax")>0))
     {
      if(ExtDialog.Height()>40) // Если окно не свёрнуто
        {
         ExtDialog.Height((int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS)-50); // Изменим высоту диалог-окна
         ExtDialog.m_list_view1.Height(ExtDialog.Height()-40); // Изменим высоту содержимого в диалог-окне
        }
     }
//---
  }
  
//+--- Список символов с MarketWatch --------------------------------+
int MarketWatch()
  {
   int s=SymbolsTotal(true);
   ArrayResize(symbols,s);
   for(int i = 0; i < s; i++)
      symbols[i] = SymbolName(i,true);
   return(s);
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

コンテンツのサイズを変更することができないので、解決してください。チャートウィンドウのサイズを変更した場合、高さを変更する必要があります。

また、OnCalculate() が再びトリガーされるとスクロールが失われます。


この記事で 紹介されているControlsPlusのウィンドウとコントロールのライブラリのパッチ適用版を試してみてください。そこでは、ゴムの特性が自動的にサポートされます。

Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
  • www.mql5.com
В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.
 
MQLプログラムが、ユーザーによる対話的な起動ではなく、ターミナル・スタート自体の結果として(つまりセッションの開始時に自動的に)起動されることを知る方法はありますか?
 
Stanislav Korotky:
MQLプログラムが、ユーザーによる対話的な操作ではなく、ターミナル・スタートの結果(つまりセッションの開始時に自動的に)起動されることを知る方法はありますか?

サービス、ループなし。
端末の起動時に、ループしていない場合は1回だけ実行されます。
サービスにどのようなロジックを入れるかは、要求される要件に応じた具体的な作業となる。

 
Stanislav Korotky:
MQLプログラムが、ユーザーによる対話的な操作ではなく、ターミナル・スタート(つまりセッションの開始時に自動的に開始される)の結果として開始されたことを検知する方法はありますか?

検索中、見つかりません。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber, 2021.02.02 19:34

EAを起動する段階で、標準の方法で実行するのか、テンプレートを経由して実行するのかを判断しなければならないのですが。

この問題を解決する方法について、何かご意見があればお聞かせください。ところで、チャートのライフタイム、つまりいつ作成されたかを決定するサブタスクがある。

 
fxsaber:

検索しても見つからなかった。

私の目的には、このような解決策がありました。

ChartPriceOnDropped()=0.0
ChartTimeOnDropped()=1970.01.01 00:00:00
ChartXOnDropped()=0
ChartYOnDropped()=0

これらの関数は、端末の起動時にゼロを与えます。

PS.残念ながら、この方法はマウスでしか使えません。ユーザーが "Attach to chart "コマンドを実行すると、問題は解消されます。