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

 
Sergey Golubev:

何年も前、このスレッドの英語版には、取引(と市場分析)時にテキストファイルを生成・更新し、それを同じメタトレーダーで動作する別のEAが一定の間隔で読み取る(あるいは同じだが別のチャートで動作する)EAがありました(今見つけるにはあまりにも時間がかかりすぎますが)。そして、両者はこのファイルでコミュニケーションをとりながら、取引していた。

スキャルパーマスターが他の端末のスキャルパースレーブと通信するためにそうしているのです。しかし、トレーダーからの制御コマンドを転送するだけなので、すべての端末で同じボタンを手動でクリックする必要はありません。しかし、データ転送を妨げるものは何もない。

メモリマッピングで通信して、さよなら市場

 

私は、カスタムキャラクターを 扱うことが多いですね。ほとんどの場合、カスタムを殺す必要があるが、手動で行わなければならない。自動化することにしたんです。

そして、それはまさに「サービス」のための脚本であることがわかりました。おそらくServicesの標準的なアプローチではないでしょうが、私はチャートに縛られないスクリプトが欲しかったのです。その理由は以下の通りです。

// Удаляет символ активного графика из Обзора рынка (кастомный - удаляет полностью).

#property service

// Находит чарт в фокусе.
long GetFocusChart()
{
  long Chart = ChartFirst();

  for (; Chart != -1; Chart = ChartNext(Chart))
    if (ChartGetInteger(Chart, CHART_BRING_TO_TOP))
      break;

   return(Chart);
}
   
// Удаляет чарты символа.
int DeleteCharts( const string Symb )
{
  int Res = 0;
  
  for (long Chart = ChartFirst(); Chart != -1; Chart = ChartNext(Chart))
    if (ChartSymbol(Chart) == Symb)
      Res += ChartClose(Chart);
  
  return(Res);
}

// Удаляет символ из Обзора рынка (кастомный - удаляет полностью).
bool DeleteSymbol( const string Symb )
{
  DeleteCharts(Symb);

  return(SymbolSelect(Symb, false) && (!SymbolInfoInteger(Symb, SYMBOL_CUSTOM) || CustomSymbolDelete(Symb)));
}

void OnStart()
{
  const long Chart = GetFocusChart();
  
  if (Chart != -1)
    DeleteSymbol(ChartSymbol(Chart));
}

そのスクリプト/サービスにホットキーを付けて、不要なシンボルのチャートを見たら、それを通してシンボルを釘付けにしようと考えていました。とても便利でしょう。しかし、なかなかうまくいきません。

  • Serviceにホットキーを固定する方法はありません。
  • 本サービスを再開するためには、事前に削除する必要があります。これは、Terminalの初回起動時にServiceを起動するために必要なものと思われます。でも、私の場合は違うんです。
  • SymbolSelectが機能しない - シンボルを削除することができない。バグ、らしいです。
結果、バツが悪い。サービスの実用面をなんとか解決できないか。


ZZY アクティブなチャートシンボルを削除する回避策があります。

 
fxsaber:

私は、カスタムキャラクターを扱うことが多いですね。ほとんどの場合、カスタムを殺す必要があるが、手動で行わなければならない。自動化することにしたんです。

そして、それはまさに「サービス」のための脚本であることがわかりました。サービスに対する標準的なアプローチとはちょっと違うかもしれませんが、チャートに縛られないスクリプトが欲しかったんです。その理由は以下の通りです。

そのスクリプト/サービスにホットキーを付けて、不要なシンボルのチャートを見たら、それを通してシンボルを釘付けにしようと考えていました。とても便利でしょう。しかし、なかなかうまくいきません。

  • Serviceにホットキーを固定する方法はありません。
  • 本サービスを再開するためには、事前に削除する必要があります。これは、Terminalの初回起動時にServiceを起動するために必要なものと思われます。でも、私の場合は違うんです。
  • SymbolSelectが機能しない - シンボルを削除することができない。バグ、らしいです。
結果、バツが悪い。サービスの実用面をなんとか解決できないか。


ZZY アクティブなチャートシンボルを削除するための回避策があります。

OnChartEvent()関数が そこで動作しないため、Servicesにホットキーを置くことはできませんが、ご存じだと思います。そのため、Expert Advisorはホットキーで動作し、リソースを通じてServiceにコマンドを渡す必要があります。リソースでサービスを管理するようにする。

SZY もちろん、その場合、サービスの意味はなくなります。結局、Expert Advisorからホットキーでチャートを閉じることができる...。

SZY.ポイントは、Expert Advisorの追加機能を作らないことだけです。様々なEAの一般的な機能をServiceにダンプし、リソースを通じて呼び出すことができる。どうすればいいのか、命令を出してください。

 
Реter Konow:

OnChartEvent()が 機能しないため、Serviceにホットキーを置くことができない


 
fxsaber:


ありがとうございます。では、何が問題なのでしょうか?

サービス自体(無停止で動作)がキーストロークに反応するようにしたい。

 
Реter Konow:

ありがとうございます。では、何が問題なのでしょうか?

サービス自体(無停止で動作)がキーストロークに 反応するようにしたい。

いいえ。チャートに縛られることなく、スクリプトモードで作業できるサービスが必要です。

 
fxsaber:

いいえ。チャートに縛られることなく、スクリプトモードで作業できるサービスが必要です。

それ以外の方法はないのでしょうか?

 
Реter Konow:

それ以外の方法はないのでしょうか?

はい。

 
fxsaber:

はい。

では、彼はどんなチャートでも走れるのですか?簡単に。

 
このサービスでは、データ(見積書)を修正しながら操作することはできますが、特に必要とされる端末のウィンドウを管理することはできません。したがって、1つまたは別のウィンドウを閉じる必要がある場合、サービスはこのウィンドウに対して明らかに不可能な見積もりを生成し、このウィンドウに付属するスクリプトはこの見積もりを受信したときにウィンドウを閉じます、という明白な結論が得られました。