新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1518 1...151115121513151415151516151715181519152015211522152315241525...1953 新评论 jarikn 2021.06.28 15:24 #15171 我发现了一个新的指标,我想把它放在我的EA上,但问题是它在每根蜡烛上都会打开交易。你能告诉我如何使它只在箭头信号时打开吗? //------------------------------------------------------------------ #property copyright "Hill" #property link "Romio.com" //------------------------------------------------------------------ #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 Orange #property indicator_color2 DarkGray #property indicator_color3 Orange #property indicator_color4 LimeGreen #property indicator_style2 STYLE_DOT #property indicator_style3 STYLE_DOT #property indicator_style4 STYLE_DOT // // // // // // extern int RsiLength = 4; extern int RsiPrice = PRICE_CLOSE; extern int HalfLength = 5; extern int DevPeriod = 100; extern int Sise = 10; extern double Deviations = 1.0; extern bool UseAlert = true; extern bool DrawArrows = true; color ColorDn = Crimson; color ColorUp = DodgerBlue; int CodDn = 222; int CodUp = 221; string Font = "Verdana"; // ti init() if(ObjectFind("100s")<0)GetText(3,"100s","BuySell Pro",LawnGreen,5,5,7); string PrefixArrow = "ArrowsHill"; double buffer1[]; double buffer2[]; double buffer3[]; double buffer4[]; double up[]; double dn[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { HalfLength=MathMax(HalfLength,1); SetIndexBuffer(0,buffer1); SetIndexBuffer(1,buffer2); SetIndexBuffer(2,buffer3); SetIndexBuffer(3,buffer4); SetIndexStyle(4,DRAW_ARROW,0,2,Blue); SetIndexArrow(4,233); SetIndexBuffer(4,up); SetIndexStyle(5,DRAW_ARROW,0,2,Red); SetIndexArrow(5,234); SetIndexBuffer(5,dn); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { DellObj(PrefixArrow); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,j,k,counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit=MathMin(Bars-1,Bars-counted_bars+HalfLength); static datetime timeLastAlert = NULL; for(i=limit; i>=0; i--) buffer1[i] = iRSI(NULL,0,RsiLength,RsiPrice,i); for(i=limit; i>=0; i--) { double dev = iStdDevOnArray(buffer1,0,DevPeriod,0,MODE_SMA,i); double sum = (HalfLength+1)*buffer1[i]; double sumw = (HalfLength+1); for(j=1, k=HalfLength; j<=HalfLength; j++, k--) { sum += k*buffer1[i+j]; sumw += k; if(j<=i) { sum += k*buffer1[i-j]; sumw += k; } } buffer2[i] = sum/sumw; buffer3[i] = buffer2[i]+dev*Deviations; buffer4[i] = buffer2[i]-dev*Deviations; if(buffer1[i] >= buffer3[i] /*&& buffer1[i+1] < buffer3[i+1]*/) { dn[i] = buffer3[i]; if(DrawArrows) ArrowDn(Time[i], High[i]); if(UseAlert && i == 0 && Time[0] != timeLastAlert) { Alert("Signal DOWN!"); timeLastAlert = Time[0]; } } if(buffer1[i] <= buffer4[i] /*&& buffer1[i+1] > buffer4[i+1] */) { up[i] = buffer4[i]; if(DrawArrows) ArrowUp(Time[i], Low[i]); if(UseAlert && i == 0 && Time[0] != timeLastAlert) { Alert("Signal UP!"); timeLastAlert = Time[0]; } } } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ArrowUp(datetime tim,double pr) { if(ObjectFind(PrefixArrow+"TextUp"+tim)==-1) { if(ObjectCreate(PrefixArrow+"TextUp"+tim,OBJ_TEXT,0,tim,pr-GetDistSdvig())) ObjectSetText(PrefixArrow+"TextUp"+tim,CharToStr(CodUp),Sise,"WingDings",ColorUp); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ArrowDn(datetime tim,double pr) { if(ObjectFind(PrefixArrow+"TextDn"+tim)==-1) { if(ObjectCreate(PrefixArrow+"TextDn"+tim,OBJ_TEXT,0,tim,pr+GetDistSdvig())) ObjectSetText(PrefixArrow+"TextDn"+tim,CharToStr(CodDn),Sise,"WingDings",ColorDn); } } extern double TextSdvigMnoj = 2; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double GetDistSdvig() { return(iATR(NULL, 0, 100, 1) * TextSdvigMnoj); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DellObj(string dell) { string name; for(int i = ObjectsTotal()-1 ; i >=0 ; i--) { name = ObjectName(i); if(StringFind(name, dell) != EMPTY) ObjectDelete(name); } } //+------------------------------------------------------------------+ 附加的文件: Hill_no_repaint4Arrows1.mq4 6 kb Maxim Kuznetsov 2021.06.28 15:39 #15172 jarikn: 我发现了一个新的指标,我想把它放在EA上,但问题是它在每个蜡烛图上都会打开交易。请告知如何使其仅在箭头信号时打开 首先,该指标根本不是新的,而是非常古老。如此老旧,以至于它的接口甚至对于4的人来说都已经过时了。 第二,它重画。准确的半长(默认为5条,在参数中设置)。 最后--如何开启专家顾问的交易取决于90%的EA,也就是说,没有EA代码,一切都没有用。 jarikn 2021.06.28 15:59 #15173 Maxim Kuznetsov:首先,该指标根本不是新的,而是非常古老。如此老旧,以至于它的接口甚至对于4的人来说都已经过时了。第二,它重画。准确的半长(默认为5条,在参数中设置)。最后--如何为专家顾问开立交易,90%取决于EA,也就是说,没有EA代码,一切都没有用。 好的,知道了。例如,如果我们采取2个不同时期的指标,并写下条件*如果1个指标显示向上的箭头和2个指标在一个蜡烛上显示向上的箭头,给我们一个警报并在图表上显示箭头*。你知道怎样才能实现这一点吗?我是否需要添加一个缓冲器,或者我可以创建一个指标 来跟踪两者的信号?如果你不难,请举例说明如何做到这一点 Tretyakov Rostyslav 2021.06.28 16:06 #15174 jarikn:好的,知道了。例如,如果我们采取2个不同时期的指标,并写下以下条件*如果1个指标显示上升箭头,2个指标在一个蜡烛上显示上升箭头,它将产生例如警报和图表上的箭头*。你知道如何实现这一点吗?我是否需要添加一个缓冲器,或者我可以创建一个指标 来跟踪两者的信号?如果你不难,请举例说明如何做到这一点 如果你在你的专家顾问中添加两个不同周期的iCustom指标,你将(可能)会很幸运。 jarikn 2021.06.28 16:35 #15175 MakarFX: 在你的EA中添加两个不同时期的iCustom,(也许)你会很高兴。 好的,我会试一试的,谢谢你。 jarikn 2021.06.28 19:45 #15176 再次问好 ))))谁能告诉我什么是指标? <*.ex*文件已删除 Tretyakov Rostyslav 2021.06.29 08:37 #15177 我想写一个像ZigZag一样的指标,按通过的点数计算。 我怕我自己没有足够的知识来写,所以我决定改写别人的指标。 这就是我得到的东西。 #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_SECTION #property indicator_color1 clrCrimson #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input int Points=50; //--- indicator buffers int Trend=1,InTrend; datetime ttime; double Last_High,Last_Low; double Buffer01[],Buffer02[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { IndicatorBuffers(2); IndicatorDigits(Digits); //--- indicator buffers mapping SetIndexBuffer(0,Buffer01); SetIndexBuffer(1,Buffer02); SetIndexEmptyValue(0,0); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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[]) { //--- int limit=rates_total-prev_calculated-2; if(limit<2) return(0); for(int i=limit; i>=0;i--) { if(time[i]!=ttime) {InTrend=InTrend+1; ttime=time[i];} Buffer01[i]=0; Buffer02[i]= open[i]; if(Buffer02[i+1]>Last_High && Trend==1) InTrend=1; if(Buffer02[i+1]<Last_Low && Trend==0) InTrend=1; if(Buffer02[i+1]>Last_High) Last_High=Buffer02[i+1]; if(Buffer02[i+1]<Last_Low ) Last_Low =Buffer02[i+1]; //---- if(Trend==1 && Buffer02[i+1]<Last_High-Points*Point && InTrend>1) { Trend=0; if(i+InTrend<ArraySize(Buffer01)) Buffer01[i+InTrend]=Buffer02[i+InTrend]; Last_High=Buffer02[i+1]; Last_Low=Buffer02[i+1]; InTrend=1; } if(Trend==0 && Buffer02[i+1]>Last_Low+Points*Point && InTrend>1) { Trend=1; if(i+InTrend<ArraySize(Buffer01)) Buffer01[i+InTrend]=Buffer02[i+InTrend]; Last_Low=Buffer02[i+1]; Last_High=Buffer02[i+1]; InTrend=1; } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ 它似乎在正确地绘制,但却滞后了。 价格已经超过50点,但指标没有画出来。 请帮助我解决这个问题。 Igor Makanu 2021.06.29 10:23 #15178 MakarFX:请帮助解决这个问题。 这里是mt5的点对点ZZ。 https://www.mql5.com/ru/forum/318267#comment_12508440 如果你改变主计算周期中的编号,在MT4中应该是可行的。 Tretyakov Rostyslav 2021.06.29 10:46 #15179 Igor Makanu:这里是ZZ发布的关于mt5的逐点说明https://www.mql5.com/ru/forum/318267#comment_12508440如果你对主要的计算周期进行重新编号,它应该在MT4中工作。 伊戈尔,谢谢你,但是MT4不能正常工作。 请告诉我什么必须是正确的。 jarikn 2021.06.29 13:29 #15180 我遇到过这样的问题。我把MT2指标放在MT4上。它应该读取指标缓冲区,当箭头出现时,它应该自动打开二元期权的交易。但问题是,我让它在每个新的蜡烛上打开交易,而且只向上。谁知道出了什么问题? 附加的文件: Screenshot_8.png 121 kb 123.mq4 5 kb 1...151115121513151415151516151715181519152015211522152315241525...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我发现了一个新的指标,我想把它放在EA上,但问题是它在每个蜡烛图上都会打开交易。请告知如何使其仅在箭头信号时打开
首先,该指标根本不是新的,而是非常古老。如此老旧,以至于它的接口甚至对于4的人来说都已经过时了。
第二,它重画。准确的半长(默认为5条,在参数中设置)。
最后--如何开启专家顾问的交易取决于90%的EA,也就是说,没有EA代码,一切都没有用。
首先,该指标根本不是新的,而是非常古老。如此老旧,以至于它的接口甚至对于4的人来说都已经过时了。
第二,它重画。准确的半长(默认为5条,在参数中设置)。
最后--如何为专家顾问开立交易,90%取决于EA,也就是说,没有EA代码,一切都没有用。
好的,知道了。例如,如果我们采取2个不同时期的指标,并写下条件*如果1个指标显示向上的箭头和2个指标在一个蜡烛上显示向上的箭头,给我们一个警报并在图表上显示箭头*。你知道怎样才能实现这一点吗?我是否需要添加一个缓冲器,或者我可以创建一个指标 来跟踪两者的信号?如果你不难,请举例说明如何做到这一点
好的,知道了。例如,如果我们采取2个不同时期的指标,并写下以下条件*如果1个指标显示上升箭头,2个指标在一个蜡烛上显示上升箭头,它将产生例如警报和图表上的箭头*。你知道如何实现这一点吗?我是否需要添加一个缓冲器,或者我可以创建一个指标 来跟踪两者的信号?如果你不难,请举例说明如何做到这一点
在你的EA中添加两个不同时期的iCustom,(也许)你会很高兴。
好的,我会试一试的,谢谢你。
再次问好 ))))谁能告诉我什么是指标?
<*.ex*文件已删除
我想写一个像ZigZag一样的指标,按通过的点数计算。
我怕我自己没有足够的知识来写,所以我决定改写别人的指标。
这就是我得到的东西。
它似乎在正确地绘制,但却滞后了。
价格已经超过50点,但指标没有画出来。
请帮助我解决这个问题。
请帮助解决这个问题。
这里是mt5的点对点ZZ。
https://www.mql5.com/ru/forum/318267#comment_12508440
如果你改变主计算周期中的编号,在MT4中应该是可行的。
这里是ZZ发布的关于mt5的逐点说明
https://www.mql5.com/ru/forum/318267#comment_12508440
如果你对主要的计算周期进行重新编号,它应该在MT4中工作。
伊戈尔,谢谢你,但是MT4不能正常工作。
请告诉我什么必须是正确的。