//+------------------------------------------------------------------+ //| //| 自動売買、DLLの使用が許可されていないと //| //| 指定時刻にスマホに通知するインジケータです //| //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_type1 DRAW_NONE enum ENUM_SEND{ Mail = 0, // メールを送信 Noti = 1 // スマホ版MT5から通知 }; enum ENUM_MODE{ mode01 = 1, // 設定が変更されたときに通知 mode10 = 2, // 指定した時刻に通知 mode11 = 3 // 「設定が変更されたとき」と「指定した時刻に通知」 }; enum ENUM_TIME{ Server = 0, // サーバ時間 Local = 1 // ローカルコンピューター時間 }; input ENUM_SEND send = Noti; // 通知方法 input ENUM_MODE mode = mode11; // 通知のタイミング input ENUM_TIME tmode = Local; // 通知する時刻を(サーバ時間orローカル時間)で表記 input string stime = "9:00"; // 通知する時刻 datetime ntime = 0; int OnInit() { EventSetTimer(2); if(tmode == Server) ntime = 0; else if(tmode == Local) ntime = TimeLocal() - TimeTradeServer(); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } void OnTimer() { static bool a=TerminalInfoInteger(TERMINAL_TRADE_ALLOWED), b=TerminalInfoInteger(TERMINAL_DLLS_ALLOWED); static datetime nowtime = TimeTradeServer(); int f = 0; string message = ""; // 設定が変更されたときに通知 if(mode == mode01 || mode == mode11){ if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false && a == true){ f = 1; message = "自動売買が無効になりました"; a = TerminalInfoInteger(TERMINAL_TRADE_ALLOWED); } else if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == true && a == false){ f = 1; message = "自動売買が有効になりました"; a = TerminalInfoInteger(TERMINAL_TRADE_ALLOWED); } if(TerminalInfoInteger(TERMINAL_DLLS_ALLOWED) == false && b == true){ f = 1; message = "DLLを使用する許可がなくなりました"; b = TerminalInfoInteger(TERMINAL_DLLS_ALLOWED); } else if(TerminalInfoInteger(TERMINAL_DLLS_ALLOWED) == true && b == false){ f = 1; message = "DLLの使用が許可されました"; b = TerminalInfoInteger(TERMINAL_DLLS_ALLOWED); } } // 指定した時刻に通知 if( (mode == mode10 || mode == mode11)&&(nowtime+ntime < StringToTime(stime) && TimeTradeServer()+ntime >= StringToTime(stime)) ){ //f = 1; if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false){ f = 1; message += "(NG)---自動売買が無効です\n"; } else message += "(OK)---自動売買が有効です\n"; if(TerminalInfoInteger(TERMINAL_DLLS_ALLOWED) == false){ f = 1; message += "(NG)---DLLを使用する許可がありません\n"; } else message += "(OK)---DLLを使用することは許可させています\n"; if(AccountInfoInteger(ACCOUNT_TRADE_EXPERT) == false){ f = 1; message += "(NG)---自動売買が許可されていない口座です"; } else message += "(OK)---自動売買が可能な口座です"; } // 通知の送信 if(f >= 1 && send == Noti ){ // if( !SendNotification(message) ) Print("通知の送信に失敗しました。設定を確認してください。",GetLastError()); } else if(f >= 1 && send == Mail ){ if( !SendMail("MT5からの通知",message) ) Print("通知の送信に失敗しました。設定を確認してください。",GetLastError()); } nowtime = TimeTradeServer(); } 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(rates_total); }