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

 
Roni Iron:

皆さん、おはようございます。


質問:バーのハイタイムとロータイムを決定する最も簡単な方法は何ですか?

バーの開店・閉店時間は 面白くない。

MT4で。

ありがとうございました。

こりゃまた

QBに投稿しましたhttps://www.mql5.com/ru/code/25897

 

MT4では、定義済みの変数double Askがあり、私の理解では、強制力のないvoid OnTick()内部で

RereshRatesの値は変更されない。

MT5では、AskはMqlTick last_tick; SymbolInfoTick(_Symbol,last_tick); double Ask=last_tick.ask; その値は常に新しいティックで更新されます。

問題は、Ask + Xの値でライン座標を設定する必要があるのですが、MT5では値が変わるとラインの座標が変わってしまうので、それができないことです

Ask=last_tick.ask。アドバイスをお願いします。

Документация по MQL5: Предопределенные переменные
Документация по MQL5: Предопределенные переменные
  • www.mql5.com
Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
 
WinProject:

MT4では、定義済みの変数double Askがあり、私の理解では、強制力のないvoid OnTick()内部で

RereshRatesの値は変更されない。

MT5では、AskはMqlTick last_tick; SymbolInfoTick(_Symbol,last_tick); double Ask=last_tick.ask; その値は常に新しいティックで更新されます。

問題は、Ask + Xの値でライン座標を設定する必要があるのですが、MT5では値が変わるとラインの座標が変わってしまうので、それができないことです

Ask=last_tick.ask。アドバイスをお願いします。

どうして変わらなかったのか?刻々と変化していく。でも、ループの中では、変わらなかった。もしかしたら、少し混乱してしまったかもしれませんね?

しかし、mql5では、ループの前に現在の価格を決定することができ、ループを終了するまで変更されることはありません。

 
皆さん、間抜けな質問で申し訳ありません。mt4ターミナルでは、手数料やスワップなどを含めた利益が表示されます。mt5では "naked "と表示されます。見当たらないのですが、mt5でmt4と同じように表示させる設定はありますか?それとも、それができていないのでしょうか?
 

OBJ_TEXTに 書き込まれたテキストの幅をピクセル単位で測定する方法はありますか?

 
Alexey Viktorov:

どうして変わらなかったのか?刻々と変化していく。でも、サイクルでは、そう、そうではありませんでした。もしかして、ちょっと混乱しちゃった?

しかし、mql5では、ループの前に現在の価格を決定することができ、ループを終了するまで変更されることはありません。

はい、ありがとうございます。私の思い込みは間違っていることがわかりましたが、私の質問は少し違います。MT4とMT 5で同じコードがあります。

 void OnTick()
              {
              string S=Symbol();
              double LastAsk= SymbolInfoDouble(S,SYMBOL_ASK);
              ObjectCreate(0,"hLine",OBJ_HLINE,0,0,LastAsk +500*Point());
              }

MT4では 作成されたラインは作成された価格で固定されますが、MT5では新しいティックで毎回ラインがLastAskの新しい値で引かれ、その位置が価格と共に変化することが質問です。MT5で回避するにはどうしたらいいですか?

 
WinProject:

はい、ありがとうございます。私の思い込みは間違っていましたが、質問の内容は少し違います。MT4とMT 5で同じ コードがあります。

MT4では 作成された線は作成された価格で静止していますが、MT5では新しいティックの度に線は新しいLastAskの値で引かれ、その位置は価格と共に変化してしまうことが質問です。MT5で回避するにはどうしたらいいですか?

名前から回線の空き状況を確認する。なければ作ればいい。これらは一般的に基本的なことです。
 
Artyom Trishkin:
名前を指定して行を確認する。線がない場合は、線を作成します。これが一般的な基本です。

ありがとうございます。このようなプログラミングロジックの基礎知識は、他に何を読めばいいのでしょうか?初歩的なことのようで、ゼロから考えるのは大変なんです。

 if(ObjectFind(0,"hLine"))

条件を追加したら、すべてうまくいきました。

 
WinProject:

ありがとうございます。このようなプログラミングロジックの基礎知識は、他に何を読めばいいのでしょうか?初歩的なことのようで、ゼロから考えるのは大変なんです。

条件を追加したら、すべてうまくいきました。

突然(いつものように)ObjectGetInteger(0,objectName,OBJPROP_TYPE)が高速に動作するようになりました。

ObjectFind は同期コマンドです。つまり、チャート・オブジェクトの完全な更新(および利用可能性)を待ちます。

オブジェクトがどのウィンドウで作成されたか、オブジェクトが存在する可能性が高いこと、そしてそれが正しいタイプであることをすでに知っているのです。
最悪の事態は、ユーザーがオブジェクトを削除したり、プロパティを変更したりすることです

 
WinProject:

はい、ありがとうございます。私の思い込みは間違っていましたが、質問の内容は少し違います。MT4とMT 5で同じ コードがあります。

MT4では 作成された線は作成された価格で静止していますが、MT5では新しいティックの度に線は新しいLastAskの値で引かれ、その位置は価格と共に変化してしまうことが質問です。MT5で回避するにはどうしたらいいですか?

覚えていない、確認しないといけないが、確認したくない。多分、mql4では既にあるオブジェクトの名前を付けて作成しようとするとエラーが返ってくるだけでしたが、mql5では座標が異なる場合はエラーではなくパラメータの修正になります。

アルテムが言ったように、オブジェクトの存在を確認します。

int  ObjectFind( 
   long    chart_id,     // идентификатор графика 
   string  name          // имя объекта 
   );