新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1928 1...192119221923192419251926192719281929193019311932193319341935...1953 新评论 Vitaly Muzichenko 2022.03.03 21:27 #19271 Valeriy Yastremskiy #: 被触摸/交叉-移动的算法不起作用? 困难,我想交出已经合适的东西。他只需对水平进行可视化,并将停止点移至过去的水平,这就足够了。没想到会有这样的收获。如果他没有离开很长时间,我就会这样做,但不是现在。我不想要套利,我已经有了。 Maxim Kuznetsov 2022.03.03 21:44 #19272 如果step:=:const,那么就简单地显示从当前止损开始的给定步长的水平。还有什么能比这更简单的呢。 Vitaly Muzichenko 2022.03.03 22:41 #19273 Maxim Kuznetsov #:如果step:=:const,那么就简单地显示从当前止损开始的给定步长的水平。还有什么能比这更简单的呢。 是的算法我明白。打开一个窗口,写下发生了什么事?略有不同的条件,要深入研究和写作。 P.S. 在其他情况下,我不会问。 Юрий Дьяченко 2022.03.04 00:18 #19274 请告知谁知道,我无法在演示版上开出订单,写的是排队等候的一般错误!问题是什么? Сергей Груздев 2022.03.04 03:31 #19275 Maxim Kuznetsov #:最有可能的是--ex4是用一个旧的编译器建立的。终端已被更新,但EA是古老的孤儿。我们需要联系作者第二种选择--签名不匹配(或因技术原因未验证)。你只需要等待DNS更新,连接就会建立起来。假设的选项--作者被永久禁言。看看他的资料总结一下:首先你要向作者提问。 谢谢你 Valeriy Yastremskiy 2022.03.04 06:52 #19276 Vitaly Muzichenko #:困难,我想交出已经合适的东西。他只需对水平进行可视化,并将站台移到过去的水平,这就足够了。没想到会有这样的收获。如果他没有离开很长时间,我就会这样做,但不是现在。我不想要套利,我已经有了。Oninit计算水平和绘制。为了一项不同的任务,但就在附近。你的部分是为绝对水平。 Zy,我当然没有什么错。我需要了解订单、头寸和拖网是如何被追踪的,画起来很容易,但当你达到一个水平时,你要么改变水平的颜色,要么删除水平线。 附加的文件: TlgAlert_0.1.mq5 29 kb TlgAlert_0.1.mq4 24 kb Valeriy Yastremskiy 2022.03.04 12:22 #19277 Valeriy Yastremskiy #:OnInit计算水平并绘制。为了不同的任务,但并排在一起。你的部分是为绝对水平。 Zy,我当然没有什么不妥之处。我需要了解订单、头寸和拖网是如何被追踪的,那时很容易画出来。但当你达到一个水平时,你要么改变水平的颜色,要么删除横线。 什么可以)))),需要添加触发标志到交叉功能。没有时间。 input double PriceOrder=0.0; // Цена ордера, input int TralStep=300; // Шаг отслеживания SL input int NumberLevels=7; // Kоличество уровней для выбранного метода ВВЕРХ input bool FlagShowLine=true; // Рисовать / не рисовать уровни //--- double LevelPrice[10]; // Количество уровней не более 10. string HLineName[10]; bool Del=true; string MsgAlert,Tip; int CurLevel; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //---Расчет ценовых уровней CalculationOfLevels(PriceOrder,TralStep,NumberLevels,Tip); if(FlagShowLine) { ShowLine(Tip); } //--- create timer EventSetTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Comment(""); int obj_total=ObjectsTotal(); PrintFormat("Всего %d объектов",obj_total); for(int i=obj_total-1; i>=0; i--) { string name=ObjectName(i); // PrintFormat("Объект %d: %s",i,name); ObjectDelete(name); } //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- CrossingLevel(CurLevel,Tip); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester() { //--- double ret=0.0; //--- //--- return(ret); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Создает горизонтальную линию | //+------------------------------------------------------------------+ bool HLineCreate(const long chart_ID=0, // ID графика const string name="HLine", // имя линии const int sub_window=0, // номер подокна double price=0, // цена линии const color clr=clrRed, // цвет линии const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии const int width=1, // толщина линии const bool back=true, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=false, // скрыт в списке объектов const long z_order=0) // приоритет на нажатие мышью { //--- если цена не задана, то установим ее на уровне текущей цены Bid if(!price) price=SymbolInfoDouble(Symbol(),SYMBOL_BID); //--- сбросим значение ошибки ResetLastError(); //--- создадим горизонтальную линию if(!ObjectCreate(chart_ID,name,OBJ_HLINE,sub_window,0,price)) { Print(__FUNCTION__, ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError()); return(false); } //--- установим цвет линии ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- установим стиль отображения линии ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); //--- установим толщину линии ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- включим (true) или отключим (false) режим перемещения линии мышью //--- при создании графического объекта функцией ObjectCreate, по умолчанию объект //--- нельзя выделить и перемещать. Внутри же этого метода параметр selection //--- по умолчанию равен true, что позволяет выделять и перемещать этот объект ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- успешное выполнение return(true); } //+------------------------------------------------------------------+ //| Поиск ближайших уровней | //+------------------------------------------------------------------+ void ShowModify(string name, string tip, bool del) { if(del){ ObjectDelete(name); } if(!del){ if(tip=="Sell"){ ObjectSetInteger(0,name,OBJPROP_COLOR,clrGold); } if(tip=="Buy"){ ObjectSetInteger(0,name,OBJPROP_COLOR,clrCoral); } } } //+------------------------------------------------------------------+ //| Мониторинг пересечения уровней | //+------------------------------------------------------------------+ bool CrossingLevel(int level, string tip) { if((tip=="Buy" && Bid > LevelPrice[level]) || (tip=="Sell" && Ask < LevelPrice[level])){ CurLevel=level++ ; return(true); } return(false); } void CalculationOfLevels(double priceorder, int trstep, int numberl, string tip){ //---Расчет ценовых уровней for(int i=0; i<=(numberl); i++){ if(tip=="Buy"){ LevelPrice[i] = priceorder + trstep*Point; if(tip=="Sell"){ LevelPrice[i] = priceorder - trstep*Point; } } CurLevel=1; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ShowLine(string tip) { color ClrLine=clrRed; if(tip=="Buy") ClrLine=clrBlue; if(tip=="Sell") ClrLine=clrRed; for(int i=0;i<=(NumberLevels);i++){ //Alert("ShowLine_",ShowLine,"__",LevelPrice[i],"__",ClrLine); HLineName[i]="LevelPrice_"+(string)i+"_"+(string)LevelPrice[i]; HLineCreate(0,HLineName[i],0,LevelPrice[i],(color)ClrLine,STYLE_SOLID,1); } } 附加的文件: ShowLevel.mq4 16 kb Vitaly Muzichenko 2022.03.04 12:43 #19278 Valeriy Yastremskiy #:我可以做的)))需要在交叉函数中添加触发标志。没有时间。 这有点离谱。 我有一个很久以前写的EA,但它是一个显示将在哪里开仓的EA。 现在我需要在拖网代码中增加一个内容,在拖网将被触发的地方画出这样的线。 这个任务很复杂,因为拖网式EA是在一个图表上设置的,应该在所有有未结头寸的图表上画线。 附加的文件: Trailing_all.mq4 57 kb Valeriy Yastremskiy 2022.03.04 14:42 #19279 Vitaly Muzichenko #:这有点离谱。我有一个写了很久的这样的东西,但它是一个带有显示将在哪里开仓的EA现在我们需要在拖网的代码中增加一个内容,在拖网将被触发的地方画出这样的线。这个任务很复杂,因为拖网式EA是在一个图表上设置的,应该在所有有未结头寸的图表上画线。 是所有的窗口都已经打开,还是在出现头寸时由EA打开?挑战在于找到一个图表) Vitaly Muzichenko 2022.03.04 15:05 #19280 Valeriy Yastremskiy #: 是所有的窗口都已经打开,还是在出现头寸时由EA打开?挑战在于找到一个图表) 我认为,如果有一个位置,窗口是开放的。 1...192119221923192419251926192719281929193019311932193319341935...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
被触摸/交叉-移动的算法不起作用?
困难,我想交出已经合适的东西。他只需对水平进行可视化,并将停止点移至过去的水平,这就足够了。没想到会有这样的收获。如果他没有离开很长时间,我就会这样做,但不是现在。我不想要套利,我已经有了。
如果step:=:const,那么就简单地显示从当前止损开始的给定步长的水平。还有什么能比这更简单的呢。
如果step:=:const,那么就简单地显示从当前止损开始的给定步长的水平。还有什么能比这更简单的呢。
是的算法我明白。打开一个窗口,写下发生了什么事?略有不同的条件,要深入研究和写作。
P.S. 在其他情况下,我不会问。
最有可能的是--ex4是用一个旧的编译器建立的。终端已被更新,但EA是古老的孤儿。我们需要联系作者
第二种选择--签名不匹配(或因技术原因未验证)。你只需要等待DNS更新,连接就会建立起来。
假设的选项--作者被永久禁言。看看他的资料
总结一下:首先你要向作者提问。
谢谢你
困难,我想交出已经合适的东西。他只需对水平进行可视化,并将站台移到过去的水平,这就足够了。没想到会有这样的收获。如果他没有离开很长时间,我就会这样做,但不是现在。我不想要套利,我已经有了。
Oninit计算水平和绘制。为了一项不同的任务,但就在附近。你的部分是为绝对水平。
Zy,我当然没有什么错。我需要了解订单、头寸和拖网是如何被追踪的,画起来很容易,但当你达到一个水平时,你要么改变水平的颜色,要么删除水平线。OnInit计算水平并绘制。为了不同的任务,但并排在一起。你的部分是为绝对水平。
Zy,我当然没有什么不妥之处。我需要了解订单、头寸和拖网是如何被追踪的,那时很容易画出来。但当你达到一个水平时,你要么改变水平的颜色,要么删除横线。什么可以)))),需要添加触发标志到交叉功能。没有时间。
我可以做的)))需要在交叉函数中添加触发标志。没有时间。
这有点离谱。
我有一个很久以前写的EA,但它是一个显示将在哪里开仓的EA。
现在我需要在拖网代码中增加一个内容,在拖网将被触发的地方画出这样的线。
这个任务很复杂,因为拖网式EA是在一个图表上设置的,应该在所有有未结头寸的图表上画线。
这有点离谱。
我有一个写了很久的这样的东西,但它是一个带有显示将在哪里开仓的EA
现在我们需要在拖网的代码中增加一个内容,在拖网将被触发的地方画出这样的线。
这个任务很复杂,因为拖网式EA是在一个图表上设置的,应该在所有有未结头寸的图表上画线。
是所有的窗口都已经打开,还是在出现头寸时由EA打开?挑战在于找到一个图表)
我认为,如果有一个位置,窗口是开放的。