記事"Canvasクラスを使用したカスタム指標の開発"についてのディスカッション - ページ 2 12 新しいコメント Andrey Khatimlianskii 2017.06.19 12:06 #11 fxsaber:それは良いニュースだ!どうする?ティック履歴の 代わりにカスタム時系列?いいえ、ティックヒストリーの横にティックレートのヒストグラムを描きます。そうすることで、パラメータを弄りながら、活動の期間を視覚的に判断し、おそらくいくつかのパターンを見つけることができます。 Alexander Fedosov 2017.06.19 12:07 #12 Dennis Kirichenko:良いトピックだ。著者に感謝し、キャンバスにティックインジケーターを 作るつもりだ......。気づいたことがあります。プライベート・ データ・メンバーm_canvas_nameが あるのに、その値を設定するメソッドName() がパブリックになって いる。カプセル化の原則に違反している。このメソッドをprivateにしよう。たぶんprotected?なぜなら、他のすべてのメソッドはCCanvasBaseを継承しているからだ。そうすると、その中でこのメソッドを使うことができなくなる。私は知らないが、もしかしたら、あなたは一般的な構造で他の何かを変えたのかもしれない。 Denis Kirichenko 2017.06.19 12:13 #13 Alexander Fedosov:もしかしてprotected?なぜなら、他のものはすべてCCanvasBaseを継承しているからだ。そして、それらの中でこのメソッドを使うことはできない。もしかしたら、他の一般的な構造を変更したのかもしれないが。そう、protected だ。それから、ここ:bool CCanvasBase::DeleteCanvas() { return(ObjectDelete(0,m_canvas_name)?true:false); }//+------------------------------------------------------------------+ //| カスタム・インジケータの初期化関数 //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ind.Delete(); ChartRedraw(); }なぜインジケータがこんなに複雑なのか?キャンバスそのものをきれいにする必要がある。DeleteCanvas()メソッドにChartRedraw()を 追加します。 Denis Kirichenko 2017.06.19 12:15 #14 fxsaber:スケッチができたら、スクリーンショットかビデオを送ってください。私自身もそのようなインジケーターを投稿しましたが、人々の手には届きませんでした。もっと良いものは見つかっていませんが。kanvasで他のソリューションを見るのは面白い。FORTSのために作っているんだ。通常のフォーマットで作りましたが、テスターではEA本体から呼び出すと地獄のように動作します。今、すべてのコードを EA に転送するつもりです。 Alexander Fedosov 2017.06.19 12:17 #15 Dennis Kirichenko: そう、その通りだ。ではここで:なぜインジケーターがこんなに複雑なのか?私の考えでは、キャンバス自体をきれいにする必要がある。 DeleteCanvas()メソッドにChartRedraw()を 追加しよう。そうすれば、無駄な行が減る。キャンバスをすっきりさせて、そこに再描画を送ります。 Denis Kirichenko 2017.06.19 16:56 #16 そういうやり方はあまりない://+------------------------------------------------------------------+ //|| グラフィックス・リソースを削除する| //+------------------------------------------------------------------+ bool CCanvasBase::DeleteCanvas() { return(ObjectDelete(0,m_canvas_name)?true:false); }なぜ三項演算子 なのか?- なぜ三項演算子なのか?//+------------------------------------------------------------------+ //|| グラフィックス・リソースを削除する| //+------------------------------------------------------------------+ bool CCanvasBase::DeleteCanvas() { return ObjectDelete(0,m_canvas_name); }私はこの方法でやった://+------------------------------------------------------------------+ //|| グラフィックス・リソースを削除する| //+------------------------------------------------------------------+ bool CCanvasBase::DeleteCanvas() { if(ObjectFind(0,m_canvas_name)>-1) if(ObjectDelete(0,m_canvas_name)) { ChartRedraw(); return true; } return false; }しかし、canvasにはCCanvas::Destroy()を削除する独自のメソッドがある。なぜ別のメソッドを追加する必要があるのだろう? Denis Kirichenko 2017.06.19 17:22 #17 垂直スケーリングに問題があります。Y軸の最大値が97784.0、最小値が97756.0となるようなティックチャートをRTSで作りたいのです。コードではこのようにします://--- チャートを更新する double min_y=NormalizeDouble(min_pr-0.2*diff,_Digits); double max_y=NormalizeDouble(max_pr+0.2*diff,_Digits); ticks_ind.YMin(min_y); ticks_ind.YMax(max_y); ticks_ind.SetArrayValue(prices);このようになります:https://www.mql5.com/ru/charts/7227612/rts-9-17-m1-ao-otkritie-broker最小値は正しく表示されますが、その後、いくつかのウィズが発生します。どうやら、CLineGraph::VerticalScale()メソッドは、私が思っているほど、あるいはもっと悪いことに、微調整されていないようだ。 График RTS-9.17, M1, 2017.06.19 15:22 UTC, АО ''Открытие Брокер'', MetaTrader 5, Real www.mql5.com Символ: RTS-9.17. Период графика: M1. Брокер: АО ''Открытие Брокер''. Торговая платформа: MetaTrader 5. Режим торговли: Real. Дата: 2017.06.19 15:22 UTC. Anatoli Kazharski 2017.06.19 17:26 #18 Dennis Kirichenko:...このクラスを試す >>CGraphic視覚化する!RのplotのアナログとしてのMQL5のグラフィックライブラリCGraphicのテスト - 質問と提案 Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic www.mql5.com Стандартная библиотека / Научные графики / CGraphic - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Denis Kirichenko 2017.06.19 18:01 #19 Anatoli Kazharski:このクラスを試す >>CGraphic視覚化する!Rのplotに類似したMQL5のグラフィック・ライブラリCGraphicのテスト - 質問と提案Anatoly、ありがとう。アイデアが不親切なコードになるのは残念ですが...。 12 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
それは良いニュースだ!どうする?ティック履歴の 代わりにカスタム時系列?
いいえ、ティックヒストリーの横にティックレートのヒストグラムを描きます。
そうすることで、パラメータを弄りながら、活動の期間を視覚的に判断し、おそらくいくつかのパターンを見つけることができます。
良いトピックだ。著者に感謝し、キャンバスにティックインジケーターを 作るつもりだ......。
気づいたことがあります。
プライベート・ データ・メンバーm_canvas_nameが あるのに、その値を設定するメソッドName() がパブリックになって いる。カプセル化の原則に違反している。このメソッドをprivateにしよう。
たぶんprotected?なぜなら、他のすべてのメソッドはCCanvasBaseを継承しているからだ。そうすると、その中でこのメソッドを使うことができなくなる。私は知らないが、もしかしたら、あなたは一般的な構造で他の何かを変えたのかもしれない。
もしかしてprotected?なぜなら、他のものはすべてCCanvasBaseを継承しているからだ。そして、それらの中でこのメソッドを使うことはできない。もしかしたら、他の一般的な構造を変更したのかもしれないが。
そう、protected だ。
それから、ここ:
なぜインジケータがこんなに複雑なのか?キャンバスそのものをきれいにする必要がある。DeleteCanvas()メソッドにChartRedraw()を 追加します。
スケッチができたら、スクリーンショットかビデオを送ってください。私自身もそのようなインジケーターを投稿しましたが、人々の手には届きませんでした。もっと良いものは見つかっていませんが。kanvasで他のソリューションを見るのは面白い。
FORTSのために作っているんだ。通常のフォーマットで作りましたが、テスターではEA本体から呼び出すと地獄のように動作します。今、すべてのコードを EA に転送するつもりです。
そう、その通りだ。
ではここで:
なぜインジケーターがこんなに複雑なのか?私の考えでは、キャンバス自体をきれいにする必要がある。 DeleteCanvas()メソッドにChartRedraw()を 追加しよう。
そうすれば、無駄な行が減る。キャンバスをすっきりさせて、そこに再描画を送ります。
そういうやり方はあまりない:
なぜ三項演算子 なのか?- なぜ三項演算子なのか?
私はこの方法でやった:
しかし、canvasにはCCanvas::Destroy()を削除する独自のメソッドがある。
なぜ別のメソッドを追加する必要があるのだろう?
垂直スケーリングに問題があります。
Y軸の最大値が97784.0、最小値が97756.0となるようなティックチャートをRTSで作りたいのです。
コードではこのようにします:
このようになります:
https://www.mql5.com/ru/charts/7227612/rts-9-17-m1-ao-otkritie-broker
最小値は正しく表示されますが、その後、いくつかのウィズが発生します。
どうやら、CLineGraph::VerticalScale()メソッドは、私が思っているほど、あるいはもっと悪いことに、微調整されていないようだ。
...
このクラスを試す >>CGraphic
視覚化する!RのplotのアナログとしてのMQL5のグラフィックライブラリ
CGraphicのテスト - 質問と提案
このクラスを試す >>CGraphic
視覚化する!Rのplotに類似したMQL5のグラフィック・ライブラリ
CGraphicのテスト - 質問と提案
Anatoly、ありがとう。アイデアが不親切なコードになるのは残念ですが...。