新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1829 1...182218231824182518261827182818291830183118321833183418351836...1953 新评论 soleg 2021.12.21 04:24 #18281 SanAlex #:在你的代码中 - 这里是获取数字的地方在信号指标中--它有一个警告。这里有更多的信号--删除几行 谢谢你! законопослушный гражданин 2021.12.23 08:39 #18282 你好 决定把猫头鹰做得更复杂一点。 我想做一些类似于跟踪的事情,但要有一个单/双动作 的想法。 价格超过75%,采取 - 止损减少(例如)20点,采取增加20点。 价格通过90%的取数--停止减少(例如)30便士,取数增加10便士。 我看到的方案是这样的 (.....function...)=> (TP - Mparametr) 其中:TP - 获利 Mparametr- 设置在外部EA变量中(如点的数量)。 应该用什么函数来解决这个问题? 我读过关于预定义变量bid,ask的文章--我们应该用它们作为基础吗? 还是应该使用MarketInfo 或SymbolInfoTick? 我有一个类似的解决方案,但它的停止和采取的转变取决于很多方面。 if((iOTy == OP_BUY)&& (LOT()>LotControl)) { dSL = NormalizeDouble(dOOP - StopLoss * Point+DownLoss * Point, Digits); dTP = NormalizeDouble(dOOP + TakeProfit * Point+DownProfit * Point, Digits); bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE); } 我想做类似的事情。相对简单。 MarketInfo - Получение рыночной информации - Справочник MQL4 docs.mql4.com MarketInfo - Получение рыночной информации - Справочник MQL4 Порт-моне тв 2021.12.23 09:08 #18283 Tretyakov Rostyslav #:或者像这样 我已经写了这个板子快一个星期了,问题是:如果我也通过类比的方法将待定平仓线设置为在按钮上关闭,当价格达到时是低于一个点,那么由于某些原因,它自动关闭,没有询问,没有按下按钮,应该做到高于一个点(按下后,在理论上你应该达到一个水平)。 //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ObjectCreate(0,"Button_1",OBJ_BUTTON,0,0,0); ObjectSetInteger(0,"Button_1",OBJPROP_XDISTANCE,20); ObjectSetInteger(0,"Button_1",OBJPROP_YDISTANCE,120); ObjectSetInteger(0,"Button_1",OBJPROP_XSIZE,100); ObjectSetInteger(0,"Button_1",OBJPROP_YSIZE,20); ObjectCreate(0,"Label_1",OBJ_LABEL,0,0,0); ObjectSetInteger(0,"Label_1",OBJPROP_XDISTANCE,20); ObjectSetInteger(0,"Label_1",OBJPROP_YDISTANCE,40); ObjectSetInteger(0,"Label_1",OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetString(0,"Label_1",OBJPROP_TEXT,"Price"); ObjectSetInteger(0,"Label_1",OBJPROP_COLOR,clrBlack); //--- CLOSE BUY +1 ObjectCreate(0,"Button_21",OBJ_BUTTON,0,0,0); ObjectSetInteger(0,"Button_21",OBJPROP_XDISTANCE,240); ObjectSetInteger(0,"Button_21",OBJPROP_YDISTANCE,120); ObjectSetInteger(0,"Button_21",OBJPROP_XSIZE,100); ObjectSetInteger(0,"Button_21",OBJPROP_YSIZE,20); ObjectSetString(0,"Button_21",OBJPROP_TEXT,"CLOSE BUY +1"); ObjectSetInteger(0,"Button_21",OBJPROP_BGCOLOR,Beige); ObjectSetInteger(0,"Button_21",OBJPROP_COLOR,Green); ObjectCreate(0,"Label_21",OBJ_LABEL,0,0,0); ObjectSetInteger(0,"Label_21",OBJPROP_XDISTANCE,20); ObjectSetInteger(0,"Label_21",OBJPROP_YDISTANCE,40); ObjectSetInteger(0,"Label_21",OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,"Label_21",OBJPROP_COLOR,clrBlack); //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- if(sparam=="Button_1") { ObjectSetString(0,"Label_1",OBJPROP_TEXT,DoubleToString(Ask-1*_Point,Digits)); Comment("цена на момент нажатия кнопки: "+Ask, " ждем цены для входа: "+(Ask-1*_Point)); } if(sparam=="Button_21") { ObjectSetString(0,"Label_21",OBJPROP_TEXT,DoubleToString(Bid+1*_Point,Digits)); ObjectSetText("MSG","цена Bid в момент нажатия кнопки: "+ DoubleToString(Bid,Digits),8,"Verdana", White); ObjectSetText("MSG2","ждем цены Bid для закрытия: "+ DoubleToString(Bid+1*_Point,Digits),8,"Verdana", White); } } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- int ticket; double price=StringToDouble(ObjectGetString(0,"Label_1",OBJPROP_TEXT)); if(Ask<=price) { ticket = OrderSend(_Symbol,OP_BUY,0.01,Ask,0,0,0,NULL,0,0,clrGreen); ObjectSetString(0,"Label_1",OBJPROP_TEXT,DoubleToString(DBL_MAX,Digits)); ObjectSetInteger(0,"Button_1",OBJPROP_STATE,false); Comment("цена ожидания была: "+price, " зашли по: "+Ask, " TakeProfit на: "+(Ask+4*_Point)); } //-----close buy +1 double priceclosebuyplus1=StringToDouble(ObjectGetString(0,"Label_21",OBJPROP_TEXT)); if(Bid>=priceclosebuyplus1) { ObjectSetString(0,"Label_21",OBJPROP_TEXT,DoubleToString(DBL_MAX,Digits)); ObjectSetInteger(0,"Button_21",OBJPROP_STATE,false); ObjectSetText("MSG","ожидали цену закрытия Bid: "+DoubleToString(priceclosebuyplus1,Digits),8,"Verdana", White); ObjectSetText("MSG2","закрыли по цене Bid: "+ DoubleToString(Bid,Digits),8,"Verdana", White); CloseBuyPositions1(); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseBuyPositions1() { for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_BUY) { if(OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL)) { Print("Order Close"); } } } 帮帮我吧 Tretyakov Rostyslav 2021.12.23 09:21 #18284 Порт-моне тв #:无论如何,我已经写了将近一个星期的这个表,这里的问题是,如果我也把最待定的水平到某种关闭的按钮模拟的方法上,这是一个点以下的价格达到时,由于某种原因,不问自动关闭立即,没有按下按钮,这应该做它一个点以上(按后,在达到一个水平,在理论上需要)帮帮我吧 if(Bid>=priceclosebuyplus1&&priceclosebuyplus1>0) Tretyakov Rostyslav 2021.12.23 09:37 #18285 законопослушный гражданин #:你好决定把猫头鹰做得更复杂一点。我想做一些类似于跟踪的事情,但要有一个单/双动作的想法。价格超过75%,采取 - 止损减少(例如)20点,采取增加20点。价格过了90%,采取了--止损减少(例如)30点,采取增加10点。 int TakeProfit=200; int StopLoss =100; //+----------------------------------------------------------------------------+ void TrailingOrders() { for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if(Bid >= OrderOpenPrice()+(TakeProfit*0.75*_Point) && OrderStopLoss()<OrderOpenPrice()-20*_Point) { if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+20*_Point, OrderTakeProfit()+20*_Point, 0)) Print("Модификации ордера на покупку успешна!"); else Print("Ошибка модификации ордера на покупку! - ",GetLastError()); } if(Bid >= OrderOpenPrice()+(TakeProfit*0.9*_Point) && OrderStopLoss()>=OrderOpenPrice()-20*_Point) { if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+30*_Point, OrderTakeProfit()+10*_Point, 0)) Print("Модификации ордера на покупку успешна!"); else Print("Ошибка модификации ордера на покупку! - ",GetLastError()); } } } } } } законопослушный гражданин 2021.12.23 09:51 #18286 Tretyakov Rostyslav #: 谢谢你,这很有趣,我会努力弄清楚的!"。 事实证明,如果(Bid 是当前的价格参数--没有以任何方式调用--你可以只与它比较某些值? 而Bid 的单位是ticks?(它不是用金钱来表示的) Порт-моне тв 2021.12.23 09:53 #18287 Tretyakov Rostyslav #: 我只有一件小事要担心。 所有的订单都在不时地关闭(即全部和总是!),但有时,如果我打开3-4个订单,只有2或1个可能关闭。我有一个专门的i-check,你能给我一个提示吗? //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseBuyPositions1() { for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_BUY) { if(OrderClose(OrderTicket(), OrderLots(), Bid, 0, NULL)) { Print("Order Close"); } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseSellPositions2() { for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_SELL) { if(OrderClose(OrderTicket(), OrderLots(), Ask, 0, NULL)) { Print("Order Close"); } } } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.12.23 10:01 #18288 законопослушный гражданин #:谢谢你,这很有趣,我会努力弄清楚的!"。事实证明,如果(Bid 是当前的价格参数--没有以任何方式调用--你可以直接与它比较某些数值?而Bid 的单位是ticks?(它不是用金钱来表示的) 出价是 当前价格 因此,与开盘价+/-条件进行比较 至于点数,无论是买入还是卖出都不是以点数来衡量的。滴答声是一个新价格的到来。 законопослушный гражданин 2021.12.23 10:04 #18289 Tretyakov Rostyslav #:出价是 当前价格 所以我们必须与开盘价+/-条件进行比较至于点数,无论是买入还是卖出都不是以点数来衡量的。滴答声是一个新价格的到来。 我明白了,那么它是以什么来衡量的?"点"? Tretyakov Rostyslav 2021.12.23 10:12 #18290 законопослушный гражданин #:我明白了,那是如何衡量的? MarketInfo(_Symbol,MODE_TICKSIZE); 1...182218231824182518261827182818291830183118321833183418351836...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在你的代码中 - 这里是获取数字的地方
在信号指标中--它有一个警告。这里有更多的信号--删除几行
你好
决定把猫头鹰做得更复杂一点。
我想做一些类似于跟踪的事情,但要有一个单/双动作
的想法。
价格超过75%,采取 - 止损减少(例如)20点,采取增加20点。
价格通过90%的取数--停止减少(例如)30便士,取数增加10便士。
我看到的方案是这样的 (.....function...)=> (TP - Mparametr)
其中:TP - 获利
Mparametr- 设置在外部EA变量中(如点的数量)。
应该用什么函数来解决这个问题?
我读过关于预定义变量bid,ask的文章--我们应该用它们作为基础吗?
还是应该使用MarketInfo 或SymbolInfoTick?
我有一个类似的解决方案,但它的停止和采取的转变取决于很多方面。
我想做类似的事情。相对简单。
或者像这样
我已经写了这个板子快一个星期了,问题是:如果我也通过类比的方法将待定平仓线设置为在按钮上关闭,当价格达到时是低于一个点,那么由于某些原因,它自动关闭,没有询问,没有按下按钮,应该做到高于一个点(按下后,在理论上你应该达到一个水平)。
帮帮我吧
无论如何,我已经写了将近一个星期的这个表,这里的问题是,如果我也把最待定的水平到某种关闭的按钮模拟的方法上,这是一个点以下的价格达到时,由于某种原因,不问自动关闭立即,没有按下按钮,这应该做它一个点以上(按后,在达到一个水平,在理论上需要)
帮帮我吧
你好
决定把猫头鹰做得更复杂一点。
我想做一些类似于跟踪的事情,但要有一个单/双动作
的想法。
价格超过75%,采取 - 止损减少(例如)20点,采取增加20点。
价格过了90%,采取了--止损减少(例如)30点,采取增加10点。
谢谢你,这很有趣,我会努力弄清楚的!"。
事实证明,如果(Bid 是当前的价格参数--没有以任何方式调用--你可以只与它比较某些值?
而Bid 的单位是ticks?(它不是用金钱来表示的)
我只有一件小事要担心。 所有的订单都在不时地关闭(即全部和总是!),但有时,如果我打开3-4个订单,只有2或1个可能关闭。我有一个专门的i-check,你能给我一个提示吗?
谢谢你,这很有趣,我会努力弄清楚的!"。
事实证明,如果(Bid 是当前的价格参数--没有以任何方式调用--你可以直接与它比较某些数值?
而Bid 的单位是ticks?(它不是用金钱来表示的)
出价是 当前价格 因此,与开盘价+/-条件进行比较
至于点数,无论是买入还是卖出都不是以点数来衡量的。滴答声是一个新价格的到来。
出价是 当前价格 所以我们必须与开盘价+/-条件进行比较
至于点数,无论是买入还是卖出都不是以点数来衡量的。滴答声是一个新价格的到来。
我明白了,那么它是以什么来衡量的?"点"?
我明白了,那是如何衡量的?
MarketInfo(_Symbol,MODE_TICKSIZE);