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

 
Roman Konopelko:

こんにちは!

CustomPlotFunction モードは同様の目的でライブラリに実装されています。

P.S. これについての詳細はフォーラム あります。


ありがとうございます。)
削除済み  

X軸ラベルを時系列としてプロットする方法はありますか?

 
Pablo Rego:

X軸ラベルを時系列としてプロットする方法はありますか?

#include <Graphics/Graphic.mqh>
double arrX[];
double arrY[];
//---
string TimeFormat(double x,void*data)
  {
   return(TimeToString((datetime)arrX[ArraySize(arrX)-(int)x-1]));
  }
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   CopyRates(Symbol(),Period(),0,100,rates);
   ArraySetAsSeries(rates,true);
   int size=ArraySize(rates);
   ArrayResize(arrX,size);
   ArrayResize(arrY,size);
   for(int i=0; i<size;++i)
     {
      arrX[i]=(double)rates[i].time;
      arrY[i]=rates[i].close;
     }
   CGraphic graphic;
   graphic.Create(0,"Rates",0,30,30,780,380);
   CCurve *curve=graphic.CurveAdd(arrY,CURVE_LINES,"Close");
   CAxis *xAxis=graphic.XAxis();
   xAxis.AutoScale(false);
   xAxis.Type(AXIS_TYPE_CUSTOM);
   xAxis.ValuesFunctionFormat(TimeFormat);
   xAxis.DefaultStep(20.0);
   curve.Visible(true);
   graphic.Redraw();
   graphic.Update();
  }

結果


 

X軸のラベルを逆順(リバース)に描くことは可能ですか?

例えば、時系列インデックスを見るために。

 
Dennis Kirichenko:

X軸のラベルを逆順(リバース)に描くことは可能ですか?

例えば、時系列インデックスを見るために。

1つの関数を呼び出すだけで、それ自体がすべてを行うような手っ取り早い解決策はありません。 ように、値を描画する独自の関数を作成し、ValuesFunctionFormatメソッドに渡す必要があります。
 

mql4に似たようなライブラリはありますか?

 

背景の透明度を設定することが可能かどうか、ベースクラスか何かで微調整できるかどうか教えてください。

 
Maxim Dmitrievsky:

背景の透明度を設定することが可能かどうか教えてください。


CGraphic クラスを修正 すれば可能です(直接編集するのは間違いです。)

//+------------------------------------------------------------------+
//| グラフィックの作成|
//+------------------------------------------------------------------+
bool CGraphic::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
//--- オブジェクト名のチェック 
   if(ObjectFind(chart,name)>=0)
      return(false);
//--- 予備計算
   int width=x2-x1;
   int height=y2-y1;
   if(width>0 && height>0)
     {
      m_width=width;
      m_height=height;
      //--- オブジェクトの作成
      if(!ObjectCreate(chart,name,OBJ_BITMAP_LABEL,subwin,0,0))
         return(false);
      //--- オブジェクトをカスタマイズする
      if(!ObjectSetInteger(chart,name,OBJPROP_XDISTANCE,x1) || 
         !ObjectSetInteger(chart,name,OBJPROP_YDISTANCE,y1))
        {
         ObjectDelete(chart,name);
         return(false);
        }
      //--- オブジェクトをアタッチする
      if(!m_canvas.Attach(chart,name,width,height,COLOR_FORMAT_ARGB_NORMALIZE))
        {
         ObjectDelete(chart,name);
         return(false);
        }
     }
//--- 成功
   return(true);
  }

その後、色をコントロールできます:

   CGraphic graphic;
   graphic.Create(0,"Graphic",0,10,10,680,360);

   graphic.BackgroundColor(ColorToARGB(clrRed,150));
   graphic.GridBackgroundColor(ColorToARGB(clrBlue,150));

:

例

 
Vladimir Karputov:

CGraphicクラスを変更する 場合のみ(直接編集するのは間違いです。)

その後、色をコントロールすることができます:

:



ありがとうございます、継承については私が対処します :)

 

Expert Advisor(REASON_PARAMETERS)の入力を変更したときに、チャートがエラーを発生させず、新しいパラメータで更新されるようにするにはどうすればよいですか? tfを切り替えたり、シンボルを変更したりすると、すべてOKですが、パラメータを変更すると、無効なポインタというエラーが発生します。パラメーターを変更すると、ポインターが無効というエラーになります。

分かりにくければ、例を挙げます。)