マーケットクローズ - ページ 12 1...56789101112 新しいコメント Vinicius Pereira De Oliveira 2022.05.01 14:27 #111 Sergey Gritsay #:もう少しコードをいじってみると、こんな感じになりました。 //+------------------------------------------------------------------+//| test06.mq5 |//| Sergey Gritsay |//| https://www.mql5.com/ru/users/sergey1294 |//+------------------------------------------------------------------+#property copyright "Sergey Gritsay"#property link "https://www.mql5.com/ru/users/sergey1294"#property version "1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- create timer EventSetMillisecondTimer(1);//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer EventKillTimer(); }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() {//--- }//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+void OnTimer() {//--- string text=NULL; int symbol_total=SymbolsTotal(true); for(int i=0; i<symbol_total; i++) { string symbol=SymbolName(i,true); if(CheckExchTime(symbol,TimeCurrent()))text+="\n"+symbol+": Торговля разрешена"; else text+="\n"+symbol+": Торговля запрещена"; } Comment(text); }//+------------------------------------------------------------------+bool CheckExchTime(string symbol,datetime times) { MqlDateTime last_time; MqlDateTime start_time; MqlDateTime end_time; datetime trade_time_start=0; datetime trade_time_end=0; datetime start=0; datetime end=0; ResetLastError(); datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME); if(expiration!=0 && times>=expiration)return(false); TimeToStruct(times,last_time); if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end)) { TimeToStruct(trade_time_start,start_time); TimeToStruct(trade_time_end,end_time); start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00"); end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00"); if(start==end)return(true); if(times>start && times<end)return(true); }//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError()); if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end)) { TimeToStruct(trade_time_start,start_time); TimeToStruct(trade_time_end,end_time); start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00"); end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00"); if(start==end)return(true); if(times>start && times<end)return(true); }//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError()); return(false); }//+------------------------------------------------------------------+ 結果 ここでは、あなたの機能で解決しました。 ありがとうございます!!! //+--------------------------------------------------------------------------------------------------------------------+ //| This function checks if the symbol is trading at the current time | //+--------------------------------------------------------------------------------------------------------------------+ bool CheckTradingTime(string symbol) { //--- Local variables datetime times = TimeCurrent(), trade_time_start = 0, trade_time_end = 0, start = 0, end = 0; MqlDateTime last_time, start_time, end_time; //--- Check symbol trade end date datetime expiration = (datetime)SymbolInfoInteger(symbol, SYMBOL_EXPIRATION_TIME); if(expiration != 0 && times >= expiration) { return(false); } TimeToStruct(times, last_time); //--- Session index: 0 if(SymbolInfoSessionTrade(symbol, (ENUM_DAY_OF_WEEK)last_time.day_of_week, 0, trade_time_start, trade_time_end)) { TimeToStruct(trade_time_start, start_time); TimeToStruct(trade_time_end, end_time); start = StringToTime((string)last_time.year + "." + (string)last_time.mon + "." + (string)last_time.day + " " + (string)start_time.hour + ":" + (string)start_time.min + ":00"); end = StringToTime((string)last_time.year + "." + (string)last_time.mon + "." + (string)last_time.day + " " + (string)end_time.hour + ":" + (string)end_time.min + ":00"); if(start == end) { return(true); } if(times >= start && times < end) { return(true); } } //--- Session index: 1 if(SymbolInfoSessionTrade(symbol, (ENUM_DAY_OF_WEEK)last_time.day_of_week, 1, trade_time_start, trade_time_end)) { TimeToStruct(trade_time_start, start_time); TimeToStruct(trade_time_end, end_time); start = StringToTime((string)last_time.year + "." + (string)last_time.mon + "." + (string)last_time.day + " " + (string)start_time.hour + ":" + (string)start_time.min + ":00"); end = StringToTime((string)last_time.year + "." + (string)last_time.mon + "." + (string)last_time.day + " " + (string)end_time.hour + ":" + (string)end_time.min + ":00"); if(start == end) { return(true); } if(times >= start && times < end) { return(true); } } //--- Check completed return(false); } 1...56789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もう少しコードをいじってみると、こんな感じになりました。
//| test06.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetMillisecondTimer(1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
string text=NULL;
int symbol_total=SymbolsTotal(true);
for(int i=0; i<symbol_total; i++)
{
string symbol=SymbolName(i,true);
if(CheckExchTime(symbol,TimeCurrent()))text+="\n"+symbol+": Торговля разрешена";
else text+="\n"+symbol+": Торговля запрещена";
}
Comment(text);
}
//+------------------------------------------------------------------+
bool CheckExchTime(string symbol,datetime times)
{
MqlDateTime last_time;
MqlDateTime start_time;
MqlDateTime end_time;
datetime trade_time_start=0;
datetime trade_time_end=0;
datetime start=0;
datetime end=0;
ResetLastError();
datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME);
if(expiration!=0 && times>=expiration)return(false);
TimeToStruct(times,last_time);
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(start==end)return(true);
if(times>start && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError());
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(start==end)return(true);
if(times>start && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError());
return(false);
}
//+------------------------------------------------------------------+
結果
ここでは、あなたの機能で解決しました。
ありがとうございます!!!