[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 270 1...263264265266267268269270271272273274275276277...432 新评论 TarasBY 2013.04.06 15:04 #2691 hoz: 我不是说不需要fi_Ticket 这个参数,而是说为什么默认情况下它被设置为0(零)。我就会这样做。我再复制一下源代码。该功能允许通过一个工具(不与订单绑定,例如,在开立订单之前)和相同的,但与特定订单(当它后面有一个订单)一起获得交易信息。为了方便使用该功能,使用了默认值。fi_Ticket的 负值在初始化交易库时使用。P.S. 首先,要注意变量的名称,更确切地说,要注意其前缀。具有初始b 的变量,如bs_symbol,从库中全局声明。大多数全局变量 是在b-PSI@Base中声明的。 [删除] 2013.04.07 06:08 #2692 请看EA代码,搞不清楚原因是什么....。在第一次启动时,它可以立即打开交易,但在关闭后,它停止工作,直到下一个终端重新启动或开/关允许EA进行交易...与江恩2.0指标一起工作extern string s0 = "Setup: Main"; extern int Magic = 1121; extern double lots = 0.1; extern int StopLoss = 70; extern int TakeProfit = 140; extern bool UseTrail = true; extern bool TrailWhileMinus = false; extern int Trail = 70; extern string s1 = "Setup: GANN indicator"; extern bool UseBeginDate = false; extern string BeginDate = "2010.01.01 00:00"; extern int nBarsBack = 120;//250; extern string prices = "0=close, 4=median, 5=typical"; extern int Price_Mode = 5; extern bool Show_GridMatrix = false; extern bool Show_GannGrid = false; extern bool Show_HiloArrows = true; extern bool Show_PriceArrows = true; extern bool Show_Comments = false; extern string ____MainGrid____ = "ooo"; extern color MainGrid_Color = Silver;//Green;//Sienna; extern int MainGrid_Style = STYLE_DOT; extern int MinMaxGrid_Style = STYLE_SOLID; extern int MainGrid_Width = 1; extern int fontSize = 8; extern bool Draw_AllGrids = false; extern bool Draw_AdditionalGrids = false; extern string ____GannGrid____ = "ttt"; extern color GannGrid_Color = Silver;//Gray; extern int GannGrid_Style = STYLE_DOT; extern int GannGrid_Width = 177; extern string ____Default_GridParameters____ = "Recomanded GridInterval 35 or 36"; extern int MainGrid_Intervals = 3677; //default=35(!) extern double GannGrid_Interval = 8.0;//with default 8.5 is the time interval not OK; and 9 is too large extern int Text_Shift = 50; //s1, UseBeginDate, BeginDate, nBarsBack, prices, Price_Mode, Show_GridMatrix, Show_GannGrid, Show_HiloArrows, Show_PriceArrows, Show_Comments, ____MainGrid____, MainGrid_Style, MinMaxGrid_Style, MainGrid_Width, fontSize, Draw_AllGrids, Draw_AdditionalGrids, ____GannGrid____, GannGrid_Style, GannGrid_Width, ____Default_GridParameters____, MainGrid_Intervals, GannGrid_Interval, Text_Shift int slip = 3; int Ticket[1000]; void deinit() { SemaphoreDeinit("TRADECONTEXT"); return(0); } int start() { static datetime TimeFlag = 0; datetime TimeLast = Time[0]; if(TimeFlag < TimeLast) { TimeFlag = TimeLast; int GANN = GetSignal_GANN(); AnalyzeSignals(GANN); if(UseTrail == true) TrailAllOrders(); } return(0); } void AnalyzeSignals(int GANN) { static int ticket = 0; int sig = -1; bool res; ticket = RefreshTicket(ticket); if(GANN == OP_BUY) sig = OP_BUY; else if(GANN == OP_SELL) sig = OP_SELL; if(ticket != 0) { OrderSelect(ticket, SELECT_BY_TICKET); int type = OrderType(); if(sig == OP_BUY && type == OP_SELL) { SemaphoreTake("TRADECONTEXT"); res = OrderClose(ticket, OrderLots(), Ask, slip); SemaphoreReturn("TRADECONTEXT"); if(!res) {Alert("OrderClose Error: ", GetLastError());} else ticket = 0; } else if(sig == OP_SELL && type == OP_BUY) { SemaphoreTake("TRADECONTEXT"); res = OrderClose(ticket, OrderLots(), Bid, slip); SemaphoreReturn("TRADECONTEXT"); if(!res) {Alert("OrderClose Error: ", GetLastError());} else ticket = 0; } } if(ticket == 0) { double _lot = lots; if(sig == OP_BUY) { SemaphoreTake("TRADECONTEXT"); ticket = OrderSend(Symbol(), OP_BUY, _lot, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfit*Point, NULL, Magic); SemaphoreReturn("TRADECONTEXT"); if(ticket < 0) {Alert("OrderSend Error: ", GetLastError());} } else if(sig == OP_SELL) { SemaphoreTake("TRADECONTEXT"); ticket = OrderSend(Symbol(), OP_SELL, _lot, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit*Point, NULL, Magic); SemaphoreReturn("TRADECONTEXT"); if(ticket < 0) {Alert("OrderSend Error: ", GetLastError());} } } } int RefreshTicket(int ticket) { bool res; if(ticket <= 0) return(0); else { res = OrderSelect(ticket, SELECT_BY_TICKET); if(!res) return(0); else if(OrderCloseTime() != 0) return(0); } return(ticket); //all ok, ticket still valid } int GetSignal_GANN() { //Alert("!!: ", s1, ";", UseBeginDate, ";", BeginDate, ";", nBarsBack, ";", prices, ";", Price_Mode, ";", Show_GridMatrix, ";", Show_GannGrid, ";", Show_HiloArrows, ";", Show_PriceArrows, ";", Show_Comments, ";", ____MainGrid____, ";", MainGrid_Color, ";", MainGrid_Style, ";", MinMaxGrid_Style, ";", MainGrid_Width, ";", fontSize, ";", Draw_AllGrids, ";", Draw_AdditionalGrids, ";", ____GannGrid____, ";", GannGrid_Color, ";", GannGrid_Style, ";", GannGrid_Width, ";", ____Default_GridParameters____, ";", MainGrid_Intervals, ";", GannGrid_Interval, ";", Text_Shift); double ga_up = iCustom(NULL, 0, "Gann v2.0", s1, UseBeginDate, BeginDate, nBarsBack, prices, Price_Mode, Show_GridMatrix, Show_GannGrid, Show_HiloArrows, Show_PriceArrows, Show_Comments, ____MainGrid____, MainGrid_Color, MainGrid_Style, MinMaxGrid_Style, MainGrid_Width, fontSize, Draw_AllGrids, Draw_AdditionalGrids, ____GannGrid____, GannGrid_Color, GannGrid_Style, GannGrid_Width, ____Default_GridParameters____, MainGrid_Intervals, GannGrid_Interval, Text_Shift, 4, 0); double ga_dn = iCustom(NULL, 0, "Gann v2.0", s1, UseBeginDate, BeginDate, nBarsBack, prices, Price_Mode, Show_GridMatrix, Show_GannGrid, Show_HiloArrows, Show_PriceArrows, Show_Comments, ____MainGrid____, MainGrid_Color, MainGrid_Style, MinMaxGrid_Style, MainGrid_Width, fontSize, Draw_AllGrids, Draw_AdditionalGrids, ____GannGrid____, GannGrid_Color, GannGrid_Style, GannGrid_Width, ____Default_GridParameters____, MainGrid_Intervals, GannGrid_Interval, Text_Shift, 6, 0); Print("ga_up = ", ga_up); Print("ga_dn = ", ga_dn); if(ga_up > 0.0) return(OP_BUY); else if(ga_dn > 0.0) return(OP_SELL); else return(-1); } int TrailAllOrders() { int i, total; total = CreateTicketArray(OP_BUY, Magic); for(i=0; i<total; i++) TrailingStop(Ticket[i]); total = CreateTicketArray(OP_SELL, Magic); for(i=0; i<total; i++) TrailingStop(Ticket[i]); } void TrailingStop(int ticket) { int res; OrderSelect(ticket, SELECT_BY_TICKET); if(OrderType() == OP_BUY) if(TrailWhileMinus == true || Bid-OrderOpenPrice()>Point*Trail) //не тралим, пока не можем достичь безубытка первым переносом стопа if(Bid - OrderStopLoss() > Trail*Point) { SemaphoreTake("TRADECONTEXT"); res = OrderModify(OrderTicket(), 0, Bid - Trail*Point, OrderTakeProfit(), 0); SemaphoreReturn("TRADECONTEXT"); if(res<0) Alert("TrailingStop OrderModify Error: ", GetLastError()); } if(OrderType() == OP_SELL) if(TrailWhileMinus == true || OrderOpenPrice()-Ask>Point*Trail) //не тралим, пока не можем достичь безубытка первым переносом стопа if(OrderStopLoss() - Ask > Trail*Point) { SemaphoreTake("TRADECONTEXT"); res = OrderModify(OrderTicket(), 0, Ask + Trail*Point, OrderTakeProfit(), 0); SemaphoreReturn("TRADECONTEXT"); if(res<0) Alert("TrailingStop OrderModify Error: ", GetLastError()); } } int CreateTicketArray(int dir, int SysID) { int total=OrdersTotal(), i, c=0; if (total<=0) return (0); for(i=0;i<total;i++) { OrderSelect(i, SELECT_BY_POS); if ((OrderType()==dir) && (OrderMagicNumber()==SysID)) { Ticket[c] = OrderTicket(); c++; } } return (c); } //------------------------------------------SEMAPHORE------------------------------------------ int critical = 0; void SemaphoreTake(string SEM) { if(GlobalVariableCheck(SEM) == false) GlobalVariableSet(SEM, 0); while(1==1) { if(GlobalVariableSetOnCondition(SEM, 1.0, 0.0)) //получили доступ { critical = 1; Print("SEMAPHORE \"", SEM, "\" TAKEN. CURRENT VALUE: ", GlobalVariableGet(SEM)); break; //выходим из цикла ожидания доступа } else { Print("ATTEMPT TO CAPTURE SEMAPHORE \"", SEM, "\" FAILED. SEMAPHORE BUSY. WAITING 0.1 SEC. CURRENT VALUE: ", GlobalVariableGet(SEM)); Sleep(100); } } } void SemaphoreReturn(string SEM) { GlobalVariableSet(SEM, 0.0); Print("SEMAPHORE \"", SEM, "\" RETURNED. CURRENT VALUE: ", GlobalVariableGet(SEM)); critical = 0; } void SemaphoreDeinit(string SEM) //Вставить в ф-ю deinit() { if(critical == 1) { GlobalVariableSet(SEM, 0.0); //на случай, если советника убивают, пока он в процессе посылки запроса } } [删除] 2013.04.07 08:51 #2693 chief2000: 这里有一个来自文档的例子,这个命令将帮助你--弄清楚它是如何工作的,改变参数。 高[iHighest(NULL,0,MODE_HIGH,20,4)]。 Low[iLowest(NULL,0,MODE_LOW,10,10)]。 谢谢你 [删除] 2013.04.07 09:04 #2694 chief2000: 这里有一个来自文档的例子,这个命令将帮助你--弄清楚它是如何工作的,改变参数。 高[iHighest(NULL,0,MODE_HIGH,20,4)]。 Low[iLowest(NULL,0,MODE_LOW,10,10)]。 对不起,我的答复晚了,我的电脑出了问题。 [删除] 2013.04.07 09:04 #2695 chief2000: 这里有一个来自文档的例子,这个命令将帮助你--弄清楚它是如何工作的,改变参数。 高[iHighest(NULL,0,MODE_HIGH,20,4)]。 Low[iLowest(NULL,0,MODE_LOW,10,10)]。 对不起,我的答复晚了,我的电脑出了问题。 TarasBY 2013.04.07 10:23 #2696 al7bar:请看EA代码,搞不清楚原因是什么....。在第一次启动时,它可以立即打开交易,但在关闭后,它停止工作,直到下一个终端重新启动或开/关允许EA进行交易...与江恩2.0指标一起工作 没有看到明显的逻辑错误。请一步一步地打印代码。交易程序与票据变量的价值相联系。首先,追踪其变化。还要注意全局变量"TRADECONTEXT "的值- 其值必须为0。 Viktar Dzemikhau 2013.04.07 10:39 #2697 TarasBY:这个功能允许你获得一个工具的交易信息(不与订单挂钩,例如,在开立订单之前),同样的,但与一个特定的订单(伴随它时)。为了方便使用该功能,使用了默认值。fi_Ticket的 负值在初始化交易库时使用。P.S. 首先,注意变量名称,或者更准确地说,它们的前缀。具有初始b 的变量,如bs_symbol,从库中全局声明。大多数全局变量是在b-PSI@Base中声明的。伊戈尔,我理解。但问题是,按照我的理解,要获得某个符号的市场信息,我们根本不需要把它与订单联系起来。如果有文书,就不需要命令......完全没有必要。毕竟,你只需要工具的名称来获得市场信息。你不同意吗?我问的这个变量bs_symbol 是在包含b-PSY@Base.mqh, 这里是字符串,第一次提到。 bs_Symbol, // текущий инструмент但是,没有任何东西被分配给它。然后。if (fs_Symbol != bs_Symbol || fi_Ticket < 0)有一种说法。fs_Symbol != bs_Symbol应该理解为:fs_Symbol !=0 对吗?TarasBY: P.S. 首先,注意变量的名称,或者更准确地说,它们的前缀。具有初始b 的变量,如bs_symbol,从库中全局声明。大多数全局变量是在b-PSI@Base中声明的。 嗯,我通常用g_ 表示全局变量(来自global 这个词)。 你用l(例如li_cnt)表示局部变量吗? IIya 2013.04.07 10:52 #2698 朋友们!我需要帮助来微调一个EA。我们有代码可以在某些条件 下打开一个订单。条件的执行可以在每一个刻度上进行,因为它被放在int start() 的主体中。我们需要。1.在执行一个条件(和打开一个订单)后,我们应该暂停新的订单,暂停n 个小节。例如,如果我的专家顾问是在时间框架M30上,我需要通过3个小时,那么暂停应该是6条。2.该程序应在策略测试器中 工作。需要什么代码?以及在什么地方插入才是正确的。int start() { ... if (...) //условие { OrderSend(Symbol(),OP_BUY,lot,Ask,0,0,0,"Order BUY",0,0); //открытие ордера ... } ... } TarasBY 2013.04.07 11:05 #2699 hoz:伊戈尔,我理解。但问题是,按照我的理解,要想获得某一特定工具的市场信息,你根本不需要把它与订单联系起来。如果有文书,就不需要命令......完全没有必要。毕竟,你只需要工具的名称来获得市场信息。你不同意吗?我问的这个变量bs_symbol 是在包含b-PSY@Base.mqh, 这里是字符串,第一次提到。但是,没有任何东西被分配给它。然后。有一种说法。应该理解为:fs_Symbol !=0 对吗? 我通常用g_ 表示全局变量(来自global 一词),用l(如li_cnt)表示局部变量? 你仍然有很多东西要学。到目前为止,你的假设并不真实。我的函数可以同时为不同的目的服务(为了减少代码本身),特别是fGet_MarketInfo()。一切都经过反复的思考,没有什么需要改变的!例如,从一个实验开始:在EA主体中声明一个全局变量,并尝试从链接库中调用这个变量。尝试将结果与以b 开头的变量名相联系,例如bs_symbol。P.S. 我不需要被检查:你要么使用我的图书馆,要么不使用。如果有什么东西(我的一些图书馆)不能正确工作--请告诉我,我会纠正它。并提出问题--"为什么会这样呢?- 你需要更多的知识,因为 "明显不在表面"。 Viktar Dzemikhau 2013.04.07 12:18 #2700 TarasBY:你仍然有很多东西要学。到目前为止,你的假设并不真实。我的函数可以同时为不同的目的服务(为了减少代码本身),特别是fGet_MarketInfo()。一切都经过反复的思考,没有什么需要改变的! 我了解那里的情况。但不清楚为什么要这样实施。TarasBY:例如,从一个实验开始:在EA主体中声明一个全局变量,并尝试从链接库中调用这个变量。尝试将结果与以b 开头的变量名相联系,例如bs_symbol。反正你不能以原始形式使用你的库,也就是说,所有东西都被绑定在那里。每一个功能都在一包其他人的身上...TarasBY:P.S. 我不需要被检查:你要么使用我的图书馆,要么不使用。如果有什么东西(我的一些图书馆)不能正常工作--让我知道,我会解决它。并提出问题--"为什么会有这样的效果?- 你需要更多的知识,因为 "明显性不在于表面"。 我并不是要以任何方式测试它...事实上,毫无疑问,它写得很有能力。只是我不太明白所有的事情,这就是为什么我说我不认为......我看,我想...但我并不是什么都明白。这就是为什么我问。P.S. 对于bs_symbol我还是不明白。 1...263264265266267268269270271272273274275276277...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我不是说不需要fi_Ticket 这个参数,而是说为什么默认情况下它被设置为0(零)。我就会这样做。
我再复制一下源代码。
该功能允许通过一个工具(不与订单绑定,例如,在开立订单之前)和相同的,但与特定订单(当它后面有一个订单)一起获得交易信息。为了方便使用该功能,使用了默认值。fi_Ticket的 负值在初始化交易库时使用。
P.S. 首先,要注意变量的名称,更确切地说,要注意其前缀。具有初始b 的变量,如bs_symbol,从库中全局声明。大多数全局变量 是在b-PSI@Base中声明的。
请看EA代码,搞不清楚原因是什么....。在第一次启动时,它可以立即打开交易,但在关闭后,它停止工作,直到下一个终端重新启动或开/关允许EA进行交易...与江恩2.0指标一起工作
这里有一个来自文档的例子,这个命令将帮助你--弄清楚它是如何工作的,改变参数。
高[iHighest(NULL,0,MODE_HIGH,20,4)]。
Low[iLowest(NULL,0,MODE_LOW,10,10)]。
谢谢你
这里有一个来自文档的例子,这个命令将帮助你--弄清楚它是如何工作的,改变参数。
高[iHighest(NULL,0,MODE_HIGH,20,4)]。
Low[iLowest(NULL,0,MODE_LOW,10,10)]。
对不起,我的答复晚了,我的电脑出了问题。
这里有一个来自文档的例子,这个命令将帮助你--弄清楚它是如何工作的,改变参数。
高[iHighest(NULL,0,MODE_HIGH,20,4)]。
Low[iLowest(NULL,0,MODE_LOW,10,10)]。
对不起,我的答复晚了,我的电脑出了问题。
请看EA代码,搞不清楚原因是什么....。在第一次启动时,它可以立即打开交易,但在关闭后,它停止工作,直到下一个终端重新启动或开/关允许EA进行交易...与江恩2.0指标一起工作
这个功能允许你获得一个工具的交易信息(不与订单挂钩,例如,在开立订单之前),同样的,但与一个特定的订单(伴随它时)。为了方便使用该功能,使用了默认值。fi_Ticket的 负值在初始化交易库时使用。
P.S. 首先,注意变量名称,或者更准确地说,它们的前缀。具有初始b 的变量,如bs_symbol,从库中全局声明。大多数全局变量是在b-PSI@Base中声明的。
伊戈尔,我理解。但问题是,按照我的理解,要获得某个符号的市场信息,我们根本不需要把它与订单联系起来。如果有文书,就不需要命令......完全没有必要。毕竟,你只需要工具的名称来获得市场信息。你不同意吗?
我问的这个变量bs_symbol 是在包含b-PSY@Base.mqh, 这里是字符串,第一次提到。
bs_Symbol, // текущий инструмент
但是,没有任何东西被分配给它。然后。
有一种说法。
应该理解为:fs_Symbol !=0 对吗?
P.S. 首先,注意变量的名称,或者更准确地说,它们的前缀。具有初始b 的变量,如bs_symbol,从库中全局声明。大多数全局变量是在b-PSI@Base中声明的。
嗯,我通常用g_ 表示全局变量(来自global 这个词)。 你用l(例如li_cnt)表示局部变量吗?
朋友们!我需要帮助来微调一个EA。
我们有代码可以在某些条件 下打开一个订单。条件的执行可以在每一个刻度上进行,因为它被放在int start() 的主体中。
我们需要。
1.在执行一个条件(和打开一个订单)后,我们应该暂停新的订单,暂停n 个小节。例如,如果我的专家顾问是在时间框架M30上,我需要通过3个小时,那么暂停应该是6条。
2.该程序应在策略测试器中 工作。
需要什么代码?以及在什么地方插入才是正确的。
伊戈尔,我理解。但问题是,按照我的理解,要想获得某一特定工具的市场信息,你根本不需要把它与订单联系起来。如果有文书,就不需要命令......完全没有必要。毕竟,你只需要工具的名称来获得市场信息。你不同意吗?
我问的这个变量bs_symbol 是在包含b-PSY@Base.mqh, 这里是字符串,第一次提到。
但是,没有任何东西被分配给它。然后。
有一种说法。
应该理解为:fs_Symbol !=0 对吗?
我通常用g_ 表示全局变量(来自global 一词),用l(如li_cnt)表示局部变量?
你仍然有很多东西要学。到目前为止,你的假设并不真实。我的函数可以同时为不同的目的服务(为了减少代码本身),特别是fGet_MarketInfo()。一切都经过反复的思考,没有什么需要改变的!
例如,从一个实验开始:在EA主体中声明一个全局变量,并尝试从链接库中调用这个变量。尝试将结果与以b 开头的变量名相联系,例如bs_symbol。
P.S. 我不需要被检查:你要么使用我的图书馆,要么不使用。如果有什么东西(我的一些图书馆)不能正确工作--请告诉我,我会纠正它。并提出问题--"为什么会这样呢?- 你需要更多的知识,因为 "明显不在表面"。
你仍然有很多东西要学。到目前为止,你的假设并不真实。我的函数可以同时为不同的目的服务(为了减少代码本身),特别是fGet_MarketInfo()。一切都经过反复的思考,没有什么需要改变的!
我了解那里的情况。但不清楚为什么要这样实施。
例如,从一个实验开始:在EA主体中声明一个全局变量,并尝试从链接库中调用这个变量。尝试将结果与以b 开头的变量名相联系,例如bs_symbol。
反正你不能以原始形式使用你的库,也就是说,所有东西都被绑定在那里。每一个功能都在一包其他人的身上...
P.S. 我不需要被检查:你要么使用我的图书馆,要么不使用。如果有什么东西(我的一些图书馆)不能正常工作--让我知道,我会解决它。并提出问题--"为什么会有这样的效果?- 你需要更多的知识,因为 "明显性不在于表面"。
我并不是要以任何方式测试它...事实上,毫无疑问,它写得很有能力。只是我不太明白所有的事情,这就是为什么我说我不认为......我看,我想...但我并不是什么都明白。这就是为什么我问。
P.S. 对于bs_symbol我还是不明白。