初学者的问题 MQL5 MT5 MetaTrader 5 - 页 931 1...924925926927928929930931932933934935936937938...1503 新评论 Vladimir Karputov 2018.09.21 05:41 #9301 Vitaliy Sendyaev:下午好! 你知道如何为市场建立一个指标吗? 我有一个扩展名为.mq5的文件和一些扩展名为.mqh的包含文件。 据我所知,你不能通过资源把.mqh附加到.mqh文件上,我真的应该把所有东西都手动转换为一个文件吗? 如果有一个新的版本怎么办 :?这很疯狂+))) 谢谢。你把编译好的(.ex5)文件发送给市场。这个文件将已经包含了你所有的包含文件。 EgorKim 2018.09.21 13:15 #9302 Vladimir Karputov:一个反问:"为什么你需要在这里明确地指定一个符号? 如果你使用这个函数,你必须在OnInit中给m_symbol分配一个符号。 在这种情况下,如果你在 "EURUSD.m "符号上运行EA,"EURUSD.m "将自动被设置为m_symbol。问题是,专家顾问在不同的符号上徘徊。而我需要更新欧元兑美元的报价。 我找到了这个解决方案,但我认为它是错误的 void OnTick() { // Обновляем котировки if(!m_symbol.Name("EURUSD.m")) //Обновляем котировки по второму символу RefreshRates(); if(!m_symbol.Name("GBPUSD.m")) //Обновляем котировки по символу где висит советник RefreshRates(); Vladimir Karputov 2018.09.21 13:49 #9303 EgorKim:问题就在这里,EA在不同的符号上徘徊。而我需要更新欧元兑美元的报价。我找到了这个解决方案,但我不认为它是正确的 在InInit中为m_symbol写入EURUSD.m符号。或者告诉我你是做什么的,你是怎么做的--当我想玩猜拳的时候。 Taywin Lannister 2018.09.22 18:49 #9304 乡亲们,请指教!!。 TimeCurrent()函数 如何将小时和分钟的值传递给变量,以便它们能够与这些值一起工作? 例如,我想用字符串(12:15)传递小时和分钟,并将12和15传递给变量。如何做到这一点? Konstantin Nikitin 2018.09.22 19:16 #9305 TaywinLannister:乡亲们,请指教!!。 TimeCurrent()函数 如何将小时和分钟的值传递给变量,以便你可以对这些值进行操作? 例如,我想用字符串(12:15)传递小时和分钟,并将12和15传递给变量。如何做到这一点?时间到结构 Taywin Lannister 2018.09.23 06:58 #9306 Konstantin Nikitin:时间到结构 谢谢你! Yevgen Butov 2018.09.23 12:53 #9307 你好!我把指标 从Metatrader 4转换 到Metatrader 5,但现在它在分钟时间框架上显示箭头的位置与Metatrader 4不同。我是不是在什么地方犯了错误,还是因为一个经纪商的4版和5版终端的分钟图上的报价不同?#property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 #property indicator_color1 clrBlue #property indicator_color2 clrRed #property indicator_width1 1 #property indicator_width2 1 //+------------------------------------------------------------------+ double SignalBufferRed[]; double SignalBufferBlue[]; datetime TimeAlert=0; ENUM_TIMEFRAMES tf0,tf1,tf2,tf3,tf4,tf5; // Было инт int S=0; //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0,SignalBufferBlue); SetIndexBuffer(1,SignalBufferRed); //--- задать рисование линии PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW); //--- задание стиля для рисования линии PlotIndexSetInteger(0,PLOT_ARROW,233); //--- задать рисование линии PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_ARROW); //--- задание стиля для рисования линии PlotIndexSetInteger(1,PLOT_ARROW,234); PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,5); PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-5); //--- установим в качестве пустого значения 0 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); //--- установим в качестве пустого значения 0 PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0); tf0=Period(); tf1=next_period(tf0+1); tf2=next_period(tf1+1); tf3=next_period(tf2+1); tf4=next_period(tf3+1); tf5=next_period(tf4+1); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ 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[]) { int i,limit; limit=rates_total-prev_calculated-1; if(rates_total<1) return(0); double d=(high[1]-low[1]+high[2]-low[2])/2; for(i=limit; i>=0; i--) { if(S<1 && NormalizeDouble(open[i]-close[i],_Digits)<0 && NormalizeDouble(iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))-iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)),_Digits)<0 && NormalizeDouble(iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))-iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)),_Digits)<0 && NormalizeDouble(iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))-iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)),_Digits)<0 && NormalizeDouble(iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))-iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)),_Digits)<0 && NormalizeDouble(iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))-iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)),_Digits)<0) { SignalBufferBlue[i]=low[i]-d; ... S=1; } if(S>-1 && NormalizeDouble(open[i]>close[i],_Digits)>0 && NormalizeDouble(iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))-iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)),_Digits)>0 && NormalizeDouble(iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))-iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)),_Digits)>0 && NormalizeDouble(iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))-iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)),_Digits)>0 && NormalizeDouble(iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))-iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)),_Digits)>0 && NormalizeDouble(iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))-iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)),_Digits)>0) { SignalBufferRed[i]=high[i]+d; ... S=-1; } } return(rates_total); } //+------------------------------------------------------------------+ ENUM_TIMEFRAMES next_period(int per) // Было инт { if(per > PERIOD_W1) return(PERIOD_MN1); // Былы цифры вместо период_ if(per > PERIOD_D1) return(PERIOD_W1); // Былы цифры вместо период_ if(per > PERIOD_H4) return(PERIOD_D1); // Былы цифры вместо период_ if(per > PERIOD_H1) return(PERIOD_H4); // Былы цифры вместо период_ if(per > PERIOD_M30) return(PERIOD_H1); // Былы цифры вместо период_ if(per > PERIOD_M15) return(PERIOD_M30); // Былы цифры вместо период_ if(per > PERIOD_M5) return(PERIOD_M15); // Былы цифры вместо период_ if(per > PERIOD_M1) return(PERIOD_M5); // Былы цифры вместо период_ if(per == PERIOD_M1) return(PERIOD_M1); // Былы цифры вместо период_ return(Period()); } //+------------------------------------------------------------------+ Vladimir Karputov 2018.09.23 12:55 #9308 Yevgen Butov: 嗨!我把指标 从metatrader 4转换 到metatrader 5,但现在它在一分钟周期内显示箭头的位置与metatrader 4不同。我是不是在什么地方犯了错误,还是因为一个经纪商的4版和5版终端的分钟图上的报价不同?在MQL5和MQL4指标中做一个简单的测试 - 打印条形时间#0。 Print("Bar #0: ",time[0]); 这将有助于了解什么是什么。 Yevgen Butov 2018.09.23 14:30 #9309 Vladimir Karputov:在MQL5和MQL4指标中做一个简单的测试 - 打印条形时间#0。这将有助于了解什么是什么。在OnCalculate 中添加了这个文本,现在酒吧的时间每分钟都在变化,但现在根本没有箭头。可能的错误是什么? ArraySetAsSeries(time,true); ArraySetAsSeries(open,true); ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); ArraySetAsSeries(close,true); Vladimir Karputov 2018.09.23 15:02 #9310 Yevgen Butov:在OnCalculate中添加了这个文本,现在酒吧的时间每分钟都在变化,但现在根本没有箭头。可能的错误是什么?你没有搞清楚。比较打印出来的数值。比较酒吧时间#0和酒吧时间#rates_total-1。比较那里和那里... 1...924925926927928929930931932933934935936937938...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好!
你知道如何为市场建立一个指标吗?
我有一个扩展名为.mq5的文件和一些扩展名为.mqh的包含文件。
据我所知,你不能通过资源把.mqh附加到.mqh文件上,我真的应该把所有东西都手动转换为一个文件吗?
如果有一个新的版本怎么办 :?这很疯狂+)))
谢谢。
你把编译好的(.ex5)文件发送给市场。这个文件将已经包含了你所有的包含文件。
一个反问:"为什么你需要在这里明确地指定一个符号?
如果你使用这个函数,你必须在OnInit中给m_symbol分配一个符号。
在这种情况下,如果你在 "EURUSD.m "符号上运行EA,"EURUSD.m "将自动被设置为m_symbol。
问题是,专家顾问在不同的符号上徘徊。而我需要更新欧元兑美元的报价。
我找到了这个解决方案,但我认为它是错误的
问题就在这里,EA在不同的符号上徘徊。而我需要更新欧元兑美元的报价。
我找到了这个解决方案,但我不认为它是正确的
乡亲们,请指教!!。
TimeCurrent()函数 如何将小时和分钟的值传递给变量,以便它们能够与这些值一起工作?
例如,我想用字符串(12:15)传递小时和分钟,并将12和15传递给变量。如何做到这一点?乡亲们,请指教!!。
TimeCurrent()函数 如何将小时和分钟的值传递给变量,以便你可以对这些值进行操作?
例如,我想用字符串(12:15)传递小时和分钟,并将12和15传递给变量。如何做到这一点?时间到结构
时间到结构
嗨!我把指标 从metatrader 4转换 到metatrader 5,但现在它在一分钟周期内显示箭头的位置与metatrader 4不同。我是不是在什么地方犯了错误,还是因为一个经纪商的4版和5版终端的分钟图上的报价不同?
在MQL5和MQL4指标中做一个简单的测试 - 打印条形时间#0。
这将有助于了解什么是什么。
在MQL5和MQL4指标中做一个简单的测试 - 打印条形时间#0。
这将有助于了解什么是什么。
在OnCalculate 中添加了这个文本,现在酒吧的时间每分钟都在变化,但现在根本没有箭头。可能的错误是什么?
在OnCalculate中添加了这个文本,现在酒吧的时间每分钟都在变化,但现在根本没有箭头。可能的错误是什么?
你没有搞清楚。比较打印出来的数值。比较酒吧时间#0和酒吧时间#rates_total-1。比较那里和那里...