任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 168 1...161162163164165166167168169170171172173174175...1178 新评论 Virtuon 2013.10.02 14:30 #1671 请告诉我我做错了什么。我正试图做一个简单的指标。 { int limit,i; double last; int counted_bars = IndicatorCounted(); //---- check for possible errors if (counted_bars < 0) return(-1); //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars; //---- for(i=limit; i>=0; i--) { double OptClose = Close[i]*10000; if (MathMod(OptClose,step1)==0) { Buffer0[i] = Close[i]; last = Close[i]; } else Buffer0[i] = last; } //---- return(0); } //+------------------------------------------------------------------+ 它在图表窗口中工作,但当我试图在专家顾问中测试它时,它要么画出什么,要么 "没有步骤"。 PapaYozh 2013.10.02 16:29 #1672 Virtuon: 请告诉我我做错了什么。我正试图做一个简单的指标。 它在图表窗口中工作,但当我试图在专家顾问中测试它时,它要么画出什么,要么 "没有步骤"。 if (MathMod(OptClose,step1)==0) Buffer0[i] = Close[i]; else Buffer0[i] = Buffer0[i+1]; Virtuon 2013.10.02 16:44 #1673 PapaYozh: 试过了。即使只是在窗口也不能这样做。显然,这里有某种诀窍。它现在是这样工作的,但速度慢得可怕。 for(i=WindowBarsPerChart(); i>=0; i--) { double OptClose = Close[i]*10000; if (MathMod(i+step1,step1)==0) { Buffer0[i] = Close[i]; last = Close[i]; } else Buffer0[i] = last; Comment(Buffer0[WindowBarsPerChart()]," ",Buffer0[0]); } 这是在禁用最后一栏重新计算检查的情况下。 Mepkypuu 2013.10.02 18:18 #1674 你好,MQL4的编程大师们!请告诉我这是如何做到的。 一段程序代码。 LogAdd("Начинаю вычисления переменных для текущего тика ... "); for (int i = OrdersTotal()-1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS); LogAdd("Выбираю ордер с тикетом: " + i); if ((OrderOpenTime() > opnTime) && (OrderType() == OP_BUY) || (OrderType() == OP_SELL)) { opnTime = OrderOpenTime(); currentTicket = OrderTicket(); currentStopLoss = OrderStopLoss(); LogAdd("Ордер открыт позже предыдущего, не является отложенным. Записываю переменные: opnTime - " + opnTime + ", currentTicket - " + currentTicket + ", currentStopLoss - " + currentStopLoss + "."); } if (OrderType() == OP_BUY) { buyCntr ++; buyOpnPrice = OrderOpenPrice(); lotsSumBuy += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - " + buyCntr + ", buyOpnPrice - " + buyOpnPrice + ", lotsSumBuy - " + lotsSumBuy + "."); } if (OrderType() == OP_SELL) { sellCntr ++; sellOpnPrice = OrderOpenPrice(); lotsSumSell += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - " + sellCntr + ", sellOpnPrice - " + sellOpnPrice + ", lotsSumSell - " + lotsSumSell + "."); } if (OrderType() == OP_SELLSTOP) { sellOpnPrice = OrderOpenPrice(); LogAdd("Ордер является отложенным, тип ордера - на продажу, фиксирую цену открытия: sellOpnPrice - " + sellOpnPrice + "."); } if (OrderType() == OP_BUYSTOP) { buyOpnPrice = OrderOpenPrice(); LogAdd("Ордер является отложенным, тип ордера - на покупку, фиксирую цену открытия: buyOpnPrice - " + buyOpnPrice + "."); } } LogAdd("Вычисления переменных для текущего тика завершены."); 本节的一篇日志。 2013.10.2 15:59:0 - Начинаю вычисления переменных для текущего тика ... 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 5 2013.10.2 15:59:0 - Ордер является отложенным, тип ордера - на продажу, фиксирую цену открытия: sellOpnPrice - 1.35250000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 4 2013.10.2 15:59:0 - Ордер открыт позже предыдущего, не является отложенным. Записываю переменные: opnTime - 1380728738, currentTicket - 93537240, currentStopLoss - 0.00000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - 1, buyOpnPrice - 1.35620000, lotsSumBuy - 0.06000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 1, sellOpnPrice - 1.35250000, lotsSumSell - 0.01000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 3 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 2, sellOpnPrice - 1.35250000, lotsSumSell - 0.04000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 2 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - 2, buyOpnPrice - 1.35620000, lotsSumBuy - 0.07000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 3, sellOpnPrice - 1.35250000, lotsSumSell - 0.05000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 1 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - 3, buyOpnPrice - 1.35620000, lotsSumBuy - 0.08000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 4, sellOpnPrice - 1.35250000, lotsSumSell - 0.06000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 0 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 5, sellOpnPrice - 1.35250000, lotsSumSell - 0.07000000. 2013.10.2 15:59:0 - Вычисления переменных для текущего тика завершены. 问题是,对于同样的订单,这些条件如何能够发挥作用。 if (OrderType() == OP_BUY) { ... } if (OrderType() == OP_SELL) { ... } 我有些不明白,但后来在逻辑上发现,对于这个订单。 OP_BUY == OP_SELL 基本上我不关心为什么会发生这种情况,重要的是sellCntr++和buyCntr++对于某种类型的未平仓订单是明确执行的,帮我解决这个问题? Vladyslav Goshkov 2013.10.02 18:34 #1675 Mepkypuu: 你好,MQL4的编程大师们!请告诉我这是如何做到的。 一段程序代码。 本节的一篇日志。 问题是,对于同样的订单,这些条件如何 能够发挥作用。 我有些不明白,但后来在逻辑上发现,对于这个订单。 基本上我不关心为什么会发生这种情况,重要的是sellCntr++和buyCntr++对于某种类型的未平仓订单是明确执行的,帮我解决这个问题? 你怎么知道它是相同的顺序?你不打印票据;)....我相信:在拖网时,会有溢出的订单;)- 诱发的错误来自于此。 TrailingByShadows(OrderTicket(), Period(), 11, 0); ?????????????????????????????? Вы при трале разве ордера не перебираете ?????????? Mepkypuu 2013.10.02 18:53 #1676 VladislavVG: 你怎么能确定它是相同的顺序?你不打印票据;)....我确信:当你拖网时,订单是超额采样的;)- 诱发的错误来自于此。 从逻辑上讲,如果我已经知道我需要拖动哪一个具体的订单,为什么还要去看拖动中的订单?没有蛮力,这里是代码。 void TrailingByShadows(int ticket,int tmfrm,int bars_n, int indent) { int i; double new_extremum; if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET))) { Print("Трейлинг функцией TrailingByShadows() невозможен из-за некорректности значений переданных ей аргументов."); return(0); } if (OrderType()==OP_BUY) { for(i = 1; i <= bars_n; i++) { if (i == 1) new_extremum = iLow(Symbol(), tmfrm, i); else if (new_extremum > iLow(Symbol(), tmfrm, i)) new_extremum = iLow(Symbol(), tmfrm, i); } if(((new_extremum - indent * Point) > OrderStopLoss() + 1.0 * Point) || (OrderStopLoss() == 0)) if((new_extremum - indent * Point) > OrderOpenPrice()) if(new_extremum - indent * Point < Bid - MarketInfo(Symbol(), MODE_STOPLEVEL) * Point) if(AcountProfitEx(new_extremum) > ProfitSize) OrderModify(ticket, OrderOpenPrice(), new_extremum - indent * Point, OrderTakeProfit(), OrderExpiration()); } if (OrderType() == OP_SELL) { for(i = 1; i <= bars_n; i++) { if (i == 1) new_extremum = iHigh(Symbol(), tmfrm, i); else if (new_extremum < iHigh(Symbol(), tmfrm, i)) new_extremum = iHigh(Symbol(), tmfrm, i); } if (((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD)) * Point) < OrderStopLoss() - 1.0 * Point) || (OrderStopLoss() == 0)) if ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD)) * Point) < OrderOpenPrice()) if ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD)) * Point > Ask + MarketInfo(Symbol(),MODE_STOPLEVEL) * Point)) if (AcountProfitEx(new_extremum) > ProfitSize) OrderModify(ticket, OrderOpenPrice(), new_extremum + (indent + MarketInfo(Symbol(), MODE_SPREAD)) * Point, OrderTakeProfit(), OrderExpiration()); } } PS:顺便说一下,这个问题只发生在真实条件下,也就是说,它不会在测试器中再现。 Юсуфходжа 2013.10.02 22:32 #1677 亲爱的程序员们,请你们告诉我,为什么当我再次重启电脑时,当我打开终端而不是正常的图表时,我看到的是一个灰色的窗口,并且失去了未结头寸、EA、指标,但当我打开一个新的图表时,头寸出现了,但没有EA和指标,我不得不重新安装它们。这跟它有什么关系?我不得不再次安装它们。 谢谢你。 Konstantin 2013.10.02 23:56 #1678 出现了这样一个问题。策略测试器 只工作一次。更确切地说,可视化测试被触发了一次,接下来你按下 "开始 "按钮时,"可视化 "复选框被重置,什么都没有发生(有点像没有发生)。这怎么能被打败呢? Vladyslav Goshkov 2013.10.03 02:31 #1679 Mepkypuu: 从逻辑上讲,如果我已经知道我需要拖动哪一个具体的订单,为什么还要去看拖动中的订单?没有蛮力,这是代码。 PS:顺便说一下,这个问题只发生在真实条件下,也就是说,它不会在测试器中再现。 试着在这个变体中运行它。 LogAdd("Начинаю вычисления переменных для текущего тика ... "); for (int i = OrdersTotal()-1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS)) continue; int OrdType=OrderType() ; int OrdTckt = OrderTicket(); LogAdd("Выбираю ордер ( "+i+" ) с тикетом: " + OrdTckt); if ((OrderOpenTime() > opnTime) && (OrdType == OP_BUY) || (OrdType == OP_SELL)) { opnTime = OrderOpenTime(); currentTicket = OrderTicket(); currentStopLoss = OrderStopLoss(); LogAdd("Ордер открыт позже предыдущего, не является отложенным. Записываю переменные: opnTime - " + opnTime + ", currentTicket - " + currentTicket + ", currentStopLoss - " + currentStopLoss + "."); } if (OrdType == OP_BUY) { buyCntr ++; buyOpnPrice = OrderOpenPrice(); lotsSumBuy += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - " + buyCntr + ", buyOpnPrice - " + buyOpnPrice + ", lotsSumBuy - " + lotsSumBuy + "."); } if (OrdType== OP_SELL) { sellCntr ++; sellOpnPrice = OrderOpenPrice(); lotsSumSell += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - " + sellCntr + ", sellOpnPrice - " + sellOpnPrice + ", lotsSumSell - " + lotsSumSell + "."); } if (OrderType() == OP_SELLSTOP) { sellOpnPrice = OrderOpenPrice(); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" является отложенным, тип ордера - на продажу, фиксирую цену открытия: sellOpnPrice - " + sellOpnPrice + "."); } if (OrderType() == OP_BUYSTOP) { buyOpnPrice = OrderOpenPrice(); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" является отложенным, тип ордера - на покупку, фиксирую цену открытия: buyOpnPrice - " + buyOpnPrice + "."); } } LogAdd("Вычисления переменных для текущего тика завершены."); 看看日志会怎么说。 gyfto 2013.10.03 03:31 #1680 是否可以通过程序设置缩进,而不是通过模板?我可以通过以下方式获得缩进尺寸 WindowBarsPerChart() - WindowFirstVisibleBar() - 2;你可以,但如何暴露它。添加看来你可以通过模板以编程方式进行。创建一个有指标的模板,用_lread kernel32.dll 读取shift_size值,用 _lwrite在那里写一个从10到50的数字,像这样的范围可以接受这个参数,然后通过InternalMsg加载一个模板。但我们不知道它是33511还是35511。在WinUser32.mqh中,它是第一个选项,而在论坛中它是第二个选项。这个问题必须是针对顺子的。在MT5中,这要容易得多。CHART_SHIFT_SIZE 可以通过ChartSetString() 和 ChartGetString()在代码中的任何一点获得...也许在MT4中还有其他选择?愚蠢的问题,虽然... 1...161162163164165166167168169170171172173174175...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
请告诉我我做错了什么。我正试图做一个简单的指标。
它在图表窗口中工作,但当我试图在专家顾问中测试它时,它要么画出什么,要么 "没有步骤"。
请告诉我我做错了什么。我正试图做一个简单的指标。
它在图表窗口中工作,但当我试图在专家顾问中测试它时,它要么画出什么,要么 "没有步骤"。
试过了。即使只是在窗口也不能这样做。显然,这里有某种诀窍。它现在是这样工作的,但速度慢得可怕。
这是在禁用最后一栏重新计算检查的情况下。
你好,MQL4的编程大师们!请告诉我这是如何做到的。
一段程序代码。
本节的一篇日志。
问题是,对于同样的订单,这些条件如何能够发挥作用。我有些不明白,但后来在逻辑上发现,对于这个订单。
基本上我不关心为什么会发生这种情况,重要的是sellCntr++和buyCntr++对于某种类型的未平仓订单是明确执行的,帮我解决这个问题?你好,MQL4的编程大师们!请告诉我这是如何做到的。
一段程序代码。
本节的一篇日志。
问题是,对于同样的订单,这些条件如何 能够发挥作用。我有些不明白,但后来在逻辑上发现,对于这个订单。
基本上我不关心为什么会发生这种情况,重要的是sellCntr++和buyCntr++对于某种类型的未平仓订单是明确执行的,帮我解决这个问题?TrailingByShadows(OrderTicket(), Period(), 11, 0); ?????????????????????????????? Вы при трале разве ордера не перебираете ??????????
你怎么能确定它是相同的顺序?你不打印票据;)....我确信:当你拖网时,订单是超额采样的;)- 诱发的错误来自于此。
从逻辑上讲,如果我已经知道我需要拖动哪一个具体的订单,为什么还要去看拖动中的订单?没有蛮力,这里是代码。
PS:顺便说一下,这个问题只发生在真实条件下,也就是说,它不会在测试器中再现。出现了这样一个问题。策略测试器 只工作一次。更确切地说,可视化测试被触发了一次,接下来你按下 "开始 "按钮时,"可视化 "复选框被重置,什么都没有发生(有点像没有发生)。这怎么能被打败呢?
从逻辑上讲,如果我已经知道我需要拖动哪一个具体的订单,为什么还要去看拖动中的订单?没有蛮力,这是代码。
PS:顺便说一下,这个问题只发生在真实条件下,也就是说,它不会在测试器中再现。试着在这个变体中运行它。
看看日志会怎么说。
WindowBarsPerChart() - WindowFirstVisibleBar() - 2;
你可以,但如何暴露它。
添加
看来你可以通过模板以编程方式进行。创建一个有指标的模板,用_lread kernel32.dll 读取shift_size值,用 _lwrite在那里写一个从10到50的数字,像这样的范围可以接受这个参数,然后通过InternalMsg加载一个模板。但我们不知道它是33511还是35511。在WinUser32.mqh中,它是第一个选项,而在论坛中它是第二个选项。这个问题必须是针对顺子的。在MT5中,这要容易得多。CHART_SHIFT_SIZE 可以通过ChartSetString() 和 ChartGetString()在代码中的任何一点获得...也许在MT4中还有其他选择?愚蠢的问题,虽然...