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

 
HUNTERGOOD:

皆さん、こんにちは。プログラマーの皆様、Alert3.Lv1;2;3ごとにサウンドファイルを指定し、指定した別のサウンドをトリガーできる行を挿入するのを手伝ってください。

皆さん、こんにちは。プログラマーの皆様、Alert3.Lv1;2;3にサウンドファイルを指定できる文字列を挿入して、別のサウンドをトリガーできるようにするのを手伝ってください。

皆さん、こんにちは。プログラマーの皆様、Alert3.Lv1;2;3のサウンドファイルに文字列を挿入して別のサウンドをトリガーするのを手伝ってください。

作り始めれば、きっと助けてもらえる。

作り始めれば、助けが来る。

作り始めれば、助けが来る。

 

助けて、スケートが滑らない。

グラフィックパネルの 操作方法を学び、自分の作品を作ろうとしています。

2つの矩形を作成しました。1つはメイン矩形で、パネルのすべてのオブジェクトが移動するときの座標になるようにしました。

ChartEventでこのような条件を作りましたが、メインの矩形を動かすと2~3秒後に2番目の矩形が動くだけです。どうすれば修正できますか?
条件にCHARTEVENT_MOUSE_MOVEも試しましたが、同じ効果です。

input string ds;//Параметры заднего фона панели
input int x_offset_anchor=100;
input int y_offset_anchor=100;
int anchor_width=150;
int anchor_height=20;
int back_height=100;
input color anchor_color=clrBlue, back_color=clrAquamarine, clrBorder=clrAliceBlue;
input string ds2;//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   RectLabelCreate(0,"Back_panel_anchor_point",0,x_offset_anchor,y_offset_anchor,anchor_width,anchor_height,anchor_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,2,false,true,true,0);
   RectLabelCreate(0,"Back_panel",0,x_offset_anchor,y_offset_anchor+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
   
   
   
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason){
   ObjectsDeleteAll(0,-1,-1);
}  
//+------------------------------------------------------------------+
//| 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_OBJECT_DRAG && sparam == "Back_panel_anchor_point")
      {
         ObjectDelete(0,"Back_panel");
         RectLabelCreate(0,"Back_panel",0,ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_XDISTANCE),ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_YDISTANCE)+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
      }   
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
bool RectLabelCreate(const long             chart_ID=0,               // ID графика 
                     const string           name="RectLabel",         // имя метки 
                     const int              sub_window=0,             // номер подокна 
                     const int              x=0,                      // координата по оси X 
                     const int              y=0,                      // координата по оси Y 
                     const int              width=50,                 // ширина 
                     const int              height=18,                // высота 
                     const color            back_clr=C'236,233,216',  // цвет фона 
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // тип границы 
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                     const color            clr=clrRed,               // цвет плоской границы (Flat) 
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // стиль плоской границы 
                     const int              line_width=1,             // толщина плоской границы 
                     const bool             back=false,               // на заднем плане 
                     const bool             selection=false,          // выделить для перемещений 
                     const bool             hidden=true,              // скрыт в списке объектов 
                     const long             z_order=0)                // приоритет на нажатие мышью 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим прямоугольную метку 
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать прямоугольную метку! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- установим координаты метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размеры метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим тип границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину плоской границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- включим (true) или отключим (false) режим перемещения метки мышью 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
   return(true); 
  } 
 
Roman Sharanov:

助けて、スケートが滑らない。

グラフィックパネルの操作方法を学び、自分の作品を作ろうとしています。

2つの矩形を作成しました。1つはメイン矩形で、パネルオブジェクトを移動させるときに、すべての座標の向きを合わせる必要があります。

ChartEventでそのような条件を作ったのですが、メインの矩形を動かすと2~3秒後にしか2番目が動かないのですが、どうしたらいいでしょうか?
CHARTEVENT_MOUSE_MOVE も条件に入れて試しましたが、同じ効果でした。

オブジェクトを作成 し、移動させた後、ChartRedraw()を実行する必要があります。

 
Vladislav Andruschenko:

オブジェクトを 作成して移動させた後、ChartRedraw()を行う必要があります。

そう、その方がいいんです。それで、スムーズに滑らせることは不可能なんですね。

このメイン矩形が選択されている場合のみ再描画するように条件を追加しました。)

 

他のスレッドから再投稿しました。誰かを揺さぶって、助けてもらうかもしれない。


<地元の専門家を見ると、私の同級生(ああ、懐かしい)を思い出します。彼はすべてのルール、すべての公式を知っていましたが、いつどれを適用するか、すぐに考えることができず、ほとんどすべてを経験し、決められた時間には決して ついていけないほどでした。ここでも同じで、いろいろなことを知っていても、解決策が見えず、ただ「勘」で動いてしまうのです。研究所では、数字や数式を使わずに問題を解くこと、そうして初めて、どの数式を適用すればいいのかが明確にわかることを教わりました。MKL4に新しく参加する人は、言葉の微妙なニュアンスを理解していないので、そこに助けが必要です(「教科書を読め」という意味ではありません)。 しかし、ポジションのオープン/クローズの落とし穴は誰も教えてくれ ません。もしかして、知らないのでしょうか?だから、私の質問を聞き流してくれたのです...>。

 
ご挨拶、現在の価格を ファイルに書き込むためのヘルプです。
 
lil_lil:
ご挨拶、現在の価格を ファイルに書き込むためのヘルプです。

こちらを ご覧ください。

 
Artyom Trishkin:

やり始めると、助けが来る。

やり始めると、助けが来る。

やり始めると、助けが来る。

良い意味での皮肉はありがたいです。何から始めればいいのでしょうか?もし私が、どこから始めて、どこで終わるかを知っていたら、おそらくこのフォーラムの経験豊富なシッターさんたちの助けには興味を示さないでしょう。ただ、プログラミングというこの種の活動に精通した人なら、特定の場所に文字列をいくつか置いて、あるサウンドファイルをインジケーターで指示することも問題ないと思うんです。そして、あなたは私に「始めなさい」と言いますが、この偉大で不可解なコーディングの技術を習得するためには、どのような基本から始めればよいのでしょうか。 私が言いたいのは、こういうことです...。

 
HUNTERGOOD:

皮肉はありがたいが、ただ実力はない。何から始めればいいのでしょうか?もし私が、どこから始めて、どこで終わるかを知っていたら、おそらくこのフォーラムの経験豊富なメンバーからのヘルプに興味を示さなかったでしょう。ただ、プログラミングというこの種の活動に精通した人なら、特定の場所に文字列をいくつか置いて、あるサウンドファイルをインジケーターで指示することも問題ないと思うんです。そして、あなたは私に「始めなさい」と言いますが、この偉大で不可解なコーディングの技術を習得するためには、どのような基本から始めればよいのでしょうか。 私が言いたいのは、こういうことです...。

インジケーターが機能せず、アラートのみ、音は1つだけ。
 
Alexey Viktorov:

こちらを ご覧ください。

ありがとうございます、そこの値はファイルからで一回ですが、私のタスクは時間制限付きです。

毎日冒頭の30分間、120秒ごとに現在の価格と時刻を記録します。

以前のエントリーを上書きしないでください。