チャート上に等幅フォントで出力するにはどうしたらいいですか? - ページ 4

 
Alexey Volchanskiy:

この測定値は何の意味もない。CommentとCanvasで別々に数万回のサイクルを作るべきで、そうすれば何か判断できるはずです。また、印刷するテキストは、例えばカウンターの値を印刷させるなど、変更する必要があります。

このようにやり直すことは可能でしょうか?

繰り返しの出力は正しい、コメントは mt5の速度を殺す。ずいぶん前に確認し、テスト中の表示は除外しています。

CHART_COMMENT をチェックしていませんでしたが、ちょうどそれについて思い出したので、時間があれば - スピードをチェックします。

//+------------------------------------------------------------------+ 
//| Функция получает текст комментария в левом верхнем углу графика. | 
//+------------------------------------------------------------------+ 
bool ChartCommentGet(string &result,const long chart_ID=0) 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- получим значение свойства 
   if(!ChartGetString(chart_ID,CHART_COMMENT,result)) 
     { 
      //--- выведем сообщение об ошибке в журнал "Эксперты" 
      Print(__FUNCTION__+", Error Code = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Функция устанавливает текст комментария в левом верхнем углу     | 
//| графика.                                                         | 
//+------------------------------------------------------------------+ 
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); 
  }
 
Nikolai Semko:

MT4で試した。コードもその上で動作します。
MT4では、グラフィカルなアナログと比較して、コメントが5倍速くなることが判明しました。そして、MT5ではMT4に比べてComment()の動作が5-6倍遅いことが判明しました。さて、これは不愉快で奇妙な驚きです。そこで、開発者の方に質問です。どうして?明らかに5のバグだろ!!!!


情報ありがとうございます、MT5では非常に悲しい、MT4とMT5ではさらに悲しい、マルチプラットフォームEAでは互換性が悪いことが判明しました。

 
Yury Kirillov:

情報ありがとうございます、MT5では非常に悲しい、MT4とMT5ではさらに悲しい、マルチプラットフォームEAでは互換性が悪いことが判明しました。

あるんです。私は、mt5のチャート上のオブジェクトと情報の出力を完全に排除し、良いテスターレポートを 犠牲にして、全く多くを失っていない。

 
Yury Kirillov:

情報ありがとうございます、MT5では非常に悲しい、MT4とMT5ではさらに悲しい、マルチプラットフォームEAでは互換性が悪いことが判明しました。


やはりkanvasに乗り換えるのがベストな選択だと思います。MT4とMT5の相性はそこそこバッチリです。また、Commentは、ドラフトコードで素早く実行するためのチェックにのみ有効で、最終的なコードでは有効ではありません。みんな、なぜかKanvasのスピード性能を甘く見ているんですよ。

 
Nikolai Semko:

やはり、Canvasに乗り換えるのがベストな選択だと思います。MT4とMT5はそこそこ互換性があります。また、Commentは、ドラフトコードで素早く現状を確認する場合にのみ有効で、最終コードでは有効ではありません。皆さん、なぜかCanvasのスピード性能を過小評価していますね。


はっきり言って、そうするしかないでしょう...。

 
Nikolai Semko:

サイクルも別にやって、ちょっと結果がおかしいと思ったら、同じでした。同じ結果です。一般的なサイクルでも、個別でも違いはない。私のサンプルでは、毎回テキストが変わっているのですが、なぜ気づかれなかったのでしょう。コンパイラの最適化も知っています。))


また、ループを分けたコードを掲載してもよろしいでしょうか?

 
Vitaly Muzichenko:

繰り返しの結論は正しく、コメントは mt5のスピードを酷く殺します。ずいぶん前に確認したのですが、テスト時にはその表示を除外していました。

CHART_COMMENTを チェックしていなかったのですが、ちょうど思い出したので、時間を作ってスピードをチェックしてみます。

SDから。

チャートコメント欄を通じて、EAとインジケータの間で文字列情報のやりとりを設定することができます。

そのような少数の潜在的なユーザーのために、最適化を遅らせるべきではないと判断したのです。

次のビルドでは、コメント機能は単一のテストでのみ機能するようになります。最適化中 - しない

 
fxsaber:

SRから

EAとインジケータ間で、チャートコメント欄を通じて文字列情報を交換。

人は性倒錯に長ける

そして、一般的には、もちろん、メモリマッピングのような交換方法はありませんが、サンドボックス内で、DLLを呼び出すことなく

 
Alexey Volchanskiy:

実際、足りないのはメモリマッピングのタイプ交換メソッドですが、サンドボックス内で、DLLを呼び出すことなく行います。

豊富な選択肢

 
fxsaber:

選択肢はたくさん ある。


みんなサロゲートなんです。そして、それぞれにシリアライズ/デシリアライズが必要です。例えば、WCFでは、データフィールドを持つ複雑なクラスのインスタンスを、利用可能なあらゆるプロトコルを使ってWeb上に送信することができます。受け手側にそんなクラスがあればいいんです。