MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1274

 
alex_xss:

1) 個人的には賛成です。もし私なら、単純にオフにし、コードに含めることを禁止します。しかし、あなたはできない)

2) ありがとうございます、しかし、私はそこに解決策を見つけることができませんでした(それはOBJ_VLINEオブジェクトを介して どこでも解決され、それは私に合わない)、私は自分自身の方法を掘っています。

一部の人が好きなCanvasでグリッドを作ることができます。キャンバスをチャートの背景(または前面)として置き、その上に描画し、幾何学・価格・時間の関係を追います。

ちょっと面倒ですが、センスと時間をかければ美しく仕上がるかもしれません。

削除済み  
Maxim Kuznetsov:

は、あるCanvasのお気に入りにグリッドを作成することが可能です。キャンバスをチャートの背景(または前面)としてレイアウトし、その上に描画して幾何学/価格/時間の関係を監視します。

苦しいけれど、味と時間をかければ美しくなるかもしれない。

kanvasの簡単な例を書いてください。

私は何も知らないので、グラフの大きさの長方形とその上に縦線があればいいのです

 
alex_xss:

kanvasの簡単な例を書いてください。

私は何も知らない、ただチャートサイズの長方形とその上に縦線が必要なだけだ。

ニコライ・セムコ(@Nikolai Semko)を呼ぶべきでしょう。彼はkanvasの方がずっと得意です。そして、彼が旅をしている間、彼のプロフィールを見てください......キャンバスにたくさんのものが描かれています。

 
alex_xss:

kanvasの簡単な例を書いてください。

私は何も知らないので、グラフの大きさの長方形とその上に縦線があればいいのです

面白いですね。このような不具合はMT4のみで、縦線のみ です。

ただ、なぜ干渉するのかが謎です。今までの生活では気づかなかっただろう。

問題をより詳細に定式化し、最適な解決方法を理解することができますか。グラフィックオブジェクトとキャンバスの相互作用にはニュアンスがあります。
ところで、それを解決する方法として考えられるのは、経営者を変えることです。))
もし、その人が色替えを松葉杖だと思っているのなら、なおさらカンバスはその人にとって松葉杖でしょう。
あなたのマネージャーが架空の人物、あるいはアレゴリーであることは認めますが。))

 

alex_xss
:

kanvasの簡単な例を書いてください。

私は何も知らないので、グラフの大きさの長方形とその上に縦線が欲しいだけなんです。


パフォーマンスの面では最適とは言えませんが(再描画が必要以上に頻繁に発生する - コードを複雑にするために怠けているだけ)、動作はしています。

画面サイズ(ウィンドウではなく、例えば1920x1080)のキャンバスを実装し、再描画を一切行わないようにすることが可能です。ただ、メモリが8Mbyte必要になります。
ちなみに、グリッドの色を変えても効果はありません。

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/en/code/23840

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_CHART_CHANGE) DrawGrid();
  }
//+------------------------------------------------------------------+
void DrawGrid() {
  Canvas.Erase(0);
  if (ChartGetInteger(0,CHART_SHOW_GRID)) {
      Canvas.SetBack(false);
      ChartSetInteger(0,CHART_FOREGROUND,0,true);
      uint clr = ColorToARGB((color)ChartGetInteger(0,CHART_COLOR_GRID),255);
      for (int y=0;y<W.Height;y++)
      if (y%6<2 || y%6>4) {
         for (int x=32;x<W.Width;x+=32)
         Canvas.m_pixels[y*W.Width+x]=clr;
      } 
  }
  Canvas.Update();
}
ファイル:
 
配列(文字列)をアルファベット順にソート する関数をお持ちの方はいらっしゃいませんか?
 
Aleksey Vyazmikin:
もしかしたら、配列(文字列)をアルファベット順にソート する関数をお持ちの方がいらっしゃるかもしれませんね。

私も持っている、むかしのサーベルが書いた

//===============================================================================================
//--------------------------------- Сортирует строковой массив ---------------------------------+
//===============================================================================================
void ArraySortStr(string &Str[]) {
 string Min;
 int jMin, Size = ArraySize(Str);
  for(int i=0; i<Size-1;i++) {
   Min = Str[i];
   jMin = i;
    for(int j=i+1; j<Size; j++)
     if(Str[j] < Min) {
       Min = Str[j];
       jMin = j;
      }
     if(jMin > i) {
       Str[jMin] = Str[i];
       Str[i] = Min;
     }
   }
 }
 
Vitaly Muzichenko:

私も持っています、むかしのセイバーは書いています。

ありがとうございます。

削除済み  
Maxim Kuznetsov:

縦線のみ です。

なぜそれで使えなくなるのか、謎です。私なら絶対に気づかない。

問題をより詳細に定式化し、最適な解決方法を理解することができますか。グラフィックオブジェクトとキャンバスの相互作用にはニュアンスがあります。
ところで、それを解決する方法として考えられるのは、経営者を変えることです。))
もし、その人が色替えを松葉杖だと思っているのなら、なおさらカンバスはその人にとって松葉杖でしょう。
あなたのマネージャーが架空の人物、あるいはアレゴリーであることは認めますが。))

そう、1週間近くかけて作ったクールなギミックだ。)

まあ......なんで障害になるんだろう。三角形を使って描画するインジケーターがあります。すべてが美しく仕上がり、色も拾われ、そして今、そんなバグに気がついたのです。
このインジケータは個人で使用するものではありませんので、このバグのまま公開することはナンセンスです。私は初心者なのでかなり複雑なのですが、描画全体を変更するか、バグを修正するかのどちらかをしなければなりません。

カラーグリッドを変更しても、あなたが気づいたように、私はこれに自分自身を来ている)最初は、いくつかの色の組み合わせは、助けるように見えた

グリッドの色を変えることは、(それが役立つとしても)ユーザーが影響を与える可能性があるので、受け入れがたい松葉杖です。
ユーザーに対してこの機能をブロックするオプションも適切ではなく、その理由は明らかだと思います)))

タスク:グリッドが有効な場合、ユーザーに常に 同じ色で見えるようにすること。MT4で垂直グリッド+フィルドオブジェクトのバグを考慮しています。他 に何を追加したらいいのかわからない)

基本的には上に書いたようなバリクで問題ないです。磨けるんです。あなたは金の亡者だ!!!感謝の言葉もありません。5ドルあげるから、手伝ってよ。

ちょっと質問なんですが、
弱いPCではどの程度のラグが発生するのでしょうか?抽象的な質問ですが、ご教授いただければ幸いです。
8MBのメモリを食うだけ」→RAMのことではないのでしょうか?))だとしたら、8MBなんて
iCanvasは必須、普通のじゃダメなのか?他のユーザーが「このファイルはここ、このファイルはここ」と言っているに過ぎない。彼らは頭が悪いから、どこに置けばいいかわからないだろう)

 
Good day

アドバイスをお願いします - 質問に答えてください

メタトレーダーにBulls.mq4というインジケータが あります。
なぜ追加のバッファが必要なのか、なぜ中間変数を使用できない のか
dd = iMA(NULL,0,InpBullsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
ExtBullsBuffer[i]=dd;

問題は ExtBullsBuffer[i] が iMA 関数の計算結果を格納するだけのために使用されており、次の行でこの 値が 指標バッファ 要素に割り当てられるという点です。ExtBullsBufferは他では使用されていません。なぜここでこの中間バッファExtBullsBufferが必要かというと、図
***で緑色で示したように、単なる変数ではなく、この中間 バッファが必要なのです。