[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 424 1...417418419420421422423424425426427428429430431432 新评论 Viktar Dzemikhau 2013.06.15 13:12 #4231 gyfto: 那么,从理论上讲,如果额外的指标缓冲区是自我声明的,并使用进一步的趋势线,那么它将工作... 那么为什么文档中说缓冲区的数量不能超过8 这里不清楚。它没有说是主缓冲区的数量,而不是所有的。它说的是缓冲区的数量,仅此而已。所以我读到这里,我的理解是,这应该适用于一个给定指标的缓冲区的总数。 Viktar Dzemikhau 2013.06.15 13:15 #4232 gyfto: 不,我说的是ObjectCreate(),你必须在那里设置窗口号。我向你展示了如何设置它,如果它是一个子窗口(即不是零,也就是主窗口)。 。 所以你在创建对象 时有WindowOnDropped这个函数参数,而且它已经是相对于主窗口的排序。还是主窗口是终端中最左边的窗口? prom18 2013.06.15 13:45 #4233 你好!我不明白为什么买入止损单不被删除。extern double Lots =0.01; extern int Magic =333; extern int StopLoss = 100; // Размер фиксированного стопа extern int TakeProfit = 100; // Размер фиксированного тэйка extern int DistanceSet = 160; // Расстояние от рынка extern int Slippage = 3; // Проскальзывание цены color clOpenBuy = LightBlue; // Цвет ордера BuyStop color clOpenSell = LightCoral; // Цвет ордера SellStop string Name_Expert = "Scalp"; string Symb; bool Work=true; extern bool UseSound = True; // Использовать звуковой сигнал extern string NameFileSound = "expert.wav"; // Наименование звукового файла //============================================================================================ int start() { int Total, Tip=-1, Ticket, TicketB, TicketS, TicketMB, TicketMS, buys, sells, mbuys, msells; double OP_PriceSell, OP_PriceBuy, Lot, Lts, Min_Lot, Max_Lot, Step, Free, One_Lot, Price, SL, TP, TP1, PriceB, PriceS, SLB, SLS; bool Ans =false, Opn_B=false, Opn_S=false, Cls_B=false, Cls_S=false; //============================================================================================ // Учёт ордеров Symb=Symbol(); Total=0; buys=0; sells=0; mbuys=0; msells=0; for(int i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { Total++; if(OrderType()==OP_BUYSTOP) buys++; if(OrderType()==OP_SELLSTOP) sells++; if(OrderType()==OP_BUY) mbuys++; if(OrderType()==OP_SELL) msells++; if(OrderType()==OP_BUYSTOP) TicketB=OrderTicket(); if(OrderType()==OP_SELLSTOP) TicketS=OrderTicket(); Ticket=OrderTicket(); Tip =OrderType(); TP =OrderTakeProfit(); Lot =OrderLots(); } } //============================================================================================ // Открытие ордеров while(true) { if (Total==0) { star(); } break; } //============================================================================================ while(true) { if(Total==2) { if(msells==1) { if(buys==1) { if(OrderType()==OP_BUYSTOP && OrderLots()==Lots) { OrderDelete(Ticket); } } } } if(Total==2) { if(mbuys==1) { if(sells==1) { if(OrderType()==OP_SELLSTOP && OrderLots()==Lots) { OrderDelete(Ticket); } } } } break; } //============================================================================================ return; } //============================================================================================ //+------------------------------------------------------------------+ void star() { double ldStop=0, ldTake=0; double pAsk=Ask+DistanceSet*Point; double pBid=Bid-DistanceSet*Point; if (StopLoss!=0) ldStop=pAsk-StopLoss*Point; if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point; SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake); if (StopLoss!=0) ldStop=pBid+StopLoss*Point; if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point; SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake); } //+------------------------------------------------------------------+ //| Установка ордера | //| Параметры: | //| op - операция | //| pp - цена | //| ldStop - уровень стоп | //| ldTake - уровень тейк | //+------------------------------------------------------------------+ void SetOrder(int op, double pp, double ldStop, double ldTake) { color clOpen; string lsComm=GetCommentForOrder(); if (op==OP_BUYSTOP) clOpen=clOpenBuy; else clOpen=clOpenSell; OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,lsComm,0,0,clOpen); if (UseSound) PlaySound(NameFileSound); } //+------------------------------------------------------------------+ //| Генерирует и возвращает строку коментария для ордера или позиции | //+------------------------------------------------------------------+ string GetCommentForOrder() { return(Name_Expert+" "+GetNameTF(Period())); } //+------------------------------------------------------------------+ //| Возвращает наименование таймфрейма | //+------------------------------------------------------------------+ string GetNameTF(int TimeFrame) { switch (TimeFrame) { case PERIOD_MN1: return("Monthly"); case PERIOD_W1: return("Weekly"); case PERIOD_D1: return("Daily"); case PERIOD_H4: return("H4"); case PERIOD_H1: return("H1"); case PERIOD_M30: return("M30"); case PERIOD_M15: return("M15"); case PERIOD_M5: return("M5"); case PERIOD_M1: return("M1"); default: return("UnknownPeriod"); } } //+------------------------------------------------------------------+ gyfto 2013.06.15 14:19 #4234 hoz: 那么为什么文件中说缓冲区的数量不能超过8个 这就是不清楚的地方。它没有说主缓冲区的数量......不是所有缓冲区。它说的是缓冲区的数量,仅此而已。所以我在读它,它应该适用于一个给定指标的缓冲区的总数。我不是在谈论指标缓冲区,我是在谈论模拟指标缓冲区。在IndicatorCounted()的包装器中有ArrayResize(CustomBuffer, Bars),最右边的趋势线的两端应该按bid重新绘制。hoz: 所以你在创建对象时有一个函数参数--WindowOnDropped,而且它已经是相对于主窗口的一种了。还是主窗口在 终端中的窗口中 最左边? 不,我一开始也很困惑。例如,我们有两个图表打开,欧罗巴和黄金。所以,它们的指数都是零。但如果它们有子窗口,则从一开始就进行编号。例如,我在eurenne图表上抛出了三个指数,在黄金上抛出了两个,所有五个指数都用#property separate_window和所有不同的子窗口。那么eurene将有0、1、2、3的窗口号码,黄金0、1、2。 gyfto 2013.06.15 15:04 #4235 我有一个问题。老实说,我的大脑正在沸腾。如果你能--帮助我。int n=1, limit=3; double result;//или int result, что не столь сейчас важно double temp[]; int start(){ for(int slow=10; slow<=10*limit; slow++){ for(int fast=10; fast<=slow; fast++){ for(int period=1; period<=slow/10; period++){ n++; Print(n-1, ": ", slow-9, ", ", fast-9, ", ", period); //здесь идёт тестирование машки с параметрами slow, fast, period, а результаты тестирования заносим в массив: ArrayResize(temp,n); temp[n-1]=result; } } } //и находим максимальный результат: int max=ArrayMaximum(temp); return(0); }现在有一个问题:我怎样才能通过最大值(即数组中一个项目的位置)恢复慢速、快速、周期 的值?在Print()中给出了数值被放入temp[]的顺序。我把3放在限制中,但任何数字都可以用在这里。下面是前77个值(limit=2)。 10: 4, 4, 1 20: 6, 5, 1 30: 8, 2, 1 40: 9, 4, 1 50: 10, 5, 1 60: 11, 3, 1 70: 11, 8, 1 1: 1, 1, 1 11: 5, 1, 1 21: 6, 6, 1 31: 8, 3, 1 41: 9, 5, 1 51: 10, 6, 1 61: 11, 3, 2 71: 11, 8, 2 2: 2, 1, 1 12: 5, 2, 1 22: 7, 1, 1 32: 8, 4, 1 42: 9, 6, 1 52: 10, 7, 1 62: 11, 4, 1 72: 11, 9, 1 3: 2, 2, 1 13: 5, 3, 1 23: 7, 2, 1 33: 8, 5, 1 43: 9, 7, 1 53: 10, 8, 1 63: 11, 4, 2 73: 11, 9, 2 4: 3, 1, 1 14: 5, 4, 1 24: 7, 3, 1 34: 8, 6, 1 44: 9, 8, 1 54: 10, 9, 1 64: 11, 5, 1 74: 11, 10, 1 5: 3, 2, 1 15: 5, 5, 1 25: 7, 4, 1 35: 8, 7, 1 45: 9, 9, 1 55: 10, 10, 1 65: 11, 5, 2 75: 11, 10, 2 6: 3, 3, 1 16: 6, 1, 1 26: 7, 5, 1 36: 8, 8, 1 46: 10, 1, 1 56: 11, 1, 1 66: 11, 6, 1 76: 11, 11, 1 7: 4, 1, 1 17: 6, 2, 1 27: 7, 6, 1 37: 9, 1, 1 47: 10, 2, 1 57: 11, 1, 2 67: 11, 6, 2 77: 11, 11, 2 8: 4, 2, 1 18: 6, 3, 1 28: 7, 7, 1 38: 9, 2, 1 48: 10, 3, 1 58: 11, 2, 1 68: 11, 7, 1 9: 4, 3, 1 19: 6, 4, 1 29: 8, 1, 1 39: 9, 3, 1 49: 10, 4, 1 59: 11, 2, 2 69: 11, 7, 2 Dmitry Fedoseev 2013.06.15 15:46 #4236 gyfto:我有一个问题。老实说,我的大脑正在沸腾。如果你能--帮助我。现在有一个问题:我怎样才能通过最大值(即数组中一个项目的位置)恢复慢速、快速、周期的值?在Print()中给出了数值被放入temp[]的顺序。我把3放在限制中,但它可以是任何数字。 其中 "n++"检查结果是否为最大值,如果是最大值,则记住慢、快等值。 Dmitry Fedoseev 2013.06.15 15:52 #4237 你可以再做三个数组(或一个三维数组),用于慢速、快速...这样做更好,因为万一你想以某种方式对结果进行排序,总会有测试参数可用。 Dmitry Fedoseev 2013.06.15 15:58 #4238 如果这些动作很频繁,例如每个柱子或10个柱子一次,最好是将结果的数组进行缩放,在initem中用参数值的三个数组,滚动浏览这些循环,用周期值填充数组。然后在一个循环中全部滚动。然后我们将能够使用ArrayMaximum函数,并将事情整理出来。这将使工作尽可能快地进行。 Viktar Dzemikhau 2013.06.15 16:20 #4239 gyfto:不,我一开始也很迷惑。例如,我们有两个图表打开,欧元和黄金。所以,它们的指数都是零。但如果它们有子窗口,则从一开始就进行编号。例如,我在eurenne图表上抛出了三个指数,在黄金上抛出了两个,所有五个指数都用#property separate_window和所有不同的子窗口。那么Eurene将有0、1、2、3的窗口数字,而黄金将有0、1、2。 正是如此!只是我根本不和火鸡打交道,所以我在研究帮助的时候没有注意。这一切都很有意义。gyfto。我不是在谈论指标缓冲区,我是在谈论模拟指标缓冲区。在IndicatorCounted()的封装器中有ArrayResize(CustomBuffer, Bars),最右边的趋势线的末端应该被Bid重新绘制。 而我具体问的是如何在一个图形上画出超过6条线。在哪个窗口(0或其他,这并不重要)。这是我最感兴趣的,也是我一开始就问你的问题。 gyfto 2013.06.15 16:24 #4240 Integer: 其中 "n++"使检查最大的结果,如果最大,记住慢、快等的值 。 没想过这个问题。整数: 你可以再做三个数组(或一个三维数组),用于慢速、快速...这样更好,因为万一你想以某种方式对结果进行排序,总会有测试参数可用。 。 三维是最理想的,但ArrayMaximum() 只对一维起作用,所以你必须把数组收敛成一个线性数组,而且你又得弄清楚所有东西的位置。但我有fastMax=slow,这就是麻烦所在。但三个不同的阵列...我有同样的结果,所以不是一个三维的就是一个线性的。整数: 结果的比例数组 我不知道这个术语,请解释一下。在一个立方体中创建一个长度的线性阵列?好吧,至少已经有了一个选项。通过MathMax(result, resultPrev)。 1...417418419420421422423424425426427428429430431432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
那么,从理论上讲,如果额外的指标缓冲区是自我声明的,并使用进一步的趋势线,那么它将工作...
那么为什么文档中说
不,我说的是ObjectCreate(),你必须在那里设置窗口号。我向你展示了如何设置它,如果它是一个子窗口(即不是零,也就是主窗口)。
。
所以你在创建对象 时有WindowOnDropped这个函数参数,而且它已经是相对于主窗口的排序。还是主窗口是终端中最左边的窗口?
你好!我不明白为什么买入止损单不被删除。
那么为什么文件中说
我不是在谈论指标缓冲区,我是在谈论模拟指标缓冲区。在IndicatorCounted()的包装器中有ArrayResize(CustomBuffer, Bars),最右边的趋势线的两端应该按bid重新绘制。
所以你在创建对象时有一个函数参数--WindowOnDropped,而且它已经是相对于主窗口的一种了。还是主窗口在 终端中的窗口中 最左边?
我有一个问题。老实说,我的大脑正在沸腾。如果你能--帮助我。
现在有一个问题:我怎样才能通过最大值(即数组中一个项目的位置)恢复慢速、快速、周期 的值?在Print()中给出了数值被放入temp[]的顺序。我把3放在限制中,但任何数字都可以用在这里。下面是前77个值(limit=2)。
我有一个问题。老实说,我的大脑正在沸腾。如果你能--帮助我。
现在有一个问题:我怎样才能通过最大值(即数组中一个项目的位置)恢复慢速、快速、周期的值?在Print()中给出了数值被放入temp[]的顺序。我把3放在限制中,但它可以是任何数字。
其中 "n++"检查结果是否为最大值,如果是最大值,则记住慢、快等值。
不,我一开始也很迷惑。例如,我们有两个图表打开,欧元和黄金。所以,它们的指数都是零。但如果它们有子窗口,则从一开始就进行编号。例如,我在eurenne图表上抛出了三个指数,在黄金上抛出了两个,所有五个指数都用#property separate_window和所有不同的子窗口。那么Eurene将有0、1、2、3的窗口数字,而黄金将有0、1、2。
正是如此!只是我根本不和火鸡打交道,所以我在研究帮助的时候没有注意。这一切都很有意义。
我不是在谈论指标缓冲区,我是在谈论模拟指标缓冲区。在IndicatorCounted()的封装器中有ArrayResize(CustomBuffer, Bars),最右边的趋势线的末端应该被Bid重新绘制。
其中 "n++"使检查最大的结果,如果最大,记住慢、快等的值
。
没想过这个问题。
你可以再做三个数组(或一个三维数组),用于慢速、快速...这样更好,因为万一你想以某种方式对结果进行排序,总会有测试参数可用。
。
三维是最理想的,但ArrayMaximum() 只对一维起作用,所以你必须把数组收敛成一个线性数组,而且你又得弄清楚所有东西的位置。但我有fastMax=slow,这就是麻烦所在。但三个不同的阵列...我有同样的结果,所以不是一个三维的就是一个线性的。
结果的比例数组
我不知道这个术语,请解释一下。在一个立方体中创建一个长度的线性阵列?
好吧,至少已经有了一个选项。通过MathMax(result, resultPrev)。