[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 117 1...110111112113114115116117118119120121122123124...631 新评论 Oleg 2012.05.12 03:43 #1161 Roman.: 没有所谓的封闭式车站,有的只是一个远程的...难道OrderOpenTime()--对于一个已设定且未触发的停止,不返回其设定的时间吗? 你是对的,我说的不准确。 我的意思是,我们设置了一个止损单,该止损单被触发,并在此基础上建立了一个头寸。 但是,该头寸可能在设置STOP-order的同一根柱子上打开,也可能在一段时间后打开。 OrderOpenTime()显示了开仓的时间,我的问题是,我们如何知道止损单是何时设置的? MT4报告中有这个时间,但是否可以从代码中找出这个时间? Рустам 2012.05.12 04:40 #1162 如果您的经纪商提供了这些信息,那么请寻找在触发时(进入市场)具有特定类型、价格和魔术师关闭的订单。 alex 2012.05.12 05:31 #1163 我在编译时得到以下错误 '&&' - 条件不能是一个字符串\00.mq4 (225, 27) '&&' - 条件不能是一个字符串 如何解决这个问题? Alexander Voronkov 2012.05.12 05:31 #1164 Lians: 尊敬的专业人士,我发现了一个有用的专家顾问,用于设置虚拟接盘和止损以及追踪止损(附后)。但虚拟止损不能正常工作。请帮助我纠正它。或者,也许有人有很好的模拟方法? 我想表达我的谢意。 这里有一个类似的SCRIPT。 代码中的描述。 附加的文件: trailinglines.mq4 7 kb alex 2012.05.12 05:39 #1165 是由一名顾问编制的 //+------------------------------------------------------------------+ //| 00.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ color clModifyBuy; color clCloseBuy; // Внешние переменные: extern double ll =1; extern int tp = 0; extern int sl = 0; extern int mn = 777; extern int Slippage = 3; extern int NumberOfTry = 5; //-------------------------------------------------------------------+ //| Описание : Установка ордера. Версия функции для тестов на истории. //| Выставления отложенных ордеров на покупку | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| pp - цена | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - Magic Number | //| ex - Срок истечения | //+----------------------------------------------------------------------------+ void SetOrder(string sy, int op, double ll, double pp, double sl=0, double tp=0, int mn=0, datetime ex=0) { color clOpen; int err, ticket; if (sy=="" || sy=="0") sy=Symbol(); if (op==OP_BUYLIMIT || op==OP_BUYSTOP) clOpen=clOpenBuy; ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, ex, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") set ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } } //+----------------------------------------------------------------------------+ //| Описание: Закрытие одной предварительно выбранной позиции //| Закрывает отложенный ордера на покупку. | //+----------------------------------------------------------------------------+ void ClosePosBySelect() { double pp; if (OrderType()==2) { pp=MarketInfo(OrderSymbol(), MODE_BID); OrderClose(OrderTicket(), OrderLots(), pp, Slippage, clCloseBuy); } if (OrderType()==4) { pp=MarketInfo(OrderSymbol(), MODE_BID); OrderClose(OrderTicket(), OrderLots(), pp, Slippage, clCloseBuy); } } //| Описание : Возвращает количество ордеров. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любой ордер) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfOrders(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), ko=0, ot; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot>1 && ot<6) { if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) ko++; } } } } return(ko); } //| Описание : Возвращает цену TakeProfit последней открытой позиций или -1. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double TakeProfitLastPos(string sy="", int op=-1, int mn=-1) { datetime t; double r=-1; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderTakeProfit(); } } } } } } } return(r); } alex 2012.05.12 05:39 #1166 //| Описание : Возвращает цену TakeProfit последней закрытой позиций или -1. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double TakeProfitLastClosePos(string sy="", int op=-1, int mn=-1) { datetime t; double r=-1; int i, k=OrdersHistoryTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderCloseTime()) { t=OrderCloseTime(); r=OrderTakeProfit(); } } } } } } } return(r); } //| Описание : Открытие позиции. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; double pp; int err, ticket; if (sy=="") sy=Symbol(); if (op==OP_BUY) { pp=MarketInfo(sy, MODE_ASK); clOpen=clOpenBuy; } ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, 0, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") open ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } } //| Описание : Модификация одного предварительно выбранного ордера. | //+----------------------------------------------------------------------------+ //| Параметры: | //| pp - цена установки ордера | //| sl - ценовой уровень стопа | //| tp - ценовой уровень тейка | //| ex - дата истечения | //+----------------------------------------------------------------------------+ void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) { bool fm; color cl=IIFc(OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP, clModifyBuy); double op, pa, pb, os, ot; int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it; if (pp<=0) pp=OrderOpenPrice(); if (sl<0 ) sl=OrderStopLoss(); if (tp<0 ) tp=OrderTakeProfit(); pp=NormalizeDouble(pp, dg); sl=NormalizeDouble(sl, dg); tp=NormalizeDouble(tp, dg); op=NormalizeDouble(OrderOpenPrice() , dg); os=NormalizeDouble(OrderStopLoss() , dg); ot=NormalizeDouble(OrderTakeProfit(), dg); if (pp!=op || sl!=os || tp!=ot) { for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break; while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl); if (fm) else { er=GetLastError(); pa=MarketInfo(OrderSymbol(), MODE_ASK); pb=MarketInfo(OrderSymbol(), MODE_BID); Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(), " op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp); Sleep(1000*10); } } } } //| Описание : Рассчитывает количество ордеров по типам. | //+----------------------------------------------------------------------------+ //| Параметры: | //| mo - массив количества ордеров по типам | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ void CountOrders(int& mo[], int mn=-1) { int i, k=OrdersTotal(); if (ArraySize(mo)!=6) ArrayResize(mo, 6); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (mn<0 || OrderMagicNumber()==mn) mo[OrderType()]++; } } } //+----------------------------------------------------------------------------+ // Удаление ордеров. Версия функции для тестов на истории. //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| op - операция ( -1 - любой ордер) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), ot; if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP ) { if (OrderSymbol()==sy && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { OrderDelete(OrderTicket()); } } } } } } //============================================================================== // --------------------------- Графические функции ----------------------------+ //============================================================================== void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) { if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0); ObjectSet(nm, OBJPROP_PRICE1, p1); ObjectSet(nm, OBJPROP_COLOR , cl); ObjectSet(nm, OBJPROP_STYLE , st); ObjectSet(nm, OBJPROP_WIDTH , wd); } alex 2012.05.12 05:41 #1167 输出2个错误 'clOpenBuy' - 未定义的变量.mq4 (40, 49) clOpenBuy - 未定义变量 我一次又一次地重写了代码--这2个错误无法修复。 Victor Nikolaev 2012.05.12 05:50 #1168 alex12: 输出2个错误 'clOpenBuy' - 未定义的变量.mq4 (40, 49) clOpenBuy - 未定义变量 我一次又一次地重写了代码--这2个错误无法修复。 // Внешние переменные: extern double ll =1; extern int tp = 0; extern int sl = 0; extern int mn = 777; extern int Slippage = 3; extern int NumberOfTry = 5; color clOpenBuy=Red; 你可以这样做,例如 Sceptic Philozoff 2012.05.12 05:51 #1169 alex12:输出2个错误'clOpenBuy' - 未定义的变量.mq4 (40, 49)clOpenBuy - 未定义变量我又重写了一遍代码,结果未能纠正这2个错误。alex12,我不理解你。你在kodobase有一些工作,你问这样的问题。你已经用它们覆盖了几条线。 clOpenBuy变量没有定义。所以必须对它进行定义。从代码上看,它与买入订单 开仓的相关颜色类似。 变量是如何定义的,你应该清楚地知道。由于它被用于几个不同的功能中,它可能应该是全局的。所以把它定义为全球。而且更重要的是,因为 color clCloseBuy; 你已经定义了它。 alex 2012.05.12 05:56 #1170 它产生了大量的错误 1...110111112113114115116117118119120121122123124...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
没有所谓的封闭式车站,有的只是一个远程的...
难道OrderOpenTime()--对于一个已设定且未触发的停止,不返回其设定的时间吗?
我的意思是,我们设置了一个止损单,该止损单被触发,并在此基础上建立了一个头寸。
但是,该头寸可能在设置STOP-order的同一根柱子上打开,也可能在一段时间后打开。
OrderOpenTime()显示了开仓的时间,我的问题是,我们如何知道止损单是何时设置的?
MT4报告中有这个时间,但是否可以从代码中找出这个时间?
我在编译时得到以下错误
'&&' - 条件不能是一个字符串\00.mq4 (225, 27)
'&&' - 条件不能是一个字符串
如何解决这个问题?
尊敬的专业人士,我发现了一个有用的专家顾问,用于设置虚拟接盘和止损以及追踪止损(附后)。但虚拟止损不能正常工作。请帮助我纠正它。或者,也许有人有很好的模拟方法?
我想表达我的谢意。
代码中的描述。
是由一名顾问编制的
输出2个错误
'clOpenBuy' - 未定义的变量.mq4 (40, 49)
clOpenBuy - 未定义变量
我一次又一次地重写了代码--这2个错误无法修复。
输出2个错误
'clOpenBuy' - 未定义的变量.mq4 (40, 49)
clOpenBuy - 未定义变量
我一次又一次地重写了代码--这2个错误无法修复。
你可以这样做,例如
输出2个错误
'clOpenBuy' - 未定义的变量.mq4 (40, 49)
clOpenBuy - 未定义变量
我又重写了一遍代码,结果未能纠正这2个错误。
alex12,我不理解你。你在kodobase有一些工作,你问这样的问题。你已经用它们覆盖了几条线。
clOpenBuy变量没有定义。所以必须对它进行定义。从代码上看,它与买入订单 开仓的相关颜色类似。
变量是如何定义的,你应该清楚地知道。由于它被用于几个不同的功能中,它可能应该是全局的。所以把它定义为全球。而且更重要的是,因为
color clCloseBuy;你已经定义了它。
它产生了大量的错误