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

 

ヒントを教えてください。

mql4では、始値のMAに基づくインジケータがあり、それは現在のバーでの再描画を回避することができました。すべてを鮮明に映し出す。

mql5では、同じインジケータがint startを介して動作せず、int OnCalculateを介して動作します。再計算と再描画を繰り返し、一瞬画像が消え、2つのMA間の距離が設定されているものの、2つのMAが交差する境界の状況により異なる値を持つ場合があります。0番目の値ではなく、1番目の値をMAバッファから取ろうと思いましたがうまくいかず、また新しいバーが来る前にこの関数をスキップしようと思いましたがこれもうまくいきませんでした(何も表示させないようにしたこともあります)。この状況を打破するにはどうしたらいいのか。

チャートを右から左へ反転させると、インジケーターも常に再計算されてちらつく。

 
Sergey Dymov #:

ヒントを教えてください。

mql4では、始値のMAに基づくインジケータがあり、現在のバーでの再定格を回避することができました。すべてを鮮明に映し出す。

mql5では、同じインジケータがint startを介して動作せず、int OnCalculateを介して動作します。再計算、再描画を繰り返し、一瞬画像が消え、2つのMAが交差する境目のため値が異なる場合があり、2つのMA間の距離を設定しているにもかかわらず、うまくいきません。0番目の値ではなく、1番目の値をMAバッファから取ろうと思いましたがうまくいかず、また、新しいバーが来る前にこの関数をスキップしようと思いましたがこれもうまくいきませんでした(何も表示させないようにしたこともあります)。この状況を打破するにはどうしたらいいのか。

チャートを右から左へ反転させると、インジケーターも常に再計算されてちらつく。

ここで質問 してください。彼らは必ず助けてくれます。

 
Sergey Dymov #:

ヒントを教えてください。

mql4では、始値のためのMAに基づいたインジケータがあり、それは現在のバーでの再描画を回避することができました。すべてを鮮明に映し出す。

mql5では、同じインジケータがint startを介して動作せず、int OnCalculateを介して動作します。再計算と再描画を繰り返し、一瞬画像が消え、2つのMA間の距離が設定されているものの、2つのMAが交差する境界の状況により異なる値を持つ場合があります。0番目の値ではなく、1番目の値をMAバッファから取ろうと思いましたがうまくいかず、また新しいバーが来る前にこの関数をスキップしようと思いましたがこれもうまくいきませんでした(何も表示させないようにしたこともあります)。この状況を打破するにはどうしたらいいのか。

チャートを右から左へ反転させると、インジケーターも常に再計算されてちらつく。

コードを貼る
 

グラフィックにそのようなものがある

間違っていなければ、どの色でもやっているのを見たことがあります。

どうやって?

 
Vitaly Muzichenko #:

グラフィックにそのようなものがある

間違っていなければ、どの色でもやっているのを見たことがあります。

どうやって?

F8と。


しかし、これはグリッドの色でもあるので、チェックをはずします。


 
Artyom Trishkin #:

F8と

しかし、これはグリッドの色でもあるので、チェックをはずします。

了解です、ありがとうございます

グリッドは必要だ、分離されていないのが残念だ。

P.S. プログラム的に右端から15小節ずらすにはどうしたらいいのでしょうか?
 
Vitaly Muzichenko #:

了解です、ありがとうございます

グリッドは必要だ、分割されていないのが残念だ。

P.S. プログラムで右端から15小節ずらすには?

これはどうでしょう?

//+------------------------------------------------------------------+
//| Функция включает/выключает режим отображения ценового графика с  |
//| отступом от правого края.                                        |
//+------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим значение свойства
   if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Примеры работы с графиком - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

これはどうでしょう?

はい、でもそれはボタンを押してはいけないということです。

マーカーを手でドラッグすると、右端に到達する前にかなり休んでしまう。これは端末の制限として根本的に間違っている

ボタンを押すと、一番外側のバーが右端にくっつきそうになり、チャートの情報価値が失われてしまうのです。

この操作は、新しいバーが現れるたびに行うのではなく、バーが15~20本に達したところでボタンを押すとよいでしょう。圧縮は1回のみ。

追伸:なぜこのような制約があり、これほどまでに空白があるのか?


 
Vitaly Muzichenko #:

はい、でも、ボタンを押しまくるんです。

マーカーを手でドラッグすると、右端に到達する前に止まってしまうことがよくあるのですが、これは端末の制限として根本的に間違っています

ボタンを押すと、一番外側のバーが右端にくっつきそうになり、チャートの情報価値が失われてしまうのです。

この操作は、新しいバーが現れるたびに行うのではなく、バーが15~20本に達したところでボタンを押すとよいでしょう。圧縮は1回のみ。

比率

//+------------------------------------------------------------------+ 
//| Функция устанавливает размер отступа нулевого бара от правого    | 
//| края графика в процентах (от 10% до 50%). Для включения режима   | 
//| отступа, нужно установить значение свойства CHART_SHIFT равным   | 
//| true.                                                            | 
//+------------------------------------------------------------------+ 
bool ChartShiftSizeSet(const double value,const long chart_ID=0) 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- установим значение свойства 
   if(!ChartSetDouble(chart_ID,CHART_SHIFT_SIZE,value)) 
     { 
      //--- выведем сообщение об ошибке в журнал "Эксперты" 
      Print(__FUNCTION__+", Error Code = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  }
 
Alekseu Fedotov #:

比率

動作しますが、手で設定できるインデントで、最低でも

ビジュアル的には、最低でも10%程度です。なぜ5%ではダメなのか