サービスを提供します。もう稼働しているのでしょうか? - ページ 21

 

Renatさん、カスタムガラスをサービスに実装することは可能でしょうか?
ドキュメントには、OnBookEventハンドラはインジケータとエキスパートで呼び出さ れると書かれています。
サービスについてはどうでしょうか?サービス内でスタックを実行するには?
サービス内で、自分のカスタムスタックを実行できるようにしたいのですが。
お言葉によると、サービスはOnStart以外のハンドラをサポートしていないそうで、問題になりますね。
問題は、サービスが指標とExpert Advisorで システムOnTimerよりもはるかに高速であることです。
そして、カスタムスタックを構築するためには、サービスを利用した方が良い。

p.s.
この記事を読んで、一部の熟練プログラマがサービスを利用できないことに驚きました。

しかし,言語にThread(params)関数を追加すれば,関数に渡された引数に対してスレッドの並列実行を実現することができます.
スレッドがあれば、Process(params)関数という形で、スレッドに付随するプロセスも存在します。

重要な利点の一つは、サービスがシステム時間よりも速く、つまりわずか1ms、あるいはもっと短い時間で処理されることです。
While()ループで強制的にSleep(1)制限をかけたから。
システム OnTimer() with EventSetMillisecondTimer(1) イベントは、Expert Advisors とインジケータで ~ 20ms の間処理されます。
これは、処理性能の面では悪くない利得です。
残念ながら、Expert Advisor のハンドラはサポートされていないため、可能な解決策は非常に限られています。
以前から、エキスパートアドバイザーの起動をスケジュールなしで行いたいとの要望がありましたが、この問題を解決するためのサービスです。
サービスのメニューにある「自動売買」ボタンから判断して、取引できる可能性があります。
しかし、OnStartハンドラだけでは、本格的なトレーディングソリューションは構築できません。

 
fxsaber:

確かにとても便利です。

コンピュータを再起動し、RAMDriveのことを忘れてしまった。MT5を実行すると、すぐに問題が報告されます。

RamDiskをオートマウント+ジャンクション+ダイナミックアロケーションで使うのが簡単ではないでしょうか?
PCを起動すると、自動的にすべてのマウントとリンクを行い、ドライブに十分な容量がない場合は、勝手にRAMから追加してくれるのです。

 
Sergey Dzyublik:

RamDiskをオートマウント+ジャンクション+ダイナミックアロケーションで使うのが簡単ではないでしょうか?
起動時にPCが自動的にすべてをマウントしてリンクし、ディスクの容量が足りない場合はRAMから自動的に追加します。

常に必要というわけではないので、起動時に作成しないようにしました。

 

ターミナルは、再起動時にカスタムシンボルの プロパティを変更するのが好きです。例えば、その通貨。

そこで活躍するのが「サービス」です。起動すると、テスターの不正な挙動を修正する。

 
サービスプログラムからアクティブなチャートにコメントを表示させる方法を教えてください。
実際、他のチャートは出力できるのでしょうか?

//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+

int OnStart()
{
   Comment("text");

   return(0);
}
 

自分への答え ))

int OnStart()
{
   ChartCommentSet("Hello Service", ChartFirst());
   
   
   return(0);
}

//+------------------------------------------------------------------+ 
//| Функция устанавливает текст комментария в левом верхнем углу     | 
//| графика.                                                         | 
//+------------------------------------------------------------------+ 
bool ChartCommentSet(const string str, const long chart_ID=0) 
{ 
   //сбросим значение ошибки 
   ResetLastError(); 
   
   //установим значение свойства 
   if(!ChartSetString(chart_ID, CHART_COMMENT, str)) 
   { 
      //выведем сообщение об ошибке в журнал "Эксперты" 
      Print(__FUNCTION__+", Error Code = ", GetLastError()); 
      return(false); 
   } 
   
   //успешное выполнение 
   return(true); 
}
 
EAからサービスを実行するには?
 
Roman:

自分への答え ))

はい - すべてが左上に 書き込まれます。

//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ChartCommentSet("Hello Service", ChartFirst());


   return;
  }
//+------------------------------------------------------------------+
//| Функция устанавливает текст комментария в левом верхнем углу     |
//| графика.                                                         |
//+------------------------------------------------------------------+
bool ChartCommentSet(const string str, const long chart_ID=0)
  {
//сбросим значение ошибки
   ResetLastError();

//установим значение свойства
   if(!ChartSetString(chart_ID, CHART_COMMENT, str))
     {
      //выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ", GetLastError());
      return(false);
     }

//успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+

撮影者

 
fxsaber:

ターミナルは、再起動時にカスタムシンボルのプロパティを変更するのが好きです。例えば、その通貨。

そこで活躍するのが「サービス」です。テスターの起動時の不正な挙動を修正するものです。

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

カスタムシンボル。エラー、バグ、質問、提案。

fxsaber, 2019.09.15 22:30

ターミナル再読み込み後、カスタムシンボルの通貨が自動的に変更される問題を解決しました。

// Сервис корректирует валюты всех кастомных символов.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
  return(SymbolInfoInteger(Symb, SYMBOL_CUSTOM) && 
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_BASE, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_MARGIN, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_PROFIT, Currency));
}

void CorrectSymbols( void )
{
  const string Currency = AccountInfoString(ACCOUNT_CURRENCY);
  
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
    CorrectCurrency(SymbolName(i, false), Currency);
    
  return;
}

void OnStart()
{
  CorrectSymbols();
}
 

Expert Advisorの自動最適 化を起動する可能性をサービスに追加。

そして、最適化/実行が完了したことを知ることができるなど、さまざまな機能性を備えています。