新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 579 1...572573574575576577578579580581582583584585586...1953 新评论 Artyom Trishkin 2018.07.05 18:51 #5781 PolarSeaman: 仍然没有弄清楚如何计算当前周期的条形图关闭前的秒数。我需要你的帮助。我给你的功能。 PolarSeaman 2018.07.05 19:14 #5782 Artyom Trishkin:我给你的功能。是的,但上面的代码,在评论中,每秒钟平稳地倒数,功能是生硬的。在M1,60个小节中,有3或4次没有警报。 #property strict #define MILLISEC_TIMER_INTERVAL 500 //--- input parameters input int s_clo=2; input int Period_=13, Shift_=0; input ENUM_MA_METHOD Method_MA_=MODE_SMA; input ENUM_APPLIED_PRICE Apply_to_=PRICE_CLOSE; double ma_fast; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(!EventSetMillisecondTimer(MILLISEC_TIMER_INTERVAL)) { Print("Не могу запустить таймер"); return INIT_FAILED; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTimer() { RefreshRates(); //--- ma_fast=0; if(SecondsToCandleClose(Symbol(),0)>=s_clo)return; { ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0); Alert("ma_fast",ma_fast,"время откр. бара ",Time[0]);} } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ long SecondsToCandleClose(const string symbol_name,const ENUM_TIMEFRAMES timeframe) { datetime array[]; return(CopyTime(symbol_name,timeframe,0,1,array)==1 ? PeriodSeconds(timeframe)+array[0]-TimeCurrent() : 0); } //+------------------------------------------------------------------+ double ma(int period,int ma_shift,ENUM_MA_METHOD ma_method,ENUM_APPLIED_PRICE ap_price,int shift) { return(ND(iMA(NULL,(int)0,period,ma_shift,ma_method,ap_price,shift))); } // double ND(double A) { return(NormalizeDouble(A,Digits)); } // Artyom Trishkin 2018.07.05 19:56 #5783 PolarSeaman:是的,但是上面的代码,在评论中,每秒钟平稳地倒数,而函数是生硬的。在M1中,60个小节中有3、4次没有警报。 这是因为该函数使用了TimeCurrent()--最后一次报价的到达时间。你需要用本地的TimeLocal()替换这个时间,并计算出偏移量(已经告诉过你了)。 PolarSeaman 2018.07.05 20:31 #5784 Artyom Trishkin:你需要用本地的TimeLocal()替换这个时间,并计算出偏移量(你已经被告知过这个问题)。我不知道怎么做才对,所以我找到了一个代码,可以倒计时关闭H1的时间,没有刻度,并试图使用它,在你的函数中 替换了TimeCurrent(),但它不想让我看到关闭的秒数。 #property strict #property indicator_chart_window //--- input parameters #define MILLISEC_TIMER_INTERVAL 500 int timeOffset; datetime ServerLocalOffset; datetime prevTime,myTime,localtime; bool newBar = false; datetime sec; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping EventSetMillisecondTimer(MILLISEC_TIMER_INTERVAL); datetime srvtime,tmpOffset; RefreshRates(); srvtime = TimeCurrent(); // Modified localtime = TimeLocal()+TimeGMTOffset(); if(TimeHour(srvtime)>TimeHour(localtime)){ // Server Time is still ahead of us int newOffset = TimeHour(srvtime)-TimeHour(localtime); ServerLocalOffset = (newOffset*60*60); }else if(TimeHour(srvtime)<TimeHour(localtime)){ // Server Time is Behind us int newOffset = TimeHour(localtime)-TimeHour(srvtime); ServerLocalOffset = (newOffset*60*60); }else{ // No modification required ServerLocalOffset = srvtime; } localtime = TimeLocal()-ServerLocalOffset; tmpOffset = TimeSeconds(srvtime) - TimeSeconds(localtime); if(tmpOffset < 30 && tmpOffset >= 0){ timeOffset = TimeSeconds(srvtime) - TimeSeconds(localtime); } return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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 value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- datetime localtime; localtime = TimeLocal()+(TimeGMTOffset()+(60*60)); sec=Time[0]+Period()*60-localtime-timeOffset;// if(SecondsToCandleClose(Symbol(),0)<=2){Alert("время откр. бара ",Time[0]);} Comment(" Time 1: ",TimeToStr(sec,TIME_SECONDS )," Time 2: ",TimeToStr(SecondsToCandleClose(Symbol(),0),TIME_SECONDS )); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ long SecondsToCandleClose(const string symbol_name,const ENUM_TIMEFRAMES timeframe) { datetime array[]; return(CopyTime(symbol_name,timeframe,0,1,array)==1 ? PeriodSeconds(timeframe)+array[0]-sec : 0); } //// Tigerfreerun 2018.07.06 11:03 #5785 请告知如何在代码中实现这一想法。如果认股权证是开放的,而现在没有=警报。像这样的事情可能...double x=0。如果(OrdersTotal>0) {x=1;}如果(OrdersTotal <x) {警报;}x=0; Alekseu Fedotov 2018.07.06 11:09 #5786 Tigerfreerun: 请告诉我如何在代码中实现这个想法。如果认股证已经打开,现在没有认股证=警报。这种风格的东西可能...double x=0。如果(OrdersTotal >0) {x=1;}如果(OrdersTotal <x) {警报;}x=0; If(OrdersTotal==0) {Alert ;} Tigerfreerun 2018.07.06 11:32 #5787 Alekseu Fedotov: If (OrdersTotal ==0) {Alert ;} 那么这个信号就是循环的。而且,即使没有开出订单。这个想法是:1)订单是开放的 2)现在没有订单 3)1个警报 Vladimir Tkach 2018.07.06 12:30 #5788 伙计们! 图上有很多物体。 但当你访问它时。 Comment(ObjectsTotal()); 它说只有三个。 为什么它不计算箭头? Ihor Herasko 2018.07.06 12:55 #5789 Tigerfreerun: 请告诉我如何在代码中实现这个想法。如果认股权证是开放的,而现在没有=警报。像这样的事情可能...double x=0。如果(OrdersTotal >0) {x=1;}如果(OrdersTotal <x) {警报;}x=0;像这样做。该代码几乎是正确的。那里只缺一个字。 static double x=0; If (OrdersTotal >0) {x=1;} If (OrdersTotal <x) {Алерт ; x= 0;} Galim_V 2018.07.06 16:05 #5790 Vladimir Tkach:伙计们! 图上有很多物体。 但当你访问它时。 它说只有三个。 为什么它不计算箭头? 也许是因为它们是 Wingdings字体 的符号 1...572573574575576577578579580581582583584585586...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
仍然没有弄清楚如何计算当前周期的条形图关闭前的秒数。我需要你的帮助。
我给你的功能。
我给你的功能。
是的,但上面的代码,在评论中,每秒钟平稳地倒数,功能是生硬的。在M1,60个小节中,有3或4次没有警报。
是的,但是上面的代码,在评论中,每秒钟平稳地倒数,而函数是生硬的。在M1中,60个小节中有3、4次没有警报。
这是因为该函数使用了TimeCurrent()--最后一次报价的到达时间。你需要用本地的TimeLocal()替换这个时间,并计算出偏移量(已经告诉过你了)。
你需要用本地的TimeLocal()替换这个时间,并计算出偏移量(你已经被告知过这个问题)。
我不知道怎么做才对,所以我找到了一个代码,可以倒计时关闭H1的时间,没有刻度,并试图使用它,在你的函数中 替换了TimeCurrent(),但它不想让我看到关闭的秒数。
请告诉我如何在代码中实现这个想法。
If (OrdersTotal ==0) {Alert ;}
伙计们!
图上有很多物体。
但当你访问它时。
它说只有三个。
为什么它不计算箭头?
请告诉我如何在代码中实现这个想法。
像这样做。该代码几乎是正确的。那里只缺一个字。
伙计们!
图上有很多物体。
但当你访问它时。
它说只有三个。
为什么它不计算箭头?