質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

解決済

MQL4で時間と曜日を表示する方法

mk88mk040101
mk88mk040101

総合スコア9

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

1回答

0評価

0クリップ

240閲覧

投稿2022/04/09 16:25

FXのMT4を使う際にエキスパードアドバイザのビジュアルモードでの検証に時間と曜日を表示する簡単なインジケータが欲しいのですがMQL4の知識がありません。日時と時間は上手く表示させれるのですが、曜日は上手く表示させることが出来ません。
具体的には DayOfWeek によって返された 0~6 の整数値に switch - case 文 を使ってそれぞれの曜日を当てはめているのですが、インジケータをチャートにセットしたタイミングの値しか返されず、日をまたいでも値は更新されません。
OnTimer 関数を使うと良いとご教授を頂いたりしたのですが、どう書けば良いのでしょう?
又、より軽い処理で行う書き方等あれば、教えていただけると助かります。

初歩的な質問かも知れませんが分かる人いればよろしくお願いします。

実現したいこと

MT4のエキスパードアドバイザのビジュアルモードで時間と曜日を表示

該当のソースコード

#property copyright "Copyright"
#property link "http://"

#property indicator_chart_window

extern color BrokerTimeColor=Red;
extern int DistanceFromTopLeft=10;
extern double ZoomLevel=1;

extern color BrokerTimeColor_2=Red;
extern int DistanceFromTopLeft_2=260;
extern double ZoomLevel_2=1;

string WeekName = "";

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()

{
//---- indicators
ObjectCreate("Label_bt", OBJ_LABEL, 0, 0, 0); // Creating obj.
ObjectSet("Label_bt", OBJPROP_CORNER, 0); // Reference corner
ObjectSet("Label_bt", OBJPROP_XDISTANCE, DistanceFromTopLeftZoomLevel);// X coordinate
ObjectSet("Label_bt", OBJPROP_YDISTANCE, 30
ZoomLevel);// Y coordinate

ObjectCreate("Label_bt_2", OBJ_LABEL, 0, 0, 0); // Creating obj.
ObjectSet("Label_bt_2", OBJPROP_CORNER, 0); // Reference corner
ObjectSet("Label_bt_2", OBJPROP_XDISTANCE, DistanceFromTopLeft_2ZoomLevel_2);// X coordinate
ObjectSet("Label_bt_2", OBJPROP_YDISTANCE, 30
ZoomLevel_2);// Y coordinate

switch( DayOfWeek()){
case 0: WeekName = "Sunday"; break;
case 1: WeekName = "Monday"; break;
case 2: WeekName = "Tuesday"; break;
case 3: WeekName = "Wednesday"; break;
case 4: WeekName = "Thursday"; break;
case 5: WeekName = "Fryday"; break;
case 6: WeekName = "Saturday"; break;
default: WeekName = "";
}

//----
return(0);

}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{

//----
ObjectSetText("Label_bt",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),20ZoomLevel,"Arial",BrokerTimeColor);
ObjectSetText("Label_bt_2",WeekName,20
ZoomLevel_2,"Arial",BrokerTimeColor_2);
//----
return(0);
}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Label_bt");
ObjectDelete("Label_bt_2");
//----
return(0);
}
//+------------------------------------------------------------------+

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。