ライブラリ: イージーキャンバス - ページ 9 12345678910111213141516...19 新しいコメント jaffer wilson 2020.11.10 08:33 #81 このライブラリはStrategy Testerで 使えますか?Strategy Testerで手動テストを試してみたいのですが。 Nikolai Semko 2020.11.10 15:03 #82 jaffer wilson: このライブラリはStrategy Testerで 使えますか?Strategy Testerで手動テストを試してみたいのですが。 はい、動作します。ただし、テスター内のイベントが正しく動作しないことと、時間密度が高いためキャンバスの計算でテスターに過負荷をかけないようにすることです。 後で少し例を挙げます。 でも今は、こちらをご覧ください。 https://www.mql5.com/en/forum/229521/page4#comment_15005864 Possibilities of Canvas. 2020.01.18 www.mql5.com Demonstration of the possibilities of Сanvas in dynamics. The picture never repeats. This script also works on MQL4, but much slower... Nikolai Semko 2020.11.10 22:51 #83 jaffer wilson: このライブラリはStrategy Testerで 使えますか?Strategy Testerで手動テストを試してみたい。 #property indicator_chart_window #include <Canvas\iCanvas.mqh> //https://www.mql5.com/ja/code/22164 //+------------------------------------------------------------------+ int max=0,min=0; double Max=0,Min=0; int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ int OnCalculate (const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { max= ArrayMaximum(high,rates_total-W.Left_bar,W.BarsInWind); min= ArrayMinimum(low,rates_total-W.Left_bar,W.BarsInWind); Max=high[max]; Min=low[min]; max=rates_total-1-max; min=rates_total-1-min; if (rates_total>0) Draw(); return(rates_total); } //+------------------------------------------------------------------+ void OnChartEvent(const int id, // イベント識別子 const long& lparam, // ロング・タイプのイベント・パラメータ const double& dparam, // double 型のイベント・パラメータ const string& sparam) { // 文字列型のイベント・パラメータ if (id==CHARTEVENT_MOUSE_MOVE) Draw(); } //+------------------------------------------------------------------+ void Draw () { static double pr=0; static uint clr=0; static uint lastCalc=0; uint cur=GetTickCount(); if (cur-lastCalc<30) return; lastCalc=cur; double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); if (Canvas.tester) ChartChanged(); // テスターモードの場合、チャートのパラメータを更新する if (pr<Ask) clr=0x800000FF; // 赤 if (pr>Ask) clr=0x80FF0000; // ブルー Canvas.Erase(clr); Canvas.FillCircle((int)Canvas.X(double(max)),(int)Canvas.Y(Max),20,0xAA50FF50); Canvas.FillCircle((int)Canvas.X(double(min)),(int)Canvas.Y(Min),20,0xAAFFFF50); Canvas.CurentFont("Tahoma",50,50,0xFF80FF80,0.4); Canvas.TextPosition(W.MouseX,W.MouseY); Canvas.Comm("Ask = " + DoubleToString(Ask,_Digits)); Canvas.Comm("Bid = " + DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); Canvas.Comm("Spread = " + DoubleToString((Ask-Bid)/_Point,0)); Canvas.Update(); pr=Ask; } //+------------------------------------------------------------------+ 黄色でハイライトされているのは、テスターの負荷を減らすために必要なものです。 緑でハイライトされているのは、座標を正しくレンダリングするために必要なものです。この行を削除してみて、テスターでどうなるかを見てください。 このインジケーターでは、価格変動の方向によって画面の色が変わり、画面上の最低価格と最高価格が強調表示され、マウスポインターの現在位置のBidとAskに関するテキスト情報が表示されます。 しかし残念なことに、Testerではマウスの移動イベントはマウスの左ボタンが押された時のみ実行されます。 これは私のiCanvasクラスだけでなく、Testerのあらゆるグラフィカル出力にも当てはまります。 私だけがそれを実装するもっと簡単な方法を持っています。 そしてGUIコントロールでさえかなりうまく動作します: jaffer wilson 2020.11.11 11:04 #84 お返事とお手本をありがとうございました。 Nikolai Semko 2020.11.11 13:48 #85 jaffer wilson: 回答と例をどうもありがとう。 問題なし Mighty7 2020.11.20 23:24 #86 こんにちは、 とても素晴らしい仕事だ。ありがとうございます。 CanvasBar Sampleをチェックしていただけますか?ご提案いただいた修正でもテスターでは動作しません。 マイティ Nikolai Semko 2020.11.20 23:47 #87 Mighty7:こんにちは、とてもいい仕事だ。ありがとう。CanvasBar Sampleをチェックしていただけますか?ご提案いただいた修正を加えても、テスターでは動作しません。マイティ ChartChangedをCopyRatesの 前に移動してみてください。 Mighty7 2020.11.21 00:25 #88 迅速な返信をありがとう。 Nikolai Semko 2020.11.21 00:51 #89 Mighty7: 迅速な返信をありがとう。 これはOnChartEventからの 呼び出しであり、テスターでは正しく動作していないためです。これを試してみてください。int OnCalculate(const int rates_total,const int prev_calculated,const datetime &time[],const double &open[],const double &high[],const double &low[], const double &close[],const long &tick_volume[],const long &volume[],const int &spread[]) { if(rates_total==prev_calculated) { Bar0.close=close[rates_total-1];Bar0.open=open[rates_total-1]; Bar0.high=high[rates_total-1];Bar0.low=low[rates_total-1]; ShowBars(false); } else if (Canvas.tester) ShowBars(); return(rates_total); } //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_CHART_CHANGE) ShowBars(true); } 将来的には、コードかリンクを添付してください。何しろ、2年近く前に書いたコードの名前を覚えていないのですから。 ファイル: CanvasBar.mq5 7 kb Mighty7 2020.11.21 19:50 #90 「将来的には、コードかリンクを添付してください。何しろ、2年近く前に書いたコードの名前を覚えていないのですから。" わかりました。これで動くようになりました(同期させるためにGetTickCountの 行を削除する必要がありました)。ありがとう。 12345678910111213141516...19 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このライブラリはStrategy Testerで 使えますか?Strategy Testerで手動テストを試してみたいのですが。
このライブラリはStrategy Testerで 使えますか?Strategy Testerで手動テストを試してみたい。
黄色でハイライトされているのは、テスターの負荷を減らすために必要なものです。
緑でハイライトされているのは、座標を正しくレンダリングするために必要なものです。この行を削除してみて、テスターでどうなるかを見てください。
このインジケーターでは、価格変動の方向によって画面の色が変わり、画面上の最低価格と最高価格が強調表示され、マウスポインターの現在位置のBidとAskに関するテキスト情報が表示されます。
しかし残念なことに、Testerではマウスの移動イベントはマウスの左ボタンが押された時のみ実行されます。
これは私のiCanvasクラスだけでなく、Testerのあらゆるグラフィカル出力にも当てはまります。
私だけがそれを実装するもっと簡単な方法を持っています。
そしてGUIコントロールでさえかなりうまく動作します:
回答と例をどうもありがとう。
こんにちは、
とても素晴らしい仕事だ。ありがとうございます。
CanvasBar Sampleをチェックしていただけますか?ご提案いただいた修正でもテスターでは動作しません。
マイティ
こんにちは、
とてもいい仕事だ。ありがとう。
CanvasBar Sampleをチェックしていただけますか?ご提案いただいた修正を加えても、テスターでは動作しません。
マイティ
ChartChangedをCopyRatesの 前に移動してみてください。
迅速な返信をありがとう。
これはOnChartEventからの 呼び出しであり、テスターでは正しく動作していないためです。
これを試してみてください。
将来的には、コードかリンクを添付してください。何しろ、2年近く前に書いたコードの名前を覚えていないのですから。「将来的には、コードかリンクを添付してください。何しろ、2年近く前に書いたコードの名前を覚えていないのですから。"
わかりました。これで動くようになりました(同期させるためにGetTickCountの 行を削除する必要がありました)。ありがとう。