Mt4结束支持。 - 页 26 1...192021222324252627282930313233...47 新评论 Реter Konow 2017.09.10 21:42 #251 任何喜欢我的解决方案的人,请当面写信给我。我将完善它并把它送出去。祝大家好运。 Artyom Trishkin 2017.09.10 21:45 #252 Реter Konow:符号循环,当报价到达时检查新的条形图 开放,等等,都可以很容易地添加到我的解决方案中。而OOP与此有什么关系?你选择了一个错误的例子。闲暇时想想别的事情。而你就这样做了。鉴于人物是可以改变的--毕竟在阅读人物时是这样的。 Реter Konow 2017.09.10 21:55 #253 Artyom Trishkin:做到这一点。鉴于人物可以改变--因为当你读到人物是真的。那么,如果我这样做呢?那你怎么说呢?我告诉你一个秘密:对我来说,这种任务完全是小孩子的游戏。你真的认为我做不到吗?这只是天真的想法... Artyom Trishkin 2017.09.10 22:00 #254 Реter Konow: 那么,如果我这样做呢?那你怎么说呢?我告诉你一个秘密:对我来说,这种任务完全是小孩子的游戏。你真的认为我做不到吗?这只是天真的想法...好吧,就这么做吧。 Sofiia Butenko 2017.09.10 22:02 #255 Vitaly Muzichenko:Artyom没有回答这个问题,但问题是这样的:用程序化的风格来写,这样才能正确地工作没有问题。对冲以节省字符串操作的比较,好吧,如果客户是个疯子,会同时在所有符号上交易。但似乎没有其他地方可以保存操作和内存--一切都很简单。void OnTimer(){ Alert(Fn_new_bar("EURUSD", PERIOD_D1)); }//+------------------------------------------------------------------+uint Sp_Adler32(string line){ ulong s1 = 1; ulong s2 = 0; uint buflength=StringLen(line); uchar char_array[]; ArrayResize(char_array, buflength,0); StringToCharArray(line, char_array, 0, -1, CP_ACP); for (uint n=0; n<buflength; n++){ s1 = (s1 + char_array[n]) % 65521; s2 = (s2 + s1) % 65521;} return ((s2 << 16) + s1);}//+------------------------------------------------------------------+bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf){ static datetime st_time[]; static uint st_id[]; //---- set datetime new_time = iTime(symb, tf, 0); if(new_time==0) return(false); uint new_id = Sp_Adler32(StringConcatenate(symb,EnumToString(tf))); datetime old_time = 0; uint old_id = 0; //---- find int size = ArraySize(st_time); for(int i=0; i<size; i++){ if(st_id[i]!=new_id) continue; old_id = st_id [i]; old_time = st_time[i]; break;} //----add new element if(old_time==0){ ArrayResize(st_time, size+1); st_time[size]=new_time; ArrayResize(st_id, size+1); st_id [size]=new_id; } //---- return(old_time>0 && old_time<new_time);} Mt4 End of support. 将Windows本地时间与MT5服务器同步 Help add sound wav Sofiia Butenko 2017.09.10 22:06 #256 Реter Konow:我对稍有延迟表示歉意。 下面是该函数的第一个版本。你可以进一步完善和发展它。如果你注意到一个错误,请提出你的意见。问题的关键不在于OOP,而在于你的代码是线性的,尽管你可能永远也学不会... Artyom Trishkin 2017.09.10 22:09 #257 Galina Bobro:没问题。对冲以节省字符串操作的比较,好吧,如果客户是个疯子,会同时对所有字符进行交易。但似乎没有其他地方可以保存操作和内存 - 一切都是最低限度。 关于交易、自动交易系统和策略测试的论坛 Mt4结束支持。 Artyom Trishkin, 2017.09.10 23:21 我有一个目标,他的程序式代码的最终结果是在这样一个循环中工作。 ENUM_TIMEFRAMES array_timeframes[]= { PERIOD_M1,PERIOD_M2,PERIOD_M3,PERIOD_M4,PERIOD_M5,PERIOD_M6,PERIOD_M10,PERIOD_M12,PERIOD_M15,PERIOD_M30, PERIOD_H1,PERIOD_H2,PERIOD_H3,PERIOD_H4,PERIOD_H6,PERIOD_H8,PERIOD_H12,PERIOD_D1,PERIOD_W1,PERIOD_MN1 }; int total=SymbolsTotal(true), total_tf=ArraySize(array_timeframes); for(int i=0; i<total; i++){ string symbol_name=SymbolName(i,true); for(int j=0; j<total_tf; j++){ if(IsNewBar(symbol_name,array_timeframes[j])){ Print("Новый бар на ",symbol_name," ",EnumToString(array_timeframes[j])); } } } Sofiia Butenko 2017.09.10 22:14 #258 Artyom Trishkin: 因习惯而命名错误 -bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf) 是正确的函数。 Реter Konow 2017.09.10 22:15 #259 Artyom Trishkin:那么,现在就去做吧。好的。你的解决方案只对蜱虫有效。我的是定时器。你认为我用酒吧出场的计时方法是否有缺点。好的。让它像这样。我将在设置一个新的条形标志之前,增加一个检查报价是否到达的功能。我将为该函数添加另一个参数--一个符号。用户将选择他们想要接收新的酒吧事件的符号,并将其发送到该函数。该函数将检查该符号的最后一次引用的时间。然后我们将比较酒吧正式出现的时间和报价的时间,并设置事件标志。我只是刚刚开始研究这个问题,但我没有看到任何困难。 Реter Konow 2017.09.10 22:18 #260 Galina Bobro: 这不是关于OOP,而是关于你的代码是线性的,尽管你可能永远不会知道... 线性、非线性...你是不是又在谈论编程中的歌剧? 1...192021222324252627282930313233...47 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
任何喜欢我的解决方案的人,请当面写信给我。我将完善它并把它送出去。
祝大家好运。
符号循环,当报价到达时检查新的条形图 开放,等等,都可以很容易地添加到我的解决方案中。而OOP与此有什么关系?
你选择了一个错误的例子。闲暇时想想别的事情。
而你就这样做了。鉴于人物是可以改变的--毕竟在阅读人物时是这样的。
做到这一点。鉴于人物可以改变--因为当你读到人物是真的。
那么,如果我这样做呢?那你怎么说呢?我告诉你一个秘密:对我来说,这种任务完全是小孩子的游戏。你真的认为我做不到吗?这只是天真的想法...
那么,如果我这样做呢?那你怎么说呢?我告诉你一个秘密:对我来说,这种任务完全是小孩子的游戏。你真的认为我做不到吗?这只是天真的想法...
好吧,就这么做吧。
Artyom没有回答这个问题,但问题是这样的:用程序化的风格来写,这样才能正确地工作
没有问题。对冲以节省字符串操作的比较,好吧,如果客户是个疯子,会同时在所有符号上交易。
但似乎没有其他地方可以保存操作和内存--一切都很简单。
void OnTimer(){
Alert(Fn_new_bar("EURUSD", PERIOD_D1)); }
//+------------------------------------------------------------------+
uint Sp_Adler32(string line){
ulong s1 = 1;
ulong s2 = 0;
uint buflength=StringLen(line);
uchar char_array[];
ArrayResize(char_array, buflength,0);
StringToCharArray(line, char_array, 0, -1, CP_ACP);
for (uint n=0; n<buflength; n++){
s1 = (s1 + char_array[n]) % 65521;
s2 = (s2 + s1) % 65521;}
return ((s2 << 16) + s1);}
//+------------------------------------------------------------------+
bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf){
static datetime st_time[];
static uint st_id[];
//---- set
datetime new_time = iTime(symb, tf, 0); if(new_time==0) return(false);
uint new_id = Sp_Adler32(StringConcatenate(symb,EnumToString(tf)));
datetime old_time = 0;
uint old_id = 0;
//---- find
int size = ArraySize(st_time);
for(int i=0; i<size; i++){
if(st_id[i]!=new_id) continue;
old_id = st_id [i];
old_time = st_time[i];
break;}
//----add new element
if(old_time==0){
ArrayResize(st_time, size+1); st_time[size]=new_time;
ArrayResize(st_id, size+1); st_id [size]=new_id; }
//----
return(old_time>0 && old_time<new_time);}
我对稍有延迟表示歉意。
下面是该函数的第一个版本。你可以进一步完善和发展它。如果你注意到一个错误,请提出你的意见。
问题的关键不在于OOP,而在于你的代码是线性的,尽管你可能永远也学不会...
没问题。对冲以节省字符串操作的比较,好吧,如果客户是个疯子,会同时对所有字符进行交易。
但似乎没有其他地方可以保存操作和内存 - 一切都是最低限度。
关于交易、自动交易系统和策略测试的论坛
Mt4结束支持。
Artyom Trishkin, 2017.09.10 23:21
我有一个目标,他的程序式代码的最终结果是在这样一个循环中工作。
因习惯而命名错误 -bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf) 是正确的函数。
那么,现在就去做吧。
好的。你的解决方案只对蜱虫有效。我的是定时器。你认为我用酒吧出场的计时方法是否有缺点。好的。让它像这样。我将在设置一个新的条形标志之前,增加一个检查报价是否到达的功能。我将为该函数添加另一个参数--一个符号。用户将选择他们想要接收新的酒吧事件的符号,并将其发送到该函数。该函数将检查该符号的最后一次引用的时间。然后我们将比较酒吧正式出现的时间和报价的时间,并设置事件标志。
我只是刚刚开始研究这个问题,但我没有看到任何困难。
这不是关于OOP,而是关于你的代码是线性的,尽管你可能永远不会知道...