[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 945 1...938939940941942943944945946947948949950951952...1145 新评论 Warstein 2010.11.02 13:02 #9441 artmedia70: https://www.mql5.com/ru/forum/105952 谢谢,但无法找出错误所在...... //+----------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i,limit; if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--; limit = Bars-counted_bars; // for(i=limit; i>=0; i--) { Prices[i] = iMA(NULL,0,1,0,MODE_SMA,PriceType,i); double MaxH = Prices[ArrayMaximum(Prices,period,i)]; double MinL = Prices[ArrayMinimum(Prices,period,i)]; if (MaxH!=MinL) Values[i] = 0.33*2*((Prices[i]-MinL)/(MaxH-MinL)-0.5)+0.67*Values[i+1]; else Values[i] = 0.00; Values[i] = MathMin(MathMax(Values[i],-0.999),0.999); buffer5[i] = 0.5*MathLog((1+Values[i])/(1-Values[i]))+0.5*buffer5[i+1]; if(buffer5[i]==buffer5[i+1]) { buffer1[i]=buffer1[i+1]; buffer2[i]=buffer2[i+1]; buffer3[i]=buffer3[i+1]; buffer4[i]=buffer4[i+1]; continue; } buffer1[i]=EMPTY_VALUE; buffer2[i]=EMPTY_VALUE; buffer3[i]=EMPTY_VALUE; buffer4[i]=EMPTY_VALUE; if(buffer5[i]<0) { if (buffer5[i]<buffer5[i+1]) buffer3[i]=buffer5[i]; if (buffer5[i]>buffer5[i+1]) buffer4[i]=buffer5[i]; } if(buffer5[i]>0) { if (buffer5[i]<buffer5[i+1]) buffer2[i]=buffer5[i]; if (buffer5[i]>buffer5[i+1]) buffer1[i]=buffer5[i]; } } return(0); } [删除] 2010.11.02 13:39 #9442 好心人,请告诉我,我需要一个代码来实现TrailingStop!? 我在网上找到的那些东西不起作用(向前和向后爬)。 Warstein 2010.11.02 13:42 #9443 void TrailPositions() { int Orders = OrdersTotal(); for (int i=0; i<Orders; i++) { if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue; if (OrderSymbol() != Symbol()) continue; { if (OrderType() == OP_BUY) { if (Bid-OrderOpenPrice() > MinProfit*Point) { if (OrderStopLoss() < Bid-(TrailingStop+TrailingStep-1)*Point) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid-TrailingStop*Point,OrderTakeProfit(), 0, 0); if(UseSound == true) { PlaySound(SuccesSound); } } } } if (OrderType() == OP_SELL) { if (OrderOpenPrice()-Ask > MinProfit*Point) { if (OrderStopLoss() > Ask+(TrailingStop+TrailingStep-1)*Point) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask+TrailingStop*Point,OrderTakeProfit(), 0, 0); if(UseSound == true) { PlaySound(SuccesSound); } } } } } } } //+------------------------------------------------------------------+ sergeyka2003: 好心人,请告诉我,我需要一个代码来实现TrailingStop!? 我在网上找到的那些东西不起作用(向前和向后爬)。 Victor Nikolaev 2010.11.02 13:54 #9444 rustein: 谢谢你,但我搞不清楚错误在哪里...... 需要一个完整的指标 Warstein 2010.11.02 14:02 #9445 Vinin: 需要一个完整的指标谢谢 #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Green #property indicator_color2 Red #property indicator_color3 Red #property indicator_color4 Green #property indicator_color5 DimGray #property indicator_width1 2 #property indicator_width3 2 #property indicator_width5 0 // extern int period = 21; int PriceType = PRICE_MEDIAN; double buffer1[]; double buffer2[]; double buffer3[]; double buffer4[]; double buffer5[]; double Prices[]; double Values[]; //+----------------------------------------------------------+ int init() { IndicatorBuffers(7); SetIndexBuffer(0,buffer1); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(1,buffer2); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(2,buffer3); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(3,buffer4); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(4,buffer5); SetIndexBuffer(5,Prices); SetIndexBuffer(6,Values); IndicatorShortName("Fisher ("+period+")"); return(0); } //+----------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i,limit; if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--; limit = Bars-counted_bars; // for(i=limit; i>=0; i--) { Prices[i] = iMA(NULL,0,1,0,MODE_SMA,PriceType,i); double MaxH = Prices[ArrayMaximum(Prices,period,i)]; double MinL = Prices[ArrayMinimum(Prices,period,i)]; if (MaxH!=MinL) Values[i] = 0.33*2*((Prices[i]-MinL)/(MaxH-MinL)-0.5)+0.67*Values[i+1]; else Values[i] = 0.00; Values[i] = MathMin(MathMax(Values[i],-0.999),0.999); buffer5[i] = 0.5*MathLog((1+Values[i])/(1-Values[i]))+0.5*buffer5[i+1]; if(buffer5[i]==buffer5[i+1]) { buffer1[i]=buffer1[i+1]; buffer2[i]=buffer2[i+1]; buffer3[i]=buffer3[i+1]; buffer4[i]=buffer4[i+1]; continue; } buffer1[i]=EMPTY_VALUE; buffer2[i]=EMPTY_VALUE; buffer3[i]=EMPTY_VALUE; buffer4[i]=EMPTY_VALUE; if(buffer5[i]<0) { if (buffer5[i]<buffer5[i+1]) buffer3[i]=buffer5[i]; if (buffer5[i]>buffer5[i+1]) buffer4[i]=buffer5[i]; } if(buffer5[i]>0) { if (buffer5[i]<buffer5[i+1]) buffer2[i]=buffer5[i]; if (buffer5[i]>buffer5[i+1]) buffer1[i]=buffer5[i]; } } return(0); } Victor Nikolaev 2010.11.02 14:10 #9446 在第一次运行时,ArrayMaximum 和ArrayMinimum函数 超出了范围 #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Green #property indicator_color2 Red #property indicator_color3 Red #property indicator_color4 Green #property indicator_color5 DimGray #property indicator_width1 2 #property indicator_width3 2 #property indicator_width5 0 // extern int period = 21; int PriceType = PRICE_MEDIAN; double buffer1[]; double buffer2[]; double buffer3[]; double buffer4[]; double buffer5[]; double Prices[]; double Values[]; //+----------------------------------------------------------+ int init() { IndicatorBuffers(7); SetIndexBuffer(0,buffer1); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(1,buffer2); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(2,buffer3); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(3,buffer4); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(4,buffer5); SetIndexBuffer(5,Prices); SetIndexBuffer(6,Values); IndicatorShortName("Fisher ("+period+")"); return(0); } //+----------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i,limit=Bars-counted_bars; if(limit > 1) limit = Bars-period-1; for(i=limit; i>=0; i--) { Prices[i] = iMA(NULL,0,1,0,MODE_SMA,PriceType,i); double MaxH = Prices[ArrayMaximum(Prices,period,i)]; double MinL = Prices[ArrayMinimum(Prices,period,i)]; if (MaxH!=MinL) Values[i] = 0.33*2*((Prices[i]-MinL)/(MaxH-MinL)-0.5)+0.67*Values[i+1]; else Values[i] = 0.00; Values[i] = MathMin(MathMax(Values[i],-0.999),0.999); buffer5[i] = 0.5*MathLog((1+Values[i])/(1-Values[i]))+0.5*buffer5[i+1]; if(buffer5[i]==buffer5[i+1]) { buffer1[i]=buffer1[i+1]; buffer2[i]=buffer2[i+1]; buffer3[i]=buffer3[i+1]; buffer4[i]=buffer4[i+1]; continue; } buffer1[i]=EMPTY_VALUE; buffer2[i]=EMPTY_VALUE; buffer3[i]=EMPTY_VALUE; buffer4[i]=EMPTY_VALUE; if(buffer5[i]<0) { if (buffer5[i]<buffer5[i+1]) buffer3[i]=buffer5[i]; if (buffer5[i]>buffer5[i+1]) buffer4[i]=buffer5[i]; } if(buffer5[i]>0) { if (buffer5[i]<buffer5[i+1]) buffer2[i]=buffer5[i]; if (buffer5[i]>buffer5[i+1]) buffer1[i]=buffer5[i]; } } return(0); } Warstein 2010.11.02 14:22 #9447 Vinin: 在第一次运行时,ArrayMaximum和ArrayMinimum函数超出了范围 谢谢!!! Александр 2010.11.02 16:35 #9448 试图实施一个简单的逆转。当达到一个停止位置时 --> 打开相反的位置。我不能让它只 打开对面的位置,而不打开其他任何东西。请告知。 Роман 2010.11.02 17:24 #9449 我以如下方式实现了它--这是一个条件--如果前一个头寸以亏损收盘,那么就打开相反的头寸...如果你需要在达到前一个仓位的止损时准确地打开相反的仓位,那么金-伊戈尔-弗拉基米罗维奇在http://www.kimiv.ru/,该功能可以准确地确定如何在止损点关闭订单。因此,当你连接这个函数时,你应该规定条件,如果姿势在达到止损时被关闭。 如果是,你应该打开另一个。 PS: 刚想起来,这个在止损处摆出的收盘fi代码在之前的几页中被贴在这个主题上...看看吧。 //---Поиск последнего отработавшего ордера для открытия очередной позиции --- for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--) { if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY)) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); continue; } if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber)) { continue; } //-------------------------Принимаем в расчет только ордер, закрытый недавно----------------------- if (OrderCloseTime() >= iTime(NULL, 0, 1)) { int lastType = OrderType(); double lastLots = OrderLots(); double lastProfit = OrderProfit() + OrderSwap(); // Print ("lastProfit = ", NormalizeDouble(lastProfit, 1)); // Анализ только что закрывшегося ордера if (lastProfit < 0.0) { //---Ордер закрылся с убытком открываемся в ОБРАТНОМ направлении // ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ... // -----если предыдущий ордер был бай, то открываем очередной ордер lots = NormalizeLots(lots); if (lastType == OP_SELL) OrderSend(Symbol(), OP_BUY, lots,...); if (lastType == OP_BUY) OrderSend(Symbol(), OP_SELL, lots, ...); } return (0); } // Найден закрытый ордер, но он старый break; } Alexandr Bryzgalov 2010.11.02 17:26 #9450 001:试图实施一个简单的逆转。当达到一个停止位置时 --> 打开相反的位置。我不能让它只 打开对面的位置,而不打开其他任何东西。请告知。 如果在止损水平上简单地放置挂单 怎么办?这样就不会有问题了吗? 1...938939940941942943944945946947948949950951952...1145 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
https://www.mql5.com/ru/forum/105952
谢谢,但无法找出错误所在......
好心人,请告诉我,我需要一个代码来实现TrailingStop!?
我在网上找到的那些东西不起作用(向前和向后爬)。
好心人,请告诉我,我需要一个代码来实现TrailingStop!?
我在网上找到的那些东西不起作用(向前和向后爬)。
谢谢你,但我搞不清楚错误在哪里......
需要一个完整的指标
需要一个完整的指标
谢谢
在第一次运行时,ArrayMaximum 和ArrayMinimum函数 超出了范围
在第一次运行时,ArrayMaximum和ArrayMinimum函数超出了范围
试图实施一个简单的逆转。当达到一个停止位置时 --> 打开相反的位置。我不能让它只 打开对面的位置,而不打开其他任何东西。请告知。
我以如下方式实现了它--这是一个条件--如果前一个头寸以亏损收盘,那么就打开相反的头寸...如果你需要在达到前一个仓位的止损时准确地打开相反的仓位,那么金-伊戈尔-弗拉基米罗维奇在http://www.kimiv.ru/,该功能可以准确地确定如何在止损点关闭订单。因此,当你连接这个函数时,你应该规定条件,如果姿势在达到止损时被关闭。 如果是,你应该打开另一个。
PS: 刚想起来,这个在止损处摆出的收盘fi代码在之前的几页中被贴在这个主题上...看看吧。
试图实施一个简单的逆转。当达到一个停止位置时 --> 打开相反的位置。我不能让它只 打开对面的位置,而不打开其他任何东西。请告知。