記事"可視化の可能性 Rのプロットに似たMQL5のグラフィックス ライブラリ"についてのディスカッション - ページ 4

 
Roman Konopelko:

こんにちは、具体的にどのようにチャートを描き直そうとしたのですか?

特定の曲線のデータを変更するだけなら、ここに例があります:

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| スクリプト番組開始機能|
//+------------------------------------------------------------------+
voidOnStart()
  {
//--- データ 1
   double x1[]={-10,-4,-1,2,3,4,5,6,7,8};
   double y1[]={-5,4,-10,23,17,18,-9,13,17,4};
//--- データ 2
   double x2[]={-10,-10,10,10};
   double y2[]={-10,10,-10,10};
//--- グラフィック
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- ポイント
   CCurve *curve=graph.CurveAdd(x1,y1,CURVE_LINES);
   graph.CurvePlot(0);
   graph.Update();
   Sleep(1000);
   curve.Update(x2,y2);
   graph.Redraw(true);
   graph.Update();
   Sleep(1000);
  }
P.S.グラフィックス・ライブラリについては フォーラムにトピックが あり、この質問はすでにそこで提起されています。

例えば、各ティックでランダムなチャートを作成するコードです:

#include <Graphics\Graphic.mqh>

 double Xg[10]={0,1,2,3,4,5,6,7,8,9};
 double Yg[10]={0,0,0,0,0,0,0,0,0,0};

//------------------------------------------ 
int OnInit()
  {
   graf(); //グラフを描く
//---
   return(INIT_SUCCEEDED);
  }
//------------------------------------------ 
void OnTick()
  {  
   for(int i=0; i<=9; i++){
    Yg[i]=(int)MathRand()/1000;  
   }
   ObjectDelete(0,"Graph");//このやり方が正しいとは思わないが、他に方法がないんだ。
   graf(); //新しいチャートを描く
  }
//-------------------------------------------------------------
void graf(){
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);

   CCurve *curve=graph.CurveAdd(Xg,Yg,CURVE_LINES);
   graph.CurvePlotAll();
   graph.Update(true);
}
//-------------------------------------------------------------

チャートを削除せずにデータを更新する方法がわかりません。方法をご存知の方、教えてください。

 

このライブラリで署名のフォントサイズとスタイルを変更する方法を知っている人がいたら教えてください。- FontSetを試してみましたが、うまくいきませんでした......。

 
transcendreamer:

このライブラリで署名のフォントサイズとスタイルを変更する方法を知っている人がいたら教えてください。- FontSetを試してみましたが、うまくいきませんでした......。

ライブラリのソースを開き、検索でフォントをタイプしてください。

 
fxsaber:

biblaのソースを開き、検索でフォントを入力する。

そこで直接シャードコード?😁

何か既成の方法があるのかと思っただけです。

実はフォントで検索してFontSetを見つけたんだけど、これが連携拒否。

 
transcendreamer:

このライブラリで署名のフォントサイズとスタイルを変更する方法を知っている人がいたら教えてください。- FontSetを試してみましたが、うまくいきませんでした......。

凡例のキャプションは?

graphicL.HistorySymbolSize(Point_K);//シンボルのシンボル・サイズを取得/設定する。
 
Aleksey Vyazmikin:

レジェンドのサインは?

ありがとうございます。

実は軸にも。

 
-vallen- #:

スクリプトでは明確ですが、Expert Advisorではどのように更新するのでしょうか? 例えば、各ティックでランダムなチャートを作成するコードです:

チャートを削除せずにデータを更新する方法がわかりません。方法をご存知の方、教えてください。

何か回答はありますか?

 

Изначально класс CCanvas содержал только два режима отрисовки графических примитивов   со сглаживанием (antialiasing, AA) и без него. Затем были добавлены новые функции для создания примитивов на основе алгоритма Ву:

Arc()Pie() のスムージングメソッドがありません。

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / Arc
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / Arc
  • www.mql5.com
Arc(int,int,int,int,int,int,int,int,const uint) - CCanvas - Пользовательская графика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

また、エッジを平滑化した以下の塗りつぶしメソッドも必要である:

   void              FillTriangle(int x1,int y1,int x2,int y2,int x3,int y3,const uint clr);
   void              FillPolygon(int &x[],int &y[],const uint clr);
   void              FillCircle(int x,int y,int r,const uint clr);
   void              FillEllipse(int x1,int y1,int x2,int y2,const uint clr);
   void              Fill(int x,int y,const uint clr);
   void              Fill(int x,int y,const uint clr,const uint threshould);

//---

現在、最初にFillCircle() メソッドを使って塗りつぶしで円を描き、次にCircleWu() メソッドを使ってその周りをなぞったとしても、スムージングは部分的に失われる。

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / FillCircle
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / FillCircle
  • www.mql5.com
FillCircle(int,int,int,const uint) - CCanvas - Пользовательская графика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Anatoli Kazharski #:

また、これらの滑らかなエッジの塗りつぶし方法も必要だ:

//---

現在、最初にFillCircle() メソッドを使って塗りつぶしで円を描き、その周りをCircleWu() メソッドを使ってなぞったとしても、スムージングは部分的に失われる。

すべてのスムージング・メソッドは線の不透明度に大きく依存します。不透明度が50%程度になると、すべてがアンエイリアスになり、アーティファクトが発生します。