新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 707 1...700701702703704705706707708709710711712713714...1953 新评论 Alexey Viktorov 2018.12.01 16:52 #7061 Roman Shiredchenko:这不是一个笑话,我不是这样嘲弄的。 在你发表异端言论之前,请仔细看一下图片。 这个话题太老套了,读起来让人反感.........然后是视觉效果的缺失,然后是优化... 把窗口拓宽,你就会很高兴。不要混淆哪个窗口要展开。 Roman Shiredchenko 2018.12.01 16:57 #7062 ilvic:问题在于屏幕分辨率。非常感谢你,开始通过看图片来猜测...... Roman Shiredchenko 2018.12.01 17:11 #7063 ilvic:问题在于屏幕分辨率。再次感谢。一切正常,问题出在文字大小(字体)的显示上 PokrovMT5 2018.12.02 15:07 #7064 下午好,请帮助找到指标代码中的一个错误,注释在代码中,蓝色不想要画,因为我想写。想法是找到从上次更新到上次更新高位绿线的时间范围内最小的低值。谢谢。{ if(prev_calculated<1) limit=rates_total-1; if(prev_calculated>0)limit=rates_total-prev_calculated; for(i=limit; i>=0; i--) { yesterday_weekday = TimeDayOfWeek(iTime(Symbol(),0,i+1))-TimeDayOfWeek(iTime(Symbol(),0,i)); if (yesterday_weekday !=0) // находим открытие нового дня { BH=open[i];BL=open[i]; // переменные ХАЙ ЛОУ Closebar=open[i]; // искомая переменная NHT=time[i]; // переменная время последнего обновления ХАЙ PHT=time[i]; // переменная время предпоследнего обновления хай } CloseD[i]=Closebar; // буфер отрисовки искомая переменная СИНИЙ ЦВЕТ HD[i]=BH; // буфер отрисовки ХАЙ LD[i]=BL; // буфер отрисовки ЛОУ if (Fun_New_Bar==false) // находим закрытие бара { if (Prev_Time==0) { Prev_Time=time[i]; Fun_New_Bar=false; } if(Prev_Time!=time[i]) { Prev_Time=time[i]; if(iHigh(NULL,0,i+1)>BH) // проверяем есть ли обновление Хай { C=PHT; // присвоим переменной время предыдущего бара обновления Хай NHT=iTime(NULL,0,i+1); // находим время обновления Хай Pshift=iBarShift(NULL,0,C); // находим индекс бара предыдущего обновления Хай P=iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Pshift,i+1)); // находим наименьшее значение Лоу от обновления Хай настоящего до предыдущего (искомая величина) BH=iHigh(NULL,0,i+1); // прорисовываем Хай новый Closebar=P; // прорисовываем искомую величину PHT=NHT; // сохраняем время последнего обновления Хай } Fun_New_Bar=false; // ждем закрытие нового бара } } Comment( NHT, C , Pshift ); // проверка if(low[i]<BL) BL=low[i]; // в процессе } return(rates_total); } ponochka 2018.12.04 12:32 #7065 下午好!对EA的帮助我需要做一个正常的追踪止损,分步进行,并将SL移至Breakeven!!!。换句话说,订单被打开,在25个(比喻)正确的方向上的点之后,SL立即 被设置为开盘价!我有这样的代码,但它跟随价格,并在开盘价上停止!这是什么意思?bool tkt; for (int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType() == OP_BUY) { if(NormalizeDouble(OrderStopLoss(), Digits) < NormalizeDouble(OrderOpenPrice(), Digits) && NormalizeDouble(Ask - OrderStopLoss(), Digits) > NormalizeDouble(TrailingStop * Point, Digits)) tkt = OrderModify(OrderTicket(), 0, Ask - TrailingStop * Point, OrderTakeProfit(), OrderExpiration(), clrNONE); Print("Error setting Buy trailing stop: ", GetLastError()); } if (OrderType() == OP_SELL) { if(NormalizeDouble(OrderStopLoss(),Digits) > NormalizeDouble(OrderOpenPrice(), Digits) && NormalizeDouble(OrderStopLoss() - Bid, Digits) > NormalizeDouble(TrailingStop * Point, Digits)) tkt = OrderModify(OrderTicket(), 0, Bid + TrailingStop * Point, OrderTakeProfit(), OrderExpiration(), clrNONE); Print("Error setting Sell trailing stop: ", GetLastError()); } } } 我已经用头撞墙一个星期了! Youri Lazurenko 2018.12.04 14:46 #7066 ponochka:下午好!对EA的帮助我需要做一个正常的追踪止损,分步进行,并将SL移至Breakeven!!!。即:一个订单被打开,在25个(比喻)正确的方向上的点之后,SL立即 被设置为开盘价!这就是所谓的SL。我有这样的代码,但它跟随价格,并在开盘价上停止!这是什么意思?我已经用头撞墙一个星期了!请为我自己写,也使用它们。 //======= Глобальные переменные extern bool UseBreakeven = true; //Использование безубытка extern int Breakeven = 20; //Профит безубытка extern int ValueBreak = 3; //Безубыток extern bool UseTrailingStop = true; //использование трейлинг стопа extern int TrailingStop = 40; //Величина трала extern int TrailingStep = 3; //Шиг трала double SL, TP; //нннннннннннн Функция перевода в безубыток нннннннннннннннннннннннннннннннннннннннннннн void BreakevenModify() { int i; double sl; int total = OrdersTotal(); if(UseBreakeven) { for(i = total-1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if(OrderStopLoss() < OrderOpenPrice() && (OrderOpenPrice() + Breakeven*point) <= Bid) { sl = NormalizeDouble(OrderOpenPrice() + ValueBreak*point, Digits); OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0); } } } } if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_SELL) { if(OrderStopLoss() > OrderOpenPrice() && (OrderOpenPrice() - Breakeven*point) >= Ask) { sl = NormalizeDouble(OrderOpenPrice() - ValueBreak*point, Digits); OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0); } } } } } } } //нннннннннннн Функция трейлинг стопа ннннннннннннннннннннннннннннннннннннннннннннннннннннн void TrailingStopLoss() { int i; double sl; int total = OrdersTotal(); if(UseTrailingStop) { for(i = total-1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if((OrderOpenPrice() + TakeProfit3*point) <= Bid) { if(OrderStopLoss() > OrderOpenPrice() && OrderStopLoss() + (TrailingStop + TrailingStep)*point <= Bid) { sl = NormalizeDouble(OrderStopLoss() + TrailingStep*point, Digits); OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0); } } } } } if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_SELL) { if((OrderOpenPrice() - TakeProfit3*point) >= Ask) { if(OrderStopLoss() < OrderOpenPrice() && OrderStopLoss() - (TrailingStop + TrailingStep)*point >= Ask) { sl = NormalizeDouble(OrderStopLoss() - TrailingStep*point, Digits); OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0); } } } } } } } } 我为自己写,并使用它们。 Maxim Kuznetsov 2018.12.04 15:28 #7067 Youri Lazurenko:拜托,我是为自己写的,为自己用的。 这只是为测试人员准备的 :-) 在现实生活中,根据出价(Bid)、要价(Ask)来进行拖网是非常危险的。 Taras Slobodyanik 2018.12.05 18:18 #7068 Rustam Bikbulatov: 嗨,伙计们。请你告诉我,为什么我有几十个订单是以交错的顺序或不同的方式关闭的?我应该如何修复它?有没有一种方法可以一次性将它们全部关闭?在最后关闭,而不是在开始。 for(int i=OrdersTotal()-1; i>=0; i--) 还是我必须自己做一个清单,然后根据它来关闭订单? Rustam Bikbulatov 2018.12.05 18:47 #7069 Taras Slobodyanik:结束时,而不是开始时 还是你自己制定清单,用它来关闭?你如何制定一个清单? Rustam Bikbulatov 2018.12.05 19:54 #7070 嗨,伙计们。请你告诉我,为什么我有几十个订单的关闭顺序是交错的,或者根本不一样?我怎样才能解决这个问题?有没有一种方法可以一次性将它们全部关闭?void CloseOrdB(){ for(int i=0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderMagicNumber()==456){ if(OrderClose(OrderTicket(),OrderLots(),Bid,3,clrBlue)){CloseOrdB();}}}} } 1...700701702703704705706707708709710711712713714...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这不是一个笑话,我不是这样嘲弄的。
在你发表异端言论之前,请仔细看一下图片。
这个话题太老套了,读起来让人反感.........然后是视觉效果的缺失,然后是优化...
把窗口拓宽,你就会很高兴。不要混淆哪个窗口要展开。
问题在于屏幕分辨率。
非常感谢你,开始通过看图片来猜测......
问题在于屏幕分辨率。
再次感谢。一切正常,问题出在文字大小(字体)的显示上
请为我自己写,也使用它们。
我为自己写,并使用它们。
拜托,我是为自己写的,为自己用的。
这只是为测试人员准备的 :-)
在现实生活中,根据出价(Bid)、要价(Ask)来进行拖网是非常危险的。
嗨,伙计们。请你告诉我,为什么我有几十个订单是以交错的顺序或不同的方式关闭的?我应该如何修复它?有没有一种方法可以一次性将它们全部关闭?
在最后关闭,而不是在开始。
还是我必须自己做一个清单,然后根据它来关闭订单?结束时,而不是开始时
还是你自己制定清单,用它来关闭?你如何制定一个清单?