[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 513 1...506507508509510511512513514515516517518519520...537 新评论 Roman Kutemov 2011.07.14 18:12 #5121 关于如何使其在自动优化器中优化开盘价 的专业提示。 https://forum.mql4.com/ru/42125 stariy82 2011.07.14 18:28 #5122 你好,我是一个初学者,想了解如何编写一个EA 请教如何写 "如果之前的平仓订单是买入订单,并且以止损方式平仓,那么卖出0.1手,止损50,获利50"。) Alexandr Shelegeda 2011.07.14 18:49 #5123 专家们!帮助!如何实现这一点? int start() { bool OPEN=false; условие1=х;//вычисление условия1 условие2=y;//вычисление условия2 if(условие1==х)OPEN=true; if(условие2==y&&OPEN==true) OrderSend; 我们需要固定OPEN=true,直到 条件2。在此期间,条件1可能发生变化。 提前感谢! --- 2011.07.14 18:58 #5124 拿出来做个开头 bool OPEN=false; Alexandr Shelegeda 2011.07.14 19:19 #5125 sergeev: 拿出来做个开头 非常感谢您!正如他们所说的,一切都非常简单。而我一整天都在绞尽脑汁。 Anton 2011.07.14 20:19 #5126 请告诉我,在计算只对应于缓冲区上方或下方的条件的第一条杠( Quant_Bars )的数量时,我做错了什么。也就是说,只要指标画在收盘条(1)之前,我就应该用指标在条(不符合条件的除外)下面计算以前的条,反之亦然,运动方向相反。 我的变体给出了错误的值。 谁知道怎么做? #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Green double step = 0.1; double max = 0.2; int n = 1; double S; double barA; double barB; double Bufer[]; int k,k1; //--------------------------------- int init() { SetIndexStyle(0, DRAW_ARROW,EMPTY,0,Green); SetIndexArrow(0, 159); SetIndexBuffer(0, Bufer); return (0); } //--------------------------------- int deinit() { return (0); } //---------------------------------- int start() { k1=k; for(int i=Bars-2; i>=0; i--) { if(i == Bars-2) { Bufer[i] = Low[i] - 10.0 * Point; n = 1; S = step; barA = High[i]; barB = Low[i]; } else { if(Close[i] > barA) { barA = Close[i]; if (n==1 && S <= max - step) { S = S + step; } k=1; } if(Close[i] < barB) { barB = Close[i]; if (n == -1 && S <= max - step) { S = S + step;} k=2; } if (n == 1) { Bufer[i] = Bufer[i + 1] + S * (barA - (Bufer[i + 1]));} else { Bufer[i] = Bufer[i + 1] + S * (barB - (Bufer[i + 1]));} if ((Bufer[i+1] < Close[i + 1] && Bufer[i] > Close[i]) || (Bufer[i + 1] > Close[i + 1] && Bufer[i] < Close[i])) { S = step; if (n == 1) {Bufer[i] = barA;} else {Bufer[i] = barB;} barB = Close[i]; barA = Close[i]; n = -1 * n; } } } //--------------------------Подсчитать бары: int num1 = 2; // бар int counted_bars = IndicatorCounted(); //-----СЕЛЛ if(Bufer[2]<Close[2] && Bufer[1]>Close[1]) { for( i=num1; i<=Bars; i++ ) { if(Bufer[i]<Close[i]) {int Quant_Bars = Quant_Bars+i;} if(Bufer[i]>Close[i] && Bufer[i-1]<Close[i-1]) break; } Alert("Число баров= ",Quant_Bars, " counted_bars= ",counted_bars," бары= ", Bars ); } //-----БАЙ if(Bufer[2]>Close[2] && Bufer[1]<Close[1]) { for( i=num1; i<=Bars; i++ ) { if(Bufer[i]<Close[i]) {Quant_Bars = Quant_Bars+i;} if(Bufer[i]>Close[i] && Bufer[i-1]<Close[i-1]) break; } Alert("Число баров= ",Quant_Bars, " counted_bars= ",counted_bars," бары= ", Bars ); } return (0); } [Deleted] 2011.07.14 22:00 #5127 问题。 为什么,当我的专家顾问整齐地耗尽了整个存款,而且几乎所有的交易都在亏损,然后当我改变信号的 "极性 "时,存款并没有迅速增加,而是已经?)))) 点是一样的,错误只在开单方向,还是有其他原因? Vadim Zhunko 2011.07.14 22:03 #5128 Maxaxa: 问题。 为什么,当我的专家顾问整齐地耗尽了整个存款,而且几乎所有的交易都在亏损,然后当我改变信号的 "极性 "时,存款并没有迅速增加,而是已经?)))) 点是一样的,错误只在开单方向,还是有其他原因? 这是一种交易哲学。 Алексей Тарабанов 2011.07.14 22:25 #5129 Maxaxa: 还有别的东西 Artyom Trishkin 2011.07.15 03:51 #5130 Solree:下午好。有4个订单,2个卖出,2个买入。形象地说,封条是在价格上涨时产生的,在价格下跌时买入。买入时卖出被删除,反之亦然。当一张票被创建时,第一笔卖出或买入被存储在变量pos 中。所有4个都有相同的评论--"Aelit"。因此,有一个代码。顺序是由票据正常选择的,但很多时候评论比较失败。出于兴趣,我做了别的Alert(OrderComment());而日志显示 "Alert: Aelit[sl]"。什么是[sl]?是不是因为所有的订单都有相同的评论?那么,为什么当我发表与其他人不一致的评论时,同样是[sl]的测试?如果你去掉评论检查,OrderModify的日志中就会出现票据错误。起初我以为这个条件是在任何订单创建之前达到的,但不是,当时订单已经存在,在条件触发和不触发的情况下,票据是一样的。我们如何理解它呢?这不是一个奇迹,你的经纪公司对你的评论进行了补充--当达到StopLoss时,订单已经关闭。 你没有正确组织票面上的订单选择。当进行这样的选择时,首先,MODE_TRADES是不必要的--它在OrderSelect()函数中 被省略了。 第二,在成功选择订单后,你没有检查该订单是否根据票据从订单阵列中选择--从市场上的订单或从关闭的订单中选择。 要做到这一点,在订单被选中后,检查它的收盘时间,如果它等于零,那么只有这样的订单才是市场订单,否则 - 它是从已经关闭的订单中选择的(因此在你的评论中增加了这一点)。 1...506507508509510511512513514515516517518519520...537 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于如何使其在自动优化器中优化开盘价 的专业提示。
https://forum.mql4.com/ru/42125
请教如何写 "如果之前的平仓订单是买入订单,并且以止损方式平仓,那么卖出0.1手,止损50,获利50"。)
专家们!帮助!如何实现这一点?
我们需要固定OPEN=true,直到
条件2。在此期间,条件1可能发生变化。
提前感谢!
拿出来做个开头
拿出来做个开头
非常感谢您!正如他们所说的,一切都非常简单。而我一整天都在绞尽脑汁。
请告诉我,在计算只对应于缓冲区上方或下方的条件的第一条杠( Quant_Bars )的数量时,我做错了什么。也就是说,只要指标画在收盘条(1)之前,我就应该用指标在条(不符合条件的除外)下面计算以前的条,反之亦然,运动方向相反。 我的变体给出了错误的值。
谁知道怎么做?
问题。
为什么,当我的专家顾问整齐地耗尽了整个存款,而且几乎所有的交易都在亏损,然后当我改变信号的 "极性 "时,存款并没有迅速增加,而是已经?)))) 点是一样的,错误只在开单方向,还是有其他原因?
问题。
为什么,当我的专家顾问整齐地耗尽了整个存款,而且几乎所有的交易都在亏损,然后当我改变信号的 "极性 "时,存款并没有迅速增加,而是已经?)))) 点是一样的,错误只在开单方向,还是有其他原因?
还有别的东西
下午好。
有4个订单,2个卖出,2个买入。形象地说,封条是在价格上涨时产生的,在价格下跌时买入。买入时卖出被删除,反之亦然。当一张票被创建时,第一笔卖出或买入被存储在变量pos 中。所有4个都有相同的评论--"Aelit"。因此,有一个代码。
顺序是由票据正常选择的,但很多时候评论比较失败。出于兴趣,我做了别的Alert(OrderComment());而日志显示 "Alert: Aelit[sl]"。什么是[sl]?是不是因为所有的订单都有相同的评论?那么,为什么当我发表与其他人不一致的评论时,同样是[sl]的测试?如果你去掉评论检查,OrderModify的日志中就会出现票据错误。起初我以为这个条件是在任何订单创建之前达到的,但不是,当时订单已经存在,在条件触发和不触发的情况下,票据是一样的。我们如何理解它呢?
这不是一个奇迹,你的经纪公司对你的评论进行了补充--当达到StopLoss时,订单已经关闭。
你没有正确组织票面上的订单选择。当进行这样的选择时,首先,MODE_TRADES是不必要的--它在OrderSelect()函数中 被省略了。
第二,在成功选择订单后,你没有检查该订单是否根据票据从订单阵列中选择--从市场上的订单或从关闭的订单中选择。
要做到这一点,在订单被选中后,检查它的收盘时间,如果它等于零,那么只有这样的订单才是市场订单,否则 - 它是从已经关闭的订单中选择的(因此在你的评论中增加了这一点)。