编码帮助......我如何让指标过滤而不是警报? - 页 4 1234567891011 新评论 eli 2006.06.30 13:49 #31 Aaragorn: 我把它归结为这一点......但是等等......。 如果这只是用这一个柱子的简单移动平均线乘以3.5来寻找一个高点。这个点怎么可能达到呢?线值不是从必须触及它才能发出信号的同一个柱子上计算的吗?随着条形图的上升,边缘线也在上升? 移动平均线 如果从1个以上的条形图中计算 ,所以线可以是一个值,而价格是另一个值。 [删除] 2006.06.30 14:03 #32 elihayun: 如果你想知道上线是否接近价格,一种方法是如果它们之间的差异很小(比方说2点)。我不在乎(这不是一个好主意)价格是否在线下或线上。对我来说,2个点的距离就够了。因此,差异是 上方 - 高方会 给你差值,但不是以点为单位(它是像0.0004或-0.0004)。为了确保差值是正的,我们使用了MathAbs 函数,它返回绝对值(正)。现在我们必须检查它是否小于2点。当价格上升1点时,保留字Point 将返回该值。每个货币对都是不同的。 把它放在一起 如果(MathAbs(upper - High)< 2*Point) 意味着差异小于2点,对我们来说已经很接近了。 事实上,使用High并不好,因为High可能在上面,但当前的价格却很远。我们必须使用Ask 而不是High(在指标中我们必须使用Close[x])。 为了确保价格在该线之上,我们可以这样做 if ((Ask > upper) && (Ask - upper < 2 * Point)) .....(alert or open a trade) [/PHP] 你很好地回答了我这么多的问题,我希望我没有让你疲惫不堪 ,我很想学习。 我理解绝对值。我想知道使用问价而不是收盘价会有什么变化?使用收盘价不好吗?该点不是要乘以2吗?是我把'*'符号解释错了,还是那是乘法符号? 我看到ask-upper给出的是上线和现在的问价之间的差值。但把点乘以2?我不知道这样做的结果是什么,可以用来进行比较。 我是否可以这样做,只允许在信号发生在我的过滤买入公差以下时买入? [php] extern double longrange = 25; //--在不允许买入之前,允许接近顶部波段线的距离。 extern double shortrange = 20; //--允许接近底部波段线的距离,然后禁止卖出。 // 入场 if(total < 2 || isNewSumbol(Symbol()))//我也修改了if条件:原来是total<1 (orBanAway aka cucurucu) { double HedgeLots = (HedgePercent/100)*Lots; //计算对冲仓位的手数 如果(isCrossed == 1 && Ask < upper-longgrange) { 如果(UseStopLoss) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,note,MAGICMA,0,Green)。 否则 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,注释,MAGICMA,0,Green)。 如果(ticket>0) { 如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY订单打开:",OrderOpenPrice())。 } else Print("打开BUY订单出错。",GetLastError())。 eli 2006.06.30 14:11 #33 你错过了一件事。为了理解该点的内容,请想象以下情况 USDJPY的价格是114.95,EURUSD的价格是1.2773。 因此,在美元指数中,问价 - 上限将是这样的。114.95 - 114.93 = 0.02 而在欧元兑美元中,价格将是1.2773 - 1.2771 = 0.0002 两者都是2个点,但精度不同,所以在USDJPY中我们必须把2乘以0.01,在EURUSD中我们必须把它乘以0.0001,在每个货币对中这正是点 的意义。 [删除] 2006.06.30 14:15 #34 elihayun: 移动平均线如果是由1个以上的柱子计算的 ,所以线可以是一个值,而价格是另一个值。 正是如此!它怎么可能是只有一个柱子的平均值? //----------channel filter int x = 0; double middle2= iMA(NULL, 0, back, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands double avg; avg = findAvg(back, x); double upper = middle2 + (3.5*avg); double lower = middle2 - (3.5*avg); [/PHP] I don't see how this works....also the compiler say, 'findAvg' - function is not defined it's looking for the shift value x which is zero so that is only going to be the current bar right? So what is it averaging? ok let me see what might be...if i'm telling it to go 'back' 300 periods that is what it's averaging is 300 periods. ok i get it now i think.... now about the undefined function error? what do I do about that? just get rid of it as unnecessary? [PHP]//----------channel filter int x = 0; double middle2= iMA(NULL, 0, back, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands double avg; avg = (back, x); double upper = middle2 + (3.5*avg); double lower = middle2 - (3.5*avg); Coding help..How do I Help adding indicator as iMA() in EA is [删除] 2006.06.30 14:25 #35 elihayun: 你错过了一件事。为了理解 "点 "的含义,请想象一下 在USDJPY中的价格是114.95,在EURUSD中的价格是1.2773。因此,在USDJPY的问价------上限将是:114.95 - 114.93 = 0.02而在欧元兑美元中,价格将是1.2773 - 1.2771 = 0.0002 两者都是2个点,但精度不同,所以在美元兑日元中,我们必须将2乘以0.01,在欧元兑美元中,我们必须将其乘以0.0001,在每个货币对中,这正是点 的意义。 好吧,我看到了问题所在......我想做的是根据接近上下线的程度创建一个障碍,超过这个障碍 就不允许交易。 -因此,首先我得到该线的当前值。 -然后我加减我想定义为不能容忍交易的距离,作为一个整数,我认为是1=1点的移动。 -然后,我必须得到每一个点的价格值,以便进行比较。 所以这一行应该是 "price_Typical "以外的东西。 double middle2= iMA(NULL, 0, back, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands 我不知道如何保持不同的精确性,以免造成问题。我想做的是比较价格的变化与线的变化,这将指定 "不要在此水平以上做多 "或 "不要在此水平以下做空"。 我已经准备好休息了,我的大脑已经变成了浆糊。 Coding help..How do I Help adding indicator as 利用模糊逻辑创建指标的简单示例 eli 2006.06.30 14:31 #36 PRICE_TYPICAL与此无关。你可以在MQL4的帮助中了解它。 你所要做的就是找出价格和线之间的差异,用一个减去另一个。正如我所说的,问题是有时你得到0.0006,有时你得到0.06,而这个点正在解决。 (我现在要关门了。我们明天再继续) [删除] 2006.06.30 14:32 #37 elihayun: 你错过了一件事。为了理解点的内容,请想象一下在USDJPY中的价格是114.95,在EURUSD中的价格是1.2773。 因此,在USDJPY的问价------上限将是:114.95 - 114.93 = 0.02 在欧元兑美元中,价格将是1.2773 - 1.2771 = 0.0002 两者都是2个点,但精度不同,所以在USDJPY中我们必须将2乘以0.01,在EURUSD中我们必须将其乘以0.0001,在每个货币对中这正是Point 的作用。 所以这一点就像在每个货币对中跟踪点的移动,而不考虑不同的精度要求? [删除] 2006.06.30 14:34 #38 elihayun: PRICE_TYPICAL与此无关,你可以在MQL4的帮助中了解它。你所要做的就是找出价格和线之间的差异,用一个减去另一个。正如我所说的,问题是有时你得到0.0006,有时你得到0.06,这一点正在解决。 (我现在要关闭了。我们明天再继续) 非常感谢您的耐心和鼓励。 [删除] 2006.06.30 15:34 #39 这就是我所做的.... //----------channel filter double upLevel = iCustom(NULL,TF, "Trend Bands v2", back, 0, 0); double LowLevel = iCustom(NULL,TF, "Trend Bands v2", back, 2, 0); // ENTRY if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu) { double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position if(isCrossed == 1 && Ask < upLevel-longrange) { if(UseStopLoss) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); else ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); //###################################################################### the added code starts here if(UseStopLoss) ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); else ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); //###################################################################### ends here return(0); } if(isCrossed == 2 && Ask > LowLevel + shortrange) { if(UseStopLoss) ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); else ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); //###################################################################### the added code starts here if(UseStopLoss) ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); else ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); //###################################################################### ends here return(0); } return(0); } return(0); } return(0); } } //+------------------------------------------------------------------+[/PHP] this is what I got from the tester.... [PHP]2006.06.30 11:18:09 2006.06.06 14:00 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:09 2006.06.06 12:14 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:09 2006.06.06 10:26 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:09 2006.06.05 22:47 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:09 2006.06.05 09:00 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 11:18:09 2006.06.05 08:41 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 11:18:09 2006.06.05 07:30 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 11:18:09 2006.06.05 07:29 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 11:18:08 2006.06.02 19:55 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 11:18:08 2006.06.01 11:27 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:08 2006.06.01 06:45 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:08 2006.06.01 04:00 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:08 2006.06.01 02:44 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:08 2006.06.01 00:37 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge 2006.06.30 11:18:00 2006.05.31 04:00 Trend Bands v2 EURUSD,M30: loaded successfully 2006.06.30 11:18:00 EMA_CROSSv5 EURUSD,M5: Tester comment: ---------------------------------------- TakeProfit=10 | TrailingStop=20 | StopLoss=20 | UseStopLoss=False ---------------------------------------- immediate_trade=True | reversal=False ---------------------------------------- Lots=1 | MM=True | Risk=10% ---------------------------------------- 2006.06.30 11:18:00 EMA_CROSSv5 inputs: TakeProfit=10; TrailingStop=20; StopLoss=20; ShortEma=1; LongEma=5; Lots=1; HedgePercent=1; StartHour=0; StopHour=23; Risk=10; MAGICMA=20060301; longrange=1; shortrange=1; back=30; TF=30; 2006.06.30 11:17:35 EMA_CROSSv5: loaded successfully 报告显示,它得到了设置,但空白....。 很明显,它不允许交易,但所有的交易都不允许?我觉得这很难让人相信,因为我只把多头和空头范围设置为1!?在这个范围内肯定有一些交易信号?我不认为这是在做我想做的事情。 附加的文件: mac5.htm 5 kb Coding help..How do I [存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. Help adding indicator as [删除] 2006.06.30 16:25 #40 我改变了趋势带指标,使其更加灵活。 extern int period = 34; extern int factor = 8; avg = findAvg(period, x); upper[x] = middle2 + (factor*avg); lower[x] = middle2 - (factor*avg);[/PHP] then i did this to the EA //---- Trend Bands v2 and Filter Parameters extern double back = 300; //--how many periods back for the custom indicator to average extern double bandwidth = 6; //--how wide the trend bands are extern double TF = 30; //--which bar period for the custom indicator to use //----------channel filter double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0); double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0); I got this from the tester...(slightly abbreviated report).. [PHP]2006.06.30 12:10:38 2006.06.29 23:59 Trend Bands v3 EURUSD,M30: removed 2006.06.30 12:10:38 2006.06.29 20:21 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:21 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:20 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:20 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:16 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:16 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:15 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:15 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:12 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:12 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:04 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:04 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:03 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:03 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:00 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 20:00 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 20:00 Trend Bands v3 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 12:10:38 2006.06.29 19:59 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:59 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:32 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:32 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:25 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:25 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:21 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:21 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:20 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:20 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:09 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:09 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:08 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:08 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 19:06 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 19:06 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 18:35 Trend Bands v3 EURUSD,M30: Alert: EURUSD 30 reach upper edge 2006.06.30 12:10:38 2006.06.29 18:16 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:38 2006.06.29 18:16 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 18:15 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131 2006.06.30 12:10:38 2006.06.29 18:15 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131 2006.06.30 12:10:37 2006.06.29 00:00 Trend Bands v3 EURUSD,M30: loaded successfully 2006.06.30 12:10:37 EMA_CROSSv5 EURUSD,M5: Tester comment: ---------------------------------------- TakeProfit=10 | TrailingStop=20 | StopLoss=20 | UseStopLoss=False ---------------------------------------- immediate_trade=True | reversal=False ---------------------------------------- Lots=1 | MM=True | Risk=10% ---------------------------------------- 2006.06.30 12:10:37 EMA_CROSSv5 inputs: TakeProfit=10; TrailingStop=20; StopLoss=20; ShortEma=1; LongEma=5; Lots=1; HedgePercent=1; StartHour=0; StopHour=23; Risk=10; MAGICMA=20060301; back=300; bandwidth=6; TF=30; 在这之后我把带宽移到了20,这样它就不会碰到波段了......它还是给我 "错误开盘131" ERR_INVALID_TRADE_VOLUME 131无效的交易量。 这到底是怎么回事? Coding help..How do I ASCTrend system BrainSystem: Trading System Development 1234567891011 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我把它归结为这一点......但是等等......。
如果这只是用这一个柱子的简单移动平均线乘以3.5来寻找一个高点。这个点怎么可能达到呢?线值不是从必须触及它才能发出信号的同一个柱子上计算的吗?随着条形图的上升,边缘线也在上升?
移动平均线 如果从1个以上的条形图中计算 ,所以线可以是一个值,而价格是另一个值。
如果你想知道上线是否接近价格,一种方法是如果它们之间的差异很小(比方说2点)。
我不在乎(这不是一个好主意)价格是否在线下或线上。对我来说,2个点的距离就够了。因此,差异是
上方 - 高方会 给你差值,但不是以点为单位(它是像0.0004或-0.0004)。为了确保差值是正的,我们使用了MathAbs 函数,它返回绝对值(正)。现在我们必须检查它是否小于2点。当价格上升1点时,保留字Point 将返回该值。每个货币对都是不同的。
把它放在一起
如果(MathAbs(upper - High)< 2*Point) 意味着差异小于2点,对我们来说已经很接近了。
事实上,使用High并不好,因为High可能在上面,但当前的价格却很远。我们必须使用Ask 而不是High(在指标中我们必须使用Close[x])。
为了确保价格在该线之上,我们可以这样做
if ((Ask > upper) && (Ask - upper < 2 * Point))
.....(alert or open a trade)
[/PHP]你很好地回答了我这么多的问题,我希望我没有让你疲惫不堪 ,我很想学习。
我理解绝对值。我想知道使用问价而不是收盘价会有什么变化?使用收盘价不好吗?该点不是要乘以2吗?是我把'*'符号解释错了,还是那是乘法符号?
我看到ask-upper给出的是上线和现在的问价之间的差值。但把点乘以2?我不知道这样做的结果是什么,可以用来进行比较。
我是否可以这样做,只允许在信号发生在我的过滤买入公差以下时买入?
[php]
extern double longrange = 25; //--在不允许买入之前,允许接近顶部波段线的距离。
extern double shortrange = 20; //--允许接近底部波段线的距离,然后禁止卖出。
// 入场
if(total < 2 || isNewSumbol(Symbol()))//我也修改了if条件:原来是total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //计算对冲仓位的手数
如果(isCrossed == 1 && Ask < upper-longgrange)
{
如果(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,note,MAGICMA,0,Green)。
否则
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,注释,MAGICMA,0,Green)。
如果(ticket>0)
{
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY订单打开:",OrderOpenPrice())。
}
else Print("打开BUY订单出错。",GetLastError())。你错过了一件事。为了理解该点的内容,请想象以下情况
USDJPY的价格是114.95,EURUSD的价格是1.2773。
因此,在美元指数中,问价 - 上限将是这样的。114.95 - 114.93 = 0.02
而在欧元兑美元中,价格将是1.2773 - 1.2771 = 0.0002
两者都是2个点,但精度不同,所以在USDJPY中我们必须把2乘以0.01,在EURUSD中我们必须把它乘以0.0001,在每个货币对中这正是点 的意义。
移动平均线如果是由1个以上的柱子计算的 ,所以线可以是一个值,而价格是另一个值。
正是如此!它怎么可能是只有一个柱子的平均值?
int x = 0;
double middle2= iMA(NULL, 0, back, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands
double avg;
avg = findAvg(back, x);
double upper = middle2 + (3.5*avg);
double lower = middle2 - (3.5*avg); [/PHP]
I don't see how this works....also the compiler say, 'findAvg' - function is not defined
it's looking for the shift value x which is zero so that is only going to be the current bar right? So what is it averaging?
ok let me see what might be...if i'm telling it to go 'back' 300 periods that is what it's averaging is 300 periods. ok i get it now i think....
now about the undefined function error? what do I do about that? just get rid of it as unnecessary?
[PHP]//----------channel filter
int x = 0;
double middle2= iMA(NULL, 0, back, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands
double avg;
avg = (back, x);
double upper = middle2 + (3.5*avg);
double lower = middle2 - (3.5*avg);你错过了一件事。为了理解 "点 "的含义,请想象一下
在USDJPY中的价格是114.95,在EURUSD中的价格是1.2773。
因此,在USDJPY的问价------上限将是:114.95 - 114.93 = 0.02
而在欧元兑美元中,价格将是1.2773 - 1.2771 = 0.0002
两者都是2个点,但精度不同,所以在美元兑日元中,我们必须将2乘以0.01,在欧元兑美元中,我们必须将其乘以0.0001,在每个货币对中,这正是点 的意义。好吧,我看到了问题所在......我想做的是根据接近上下线的程度创建一个障碍,超过这个障碍 就不允许交易。
-因此,首先我得到该线的当前值。
-然后我加减我想定义为不能容忍交易的距离,作为一个整数,我认为是1=1点的移动。
-然后,我必须得到每一个点的价格值,以便进行比较。
所以这一行应该是 "price_Typical "以外的东西。
double middle2= iMA(NULL, 0, back, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands
我不知道如何保持不同的精确性,以免造成问题。我想做的是比较价格的变化与线的变化,这将指定 "不要在此水平以上做多 "或 "不要在此水平以下做空"。
我已经准备好休息了,我的大脑已经变成了浆糊。
PRICE_TYPICAL与此无关。你可以在MQL4的帮助中了解它。
你所要做的就是找出价格和线之间的差异,用一个减去另一个。正如我所说的,问题是有时你得到0.0006,有时你得到0.06,而这个点正在解决。
(我现在要关门了。我们明天再继续)
你错过了一件事。为了理解点的内容,请想象一下
在USDJPY中的价格是114.95,在EURUSD中的价格是1.2773。
因此,在USDJPY的问价------上限将是:114.95 - 114.93 = 0.02
在欧元兑美元中,价格将是1.2773 - 1.2771 = 0.0002
两者都是2个点,但精度不同,所以在USDJPY中我们必须将2乘以0.01,在EURUSD中我们必须将其乘以0.0001,在每个货币对中这正是Point 的作用。所以这一点就像在每个货币对中跟踪点的移动,而不考虑不同的精度要求?
PRICE_TYPICAL与此无关,你可以在MQL4的帮助中了解它。
你所要做的就是找出价格和线之间的差异,用一个减去另一个。正如我所说的,问题是有时你得到0.0006,有时你得到0.06,这一点正在解决。
(我现在要关闭了。我们明天再继续)非常感谢您的耐心和鼓励。
这就是我所做的....
double upLevel = iCustom(NULL,TF, "Trend Bands v2", back, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v2", back, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel-longrange)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### ends here
return(0);
}
if(isCrossed == 2 && Ask > LowLevel + shortrange)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### ends here
return(0);
}
return(0);
}
return(0);
}
return(0);
}
}
//+------------------------------------------------------------------+[/PHP]
this is what I got from the tester....
[PHP]2006.06.30 11:18:09 2006.06.06 14:00 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:09 2006.06.06 12:14 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:09 2006.06.06 10:26 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:09 2006.06.05 22:47 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:09 2006.06.05 09:00 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 11:18:09 2006.06.05 08:41 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 11:18:09 2006.06.05 07:30 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 11:18:09 2006.06.05 07:29 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 11:18:08 2006.06.02 19:55 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 11:18:08 2006.06.01 11:27 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:08 2006.06.01 06:45 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:08 2006.06.01 04:00 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:08 2006.06.01 02:44 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:08 2006.06.01 00:37 Trend Bands v2 EURUSD,M30: Alert: EURUSD 30 reach lower edge
2006.06.30 11:18:00 2006.05.31 04:00 Trend Bands v2 EURUSD,M30: loaded successfully
2006.06.30 11:18:00 EMA_CROSSv5 EURUSD,M5: Tester comment: ----------------------------------------
TakeProfit=10 | TrailingStop=20 | StopLoss=20 | UseStopLoss=False
----------------------------------------
immediate_trade=True | reversal=False
----------------------------------------
Lots=1 | MM=True | Risk=10%
----------------------------------------
2006.06.30 11:18:00 EMA_CROSSv5 inputs: TakeProfit=10; TrailingStop=20; StopLoss=20; ShortEma=1; LongEma=5; Lots=1; HedgePercent=1; StartHour=0; StopHour=23; Risk=10; MAGICMA=20060301; longrange=1; shortrange=1; back=30; TF=30;
2006.06.30 11:17:35 EMA_CROSSv5: loaded successfully
报告显示,它得到了设置,但空白....。
很明显,它不允许交易,但所有的交易都不允许?我觉得这很难让人相信,因为我只把多头和空头范围设置为1!?在这个范围内肯定有一些交易信号?我不认为这是在做我想做的事情。
我改变了趋势带指标,使其更加灵活。
extern int period = 34;
extern int factor = 8;
avg = findAvg(period, x);
upper[x] = middle2 + (factor*avg);
lower[x] = middle2 - (factor*avg);[/PHP]
then i did this to the EA
//---- Trend Bands v2 and Filter Parameters
extern double back = 300; //--how many periods back for the custom indicator to average
extern double bandwidth = 6; //--how wide the trend bands are
extern double TF = 30; //--which bar period for the custom indicator to use
//----------channel filter
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);I got this from the tester...(slightly abbreviated report)..
[PHP]2006.06.30 12:10:38 2006.06.29 23:59 Trend Bands v3 EURUSD,M30: removed
2006.06.30 12:10:38 2006.06.29 20:21 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:21 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:20 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:20 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:16 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:16 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:15 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:15 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:12 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:12 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:04 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:04 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:03 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:03 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:00 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 20:00 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 20:00 Trend Bands v3 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 12:10:38 2006.06.29 19:59 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:59 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:32 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:32 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:25 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:25 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:21 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:21 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:20 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:20 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:09 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:09 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:08 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:08 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 19:06 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 19:06 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 18:35 Trend Bands v3 EURUSD,M30: Alert: EURUSD 30 reach upper edge
2006.06.30 12:10:38 2006.06.29 18:16 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:38 2006.06.29 18:16 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 18:15 EMA_CROSSv5 EURUSD,M5: Error opening BUY order : 131
2006.06.30 12:10:38 2006.06.29 18:15 EMA_CROSSv5 EURUSD,M5: Error opening SELL order : 131
2006.06.30 12:10:37 2006.06.29 00:00 Trend Bands v3 EURUSD,M30: loaded successfully
2006.06.30 12:10:37 EMA_CROSSv5 EURUSD,M5: Tester comment: ----------------------------------------
TakeProfit=10 | TrailingStop=20 | StopLoss=20 | UseStopLoss=False
----------------------------------------
immediate_trade=True | reversal=False
----------------------------------------
Lots=1 | MM=True | Risk=10%
----------------------------------------
2006.06.30 12:10:37 EMA_CROSSv5 inputs: TakeProfit=10; TrailingStop=20; StopLoss=20; ShortEma=1; LongEma=5; Lots=1; HedgePercent=1; StartHour=0; StopHour=23; Risk=10; MAGICMA=20060301; back=300; bandwidth=6; TF=30;
在这之后我把带宽移到了20,这样它就不会碰到波段了......它还是给我 "错误开盘131"
ERR_INVALID_TRADE_VOLUME 131无效的交易量。
这到底是怎么回事?