記事"R で 統計分布を MQL5 に -"についてのディスカッション - ページ 11 1...456789101112131415161718...20 新しいコメント Stanislav Korotky 2016.11.12 16:55 #101 これは5だけですか?4の予定はありますか? fxsaber 2016.11.12 17:08 #102 Stanislav Korotky: これは5だけですか?4の予定ですか?MT4ではすべて動作するはずです。標準のOBJ_BITMAP_LABEL+カスタムリソースです。ちなみにMT4のコンパイラはMT5より賢いです。// エラーの可能性があるため、演算子の優先順位をチェックする。優先順位を明確にするには括弧を使用する Canvas.mqh m_pixels[y*m_width+x]=(r<<16|g<<8|b<<0|255<<24) &0xffffffff; そして、バグが発生しました(MT5では動作しませんが、MT4では動作します)。#property strict#include <Graphics/Graphic.mqh>double Func1(double x) { return MathPow(x,2); }double Func2(double x) { return MathPow(x,3); }double Func3(double x) { return MathPow(x,4); }void SaveObjects( const long chart_id = 0, const int SubWindow = -1 ){ const int Total = ObjectsTotal(chart_id, SubWindow, OBJ_BITMAP_LABEL); for (int i = 0; i < Total; i++) { const string Name = ObjectName(chart_id, i, SubWindow, OBJ_BITMAP_LABEL); string ResourceName; if (ObjectGetString(chart_id, Name, OBJPROP_BMPFILE, 0, ResourceName)) ResourceSave(ResourceName, Name + ".bmp"); // MT5 - false、MT4 - true }}void OnStart() { GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES); SaveObjects(); } Discussion of article "Statistical expert advisor - miscellaneous エキスパートアドバイザー - 雑多な質問 fxsaber 2016.11.14 07:43 #103 訂正してください。//+------------------------------------------------------------------+|画面上のオブジェクトを更新(再描画)|//+------------------------------------------------------------------+void CCanvas::Update(const bool redraw) {//--- チェック if(m_rcname==NULL) return;//--- リソースを更新し、再描画する if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw) ChartRedraw(this.m_chart_id); } fxsaber 2016.11.14 08:02 #104 これは//+------------------------------------------------------------------+//| 呉のポリラインを描く|//+------------------------------------------------------------------+void CCanvas::PolylineWu(int &x[],int &y[],const uint clr,const uint style=UINT_MAX);ゼロによる除算が ある。 fxsaber 2016.11.14 08:19 #105 配列の長さがチャートの幅(ピクセル)より大きいと、がっかりする。 fxsaber 2016.11.14 10:11 #106 CGraphicと CCurveの改善をお願いしたい。これらは弱いクラスです。しかも、必要なものがprivateなので、継承するのはほとんど不可能です。私はそれを理解するのに長い時間がかかったが、適切に動作させるために自分でクラスを書き直さなければならなかった。私はインタラクティブなティック・チャートを作りたかった。#include <Graphics/Graphic.mqh>void GetPrices( double &Bids[], double &Asks[], const int Count = 100 ){ MqlTick Ticks[]; const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count); ArrayResize(Bids, Amount); ArrayResize(Asks, Amount); for (int i = 0; i < Amount; i++) { Bids[i] = Ticks[i].bid; Asks[i] = Ticks[i].ask; }} CGraphic* Graphic = new CGraphic;const string Name = "Graphic" +(string)(GetTickCount() + MathRand());void OnDeinit( const int Reason ){ Graphic.Destroy(); delete Graphic; ChartRedraw();}void GraphTicks( const double &Price1[], const double &Price2[] ){ Graphic.Destroy(); delete Graphic; Graphic = new CGraphic; Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS)); Graphic.AddCurve(Price1, CURVE_LINES); Graphic.AddCurve(Price2, CURVE_LINES); Graphic.PlotAllCurves(); Graphic.Update();}void OnTick(){ double Bids[], Asks[]; GetPrices(Bids, Asks); GraphTicks(Bids, Asks);}DeleteCurve、ChangeCurveなどがない。 記事"MQL5で3Dモデリング"についてのディスカッション Discussion of article "Statistical Discussion of article "3D ivanivan_11 2016.11.14 10:56 #107 fxsaber:CGraphicとCCurveの改善をお願いしたい。これらは弱いクラスです。しかも、必要なものがprivateなので、継承するのはほとんど不可能です。私はそれを理解するのに長い時間がかかったが、適切に動作させるために自分でクラスを書き直さなければならなかった。私はインタラクティブなティック・チャートを作りたかった。#include <Graphics/Graphic.mqh>void GetPrices( double &Bids[], double &Asks[], const int Count = 100 ){ MqlTick Ticks[]; const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count); ArrayResize(Bids, Amount); ArrayResize(Asks, Amount); for (int i = 0; i < Amount; i++) { Bids[i] = Ticks[i].bid; Asks[i] = Ticks[i].ask; }} CGraphic* Graphic = new CGraphic;const string Name = "Graphic" +(string)(GetTickCount() + MathRand());void OnDeinit( const int Reason ){ Graphic.Destroy(); delete Graphic; ChartRedraw();}void GraphTicks( const double &Price1[], const double &Price2[] ){ Graphic.Destroy(); delete Graphic; Graphic = new CGraphic; Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS)); Graphic.AddCurve(Price1, CURVE_LINES); Graphic.AddCurve(Price2, CURVE_LINES); Graphic.PlotAllCurves(); Graphic.Update();}void OnTick(){ double Bids[], Asks[]; GetPrices(Bids, Asks); GraphTicks(Bids, Asks);}DeleteCurveもChangeCurveもない。 このような短いコードでよいのでしょうか? なぜかシートだと思っていました。 別のソフトで視覚化の例を示しましたが、指定した数のバンドとトレードのテープを組み合わせたスタックを視覚化することは可能でしょうか? Renat Fatkhullin 2016.11.14 10:59 #108 Stanislav Korotky: これは5だけですか?4の計画はあるのか?5だけです。4は終わった。 fxsaber 2016.11.14 11:01 #109 ivanivan_11: このような短いコードなのでしょうか? なぜかシートだと思ったのですが。 指定されたバンド数のスタックを、トレードのテープと組み合わせて視覚化することは可能でしょうか? 別のソフトウェアで視覚化の例を示しましたが。インタラクティブに何かを描くことは何年も前から可能です。それを使っているのは、誰も(確かに公には)いない。コードは短くはないが、長く、非常に曲がっている(結果だけでなく、ちらつきもある)。このライブラリは真剣に改善される必要がある。 Renat Fatkhullin 2016.11.14 11:13 #110 そう、ライブラリーはまだテスト段階に過ぎない。これから整理し、継承を許可し、メソッドを追加し、不正なインデックスによるクラッシュを取り除く予定だ。 1...456789101112131415161718...20 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これは5だけですか?4の予定ですか?
MT4ではすべて動作するはずです。標準のOBJ_BITMAP_LABEL+カスタムリソースです。
ちなみにMT4のコンパイラはMT5より賢いです。
m_pixels[y*m_width+x]=(r<<16|g<<8|b<<0|255<<24) &0xffffffff;
そして、バグが発生しました(MT5では動作しませんが、MT4では動作します)。
#include <Graphics/Graphic.mqh>
double Func1(double x) { return MathPow(x,2); }
double Func2(double x) { return MathPow(x,3); }
double Func3(double x) { return MathPow(x,4); }
void SaveObjects( const long chart_id = 0, const int SubWindow = -1 )
{
const int Total = ObjectsTotal(chart_id, SubWindow, OBJ_BITMAP_LABEL);
for (int i = 0; i < Total; i++)
{
const string Name = ObjectName(chart_id, i, SubWindow, OBJ_BITMAP_LABEL);
string ResourceName;
if (ObjectGetString(chart_id, Name, OBJPROP_BMPFILE, 0, ResourceName))
ResourceSave(ResourceName, Name + ".bmp"); // MT5 - false、MT4 - true
}
}
void OnStart()
{
GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);
SaveObjects();
}
|画面上のオブジェクトを更新(再描画)|
//+------------------------------------------------------------------+
void CCanvas::Update(const bool redraw)
{
//--- チェック
if(m_rcname==NULL)
return;
//--- リソースを更新し、再描画する
if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
ChartRedraw(this.m_chart_id);
}
これは
//| 呉のポリラインを描く|
//+------------------------------------------------------------------+
void CCanvas::PolylineWu(int &x[],int &y[],const uint clr,const uint style=UINT_MAX);
ゼロによる除算が ある。
CGraphicと CCurveの改善をお願いしたい。これらは弱いクラスです。しかも、必要なものがprivateなので、継承するのはほとんど不可能です。私はそれを理解するのに長い時間がかかったが、適切に動作させるために自分でクラスを書き直さなければならなかった。
私はインタラクティブなティック・チャートを作りたかった。
void GetPrices( double &Bids[], double &Asks[], const int Count = 100 )
{
MqlTick Ticks[];
const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
ArrayResize(Bids, Amount);
ArrayResize(Asks, Amount);
for (int i = 0; i < Amount; i++)
{
Bids[i] = Ticks[i].bid;
Asks[i] = Ticks[i].ask;
}
}
CGraphic* Graphic = new CGraphic;
const string Name = "Graphic" +(string)(GetTickCount() + MathRand());
void OnDeinit( const int Reason )
{
Graphic.Destroy();
delete Graphic;
ChartRedraw();
}
void GraphTicks( const double &Price1[], const double &Price2[] )
{
Graphic.Destroy();
delete Graphic;
Graphic = new CGraphic;
Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS));
Graphic.AddCurve(Price1, CURVE_LINES);
Graphic.AddCurve(Price2, CURVE_LINES);
Graphic.PlotAllCurves();
Graphic.Update();
}
void OnTick()
{
double Bids[], Asks[];
GetPrices(Bids, Asks);
GraphTicks(Bids, Asks);
}
DeleteCurve、ChangeCurveなどがない。
CGraphicとCCurveの改善をお願いしたい。これらは弱いクラスです。しかも、必要なものがprivateなので、継承するのはほとんど不可能です。私はそれを理解するのに長い時間がかかったが、適切に動作させるために自分でクラスを書き直さなければならなかった。
私はインタラクティブなティック・チャートを作りたかった。
void GetPrices( double &Bids[], double &Asks[], const int Count = 100 )
{
MqlTick Ticks[];
const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
ArrayResize(Bids, Amount);
ArrayResize(Asks, Amount);
for (int i = 0; i < Amount; i++)
{
Bids[i] = Ticks[i].bid;
Asks[i] = Ticks[i].ask;
}
}
CGraphic* Graphic = new CGraphic;
const string Name = "Graphic" +(string)(GetTickCount() + MathRand());
void OnDeinit( const int Reason )
{
Graphic.Destroy();
delete Graphic;
ChartRedraw();
}
void GraphTicks( const double &Price1[], const double &Price2[] )
{
Graphic.Destroy();
delete Graphic;
Graphic = new CGraphic;
Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS));
Graphic.AddCurve(Price1, CURVE_LINES);
Graphic.AddCurve(Price2, CURVE_LINES);
Graphic.PlotAllCurves();
Graphic.Update();
}
void OnTick()
{
double Bids[], Asks[];
GetPrices(Bids, Asks);
GraphTicks(Bids, Asks);
}
DeleteCurveもChangeCurveもない。
これは5だけですか?4の計画はあるのか?
5だけです。
4は終わった。
このような短いコードなのでしょうか? なぜかシートだと思ったのですが。 指定されたバンド数のスタックを、トレードのテープと組み合わせて視覚化することは可能でしょうか? 別のソフトウェアで視覚化の例を示しましたが。
インタラクティブに何かを描くことは何年も前から可能です。それを使っているのは、誰も(確かに公には)いない。
コードは短くはないが、長く、非常に曲がっている(結果だけでなく、ちらつきもある)。このライブラリは真剣に改善される必要がある。
そう、ライブラリーはまだテスト段階に過ぎない。
これから整理し、継承を許可し、メソッドを追加し、不正なインデックスによるクラッシュを取り除く予定だ。