エラー、バグ、質問 - ページ 973

 
voix_kas:

...

なんて言ったらいいんだろう。1枚のBitmapは、26枚の通常のラベルよりも一桁遅く動作する(!)。OnTick()で、作業用キャンバス(配列 uint 250*410 )にパターンをコピーする操作、つまり1つのキャンバスに対する操作を除外しようとしました。リアルタイムにしか感じられない利得がある。テスターでも それは同じで、絶対的な生産性の低下が見られます。COLOR_FORMAT_ARGB_NORMALIZE モードは、他のモードでは美観が 損なわれるため、使用しました。前置きが長くなりましたが、1つのキャンバスで作業する場合、前のオーバーレイ(透明な部分)の重なりを追跡する必要があるため、難しいです。

...

テスターの可視化モードでOBJ_BITMAP_LABELの ようなオブジェクトが表示されていますか?
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64:

ありがとうございます、それは分かっています。vdv2001は 何かしらの問題があるようです。

//---

バグがあることを発見するために、彼がどうやるのか見たかった。


続いて、ヘルプからもう一つ引用します。

チャートマウススクロール

マウスの左ボタンでチャートを水平方向にスクロールさせます。CHART_SCALEFIX、CHART_SCALEFIX_11、CHART_SCALE_PT_PER_BAR の3つのプロパティのいずれかが true に設定されている場合、垂直スクロールも利用可能です。

ブール

 
ああ、なるほど、そういうことか。))
vdv2001:

はい、オブジェクトは選択されていますが、マウスで移動することはできません(ターミナル4のように)。

また、Expert Advisorで作成されたすべてのオブジェクトを動かすには、イベントによって処理する必要があります。

MT5では、選択したオブジェクトの アンカーポイントにマウスカーソルを正確に配置する必要があります。MT4では、自動的に行われます。個人的には、イベントによる選択なしでオブジェクトを移動させる方が好きです。上記のRoshは、チャートのスクロールを有効/無効にするプロパティを示したので、移動するオブジェクトに干渉することはありません。
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 
tol64:
ああ、なるほど、そういうことか。)) MT5では、オブジェクトが選択さ れたときに、マウスカーソルをアンカーポイントに正確に置かなければならないのです。MT4では、自動で行われます。個人的には、イベントによる選択なしでオブジェクトを移動させる方が好きです。上記のRoshは、チャートのスクロールを有効/無効にするプロパティを示したので、移動するオブジェクトに干渉することはありません。

グラフを最大にし、選択したオブジェクトのアンカーポイントにマウスを設定し、マウスの左ボタンを床に押し、最大の努力を適用し、...

物体はその場に留まった。

この作業を繰り返すのは難しいことではなく、オブジェクトCChartObjectTrendを作成し、そのプロパティを設定して動かしてみてください。成功したわけではありません。

CHART_MOUSE_SCROLL 試してみたところ、チャートの移動は止まりますが、オブジェクトは移動していません。

追伸

イベントによるオブジェクトの移動を処理する場合は正しいのですが(古い座標を知っているので).イベントを通してやっていきます。ありがとうございました、質問は終了しました。

 
vdv2001:

グラフを最大にし、選択したオブジェクトのアンカーポイントにマウスをセットし、マウスの左ボタンを床に「押し付け」、最大限の力をかけ、そして......。

物体はその場に留まった。

この作業を繰り返すのは難しくありません。CChartObjectTrendオブジェクトを作成し、そのプロパティを設定し、動かしてみてください。私には効果がありませんでした。

...

どちらかというと、そういうものです。

void OnStart()
  {
   double low[];
   datetime time[];
   string name_object="Trend_Test";
//---
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
//---
   CopyLow(_Symbol,_Period,0,50,low);
   CopyTime(_Symbol,_Period,0,50,time);
//---
   if(ObjectCreate(0,name_object,OBJ_TREND,0,time[0],low[0],time[49],low[49]))
      ObjectSetInteger(0,name_object,OBJPROP_SELECTABLE,true);
  }
 

voix_kasの 偉業を再現できた人はいるのだろうか?

voix_kas:
...
Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

...


テスターでOBJ_BITMAP_LABEL タイプのオブジェクトを可視化モードで表示させていますか?

//---

それとも誤植?)))

 
ビットマップの性能計算については、コードを見ることをお勧めします。もしかしたら、余分な再描画処理があるのかもしれません。
 
tol64:

どちらかというと、そういうものです。

なるほど、なぜ動かないのかがわかりました。オブジェクトのプロパティOBJPROP_TIMEFRAMESを設定すると、オブジェクトが動か なくなるんですね。

例えば、分足チャートには、以下のプロパティを設定します。

obj.Timeframes(OBJ_PERIOD_M1);

と表示され、オブジェクトが動かなくなるのは、不具合のようです。

チャート周期をM2に切り替えた後、M1に切り替えたら全て正常に動作するようになりました。

 

voix_kas:

なんて言ったらいいんだろう。1枚のBitmapは、26枚の通常のラベルよりも一桁遅く動作する(!)。OnTick()で、作業用キャンバス(配列 uint 250*410 )にパターンをコピーする操作、つまり1つのキャンバスに対する操作を除外しようとしました。リアルタイムにしか感じられない利得がある。テスターでもそれは同じで、絶対的な生産性の低下が見られます。COLOR_FORMAT_ARGB_NORMALIZE モードは、他のモードでは美観が 損なわれるため、使用しました。今後のことを考えると、1枚のキャンバスで作業するのは、前のインスクリプション(きれいな部分)の重なりを追跡しなければならないので、難しいということです。


1.速度はどのように計測するのですか?

2.ソースを添付していただけますか(プライベートメッセージまたはCDで)。

 
alexvd:


1.速度はどのように計測するのですか?

2.ソースコードを添付してもらえますか(プライベートメッセージまたはCDで)。

残念ながら、興味がないため、コードは保存していません。一般論として

OnInit()です。

1.チャート上に Bitmap を作成します。

2.テンプレートと作業用の 2つのキャンバスが作成されます(uint 250*410)テンプレートには、統計パラメータ名のラベルが13個貼られています(TextOut)。

OnTick()です。

1.テンプレートは作業用キャンバスにコピーされます

2.統計パラメータの値に対応する13個のラベルが 作業用キャンバスに適用(TextOut) されます。

3.リソースを作成 します。

4. 作業用キャンバスが更新される。

速度が一桁落ちているのは明らかなので、特に計時はしていません。テスターで何だけでなく、リアルタイムで(グラフをスクロールすると、非常に明白なフリーズ/ジャーク)。

OnTick()から1.の点を削除してみました。リアルタイムでは許容範囲になりますが、テスターはほとんど這うことができません。この場合も、作業中のキャンバスの前のマークの位置はクリーニングされていないので、リアルタイムで行うことはできません。

ラベル(TextOut)はアルファチャンネルが ないと美しくないので、ここでもCOLOR_FORMAT_ARGB_NORMALIZE モードを 使用しました。