来自一个 "傻瓜 "的问题 - 页 51 1...444546474849505152535455565758...277 新评论 Andrey Ustinov 2011.08.19 02:35 #501 非常感谢papaklass,它起作用了,现在我将尝试理解其中的区别。 Europa 2011.08.19 11:21 #502 为什么专家顾问会挂在这段代码上。if(Orders_Total!=0) { for(i=Orders_Total;i>=0;i--) { Alert(Orders_Total); if(Symbol()==PositionGetSymbol(i)) { OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN); OrderLot = PositionGetDouble(POSITION_VOLUME); StopLoss = PositionGetDouble(POSITION_SL); TakeProfit=PositionGetDouble(POSITION_TP); if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { for(i=0;i<12;i++) { if(Price[i].low<lowest) { lowest=Price[i].low; } } Alert(lowest); SL=NormalizeDouble(lowest-spread-_Point,_Digits); if(StopLoss<SL) { request.action=TRADE_ACTION_SLTP; request.symbol=_Symbol; request.volume= OrderLot; request.sl=SL; request.tp=TakeProfit; request.type=ORDER_TYPE_BUY; OrderSend(request,result); } } if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) { for(i=0;i<12;i++) { if(Price[i].high>highest) { highest=Price[i].high; } } Alert(highest); SL=NormalizeDouble(highest+spread+_Point,_Digits); if(StopLoss>SL) { request.action=TRADE_ACTION_SLTP; request.symbol=_Symbol; request.volume= OrderLot; request.sl=SL; request.tp=TakeProfit; request.type=ORDER_TYPE_SELL; OrderSend(request,result); } } } } } 我插入了Orders_Total=2的警报,最低和最高值也给出了足够的值,但是专家在这个循环中挂起,给出了无限多的警报,没有给出其他错误(关于订单修改)。请帮助一个新手了解 :) Slava 2011.08.19 11:27 #503 对于一个外循环和两个内循环,同一个循环变量i,随着外循环的每一次新的迭代而变成12 Europa 2011.08.19 11:42 #504 stringo:对于一个外循环和两个内循环,同一个循环变量i,随着外循环的每一次新的迭代而变成12 谢谢你!!!。 Nauris Zukas 2011.08.19 16:33 #505 你能修改代码吗?我需要的是当前栏的开盘价 。预先感谢你。double Open[], val4; ArraySetAsSeries(Open,true); CopyOpen(Symbol_, PERIOD_M15,1,0,Open); val4 = (Open[ArrayMinimum(Open,0,1)] ); Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы www.mql5.com Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5 Yedelkin 2011.08.19 19:01 #506 abeiks: 你能修改代码吗?我需要的是当前栏的开盘价 。预先感谢你。 "Symbol_"是错误的参数,下划线应该在前面。 而复制的项目数量为0。 Olegs Kucerenko 2011.08.20 12:12 #507 如果我通过 iCustom 将一个外部指标连接到EA,我不能动态地改变输入参数。 iMA 是可以的,它可以使用固定的值,两个可互换的字符串,我把它放在OnTick(),MA周期被重新计算。ma_handle = iCustom(_Symbol,0,"Examples\\JJMA.ex5",MA,4); ma_handle = iMA(_Symbol,0, MA,0, MODE_EMA, PRICE_CLOSE); 如果是这样,在外部的不能改变,那么为什么我需要在我的EA中嵌入代码?对不起,它是有效的,只是需要更长的时间。 Yedelkin 2011.08.20 12:40 #508 Karlson:如果我通过 iCustom 将一个外部指标连接到我的EA,我不能动态地改变输入参数。 iMA 是可以的,它可以使用固定的值,两个可互换的字符串,我把它放在OnTick(),MA周期被重新计算。如果是这样,在EA中不能改变什么,那么我们如何在EA中嵌入代码? "......我不能动态地改变指标的 输入参数"? 将指标的输入参数 复制为专家顾问的输入参数。而且,最好是在专家顾问初始化时获得一次手柄,而不是在每个新的tick上。 Olegs Kucerenko 2011.08.20 13:35 #509 Yedelkin:"......不能动态地改变指标 的输入参数"?将指标的输入参数 复制为专家顾问的输入参数。而且,在初始化专家顾问时获得一次手柄,比在每个新的刻度上获得手柄要好。在EA的工作过程中,平均线的周期与ATR不同,所以平均线的句柄被放在OnTick()中。 事实上,EA的输入参数是ATR的周期,它没有变化。int OnInit() { atr_handle = iATR(_Symbol,0, ATR); //инициализируем хэндл ATR } void OnTick() { CopyBuffer(atr_handle,0,0,5,atr); //заполняем массив ATR ArraySetAsSeries(atr,true); MA=(int)(atr[1]*kMA); //рассчитываем период требуемый для средней от ATR //ma_handle = iCustom(_Symbol,0,"Examples\\JJMA.ex5",MA,4); // получаем хэндл средней ma_handle = iMA(_Symbol,0, MA,0, MODE_EMA, PRICE_CLOSE); CopyBuffer(ma_handle,0,0,5,ma); //заполняем массив средней ArraySetAsSeries(ma,true); } Yedelkin 2011.08.20 15:43 #510 Karlson:我有一个在EA运行时从ATR变化的平均周期,所以平均线的句柄被放在OnTick()中。事实上,EA的输入参数 是ATR周期。它没有改变。ATR在OnInit()中。 我已经大致理解了。但很难在每次新的刻度线上获得指标柄。那你怎么处理以前的手柄呢? 1...444546474849505152535455565758...277 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
非常感谢papaklass,它起作用了,现在我将尝试理解其中的区别。
为什么专家顾问会挂在这段代码上。
我插入了Orders_Total=2的警报,最低和最高值也给出了足够的值,但是专家在这个循环中挂起,给出了无限多的警报,没有给出其他错误(关于订单修改)。
请帮助一个新手了解 :)
对于一个外循环和两个内循环,同一个循环变量i,随着外循环的每一次新的迭代而变成12
对于一个外循环和两个内循环,同一个循环变量i,随着外循环的每一次新的迭代而变成12
你能修改代码吗?我需要的是当前栏的开盘价 。预先感谢你。
你能修改代码吗?我需要的是当前栏的开盘价 。预先感谢你。
"Symbol_"是错误的参数,下划线应该在前面。
而复制的项目数量为0。
如果我通过 iCustom 将一个外部指标连接到EA,我不能动态地改变输入参数。 iMA 是可以的,它可以使用固定的值,两个可互换的字符串,我把它放在OnTick(),MA周期被重新计算。
如果是这样,在外部的不能改变,那么为什么我需要在我的EA中嵌入代码?
对不起,它是有效的,只是需要更长的时间。
如果我通过 iCustom 将一个外部指标连接到我的EA,我不能动态地改变输入参数。 iMA 是可以的,它可以使用固定的值,两个可互换的字符串,我把它放在OnTick(),MA周期被重新计算。
如果是这样,在EA中不能改变什么,那么我们如何在EA中嵌入代码?
"......我不能动态地改变指标的 输入参数"?
将指标的输入参数 复制为专家顾问的输入参数。而且,最好是在专家顾问初始化时获得一次手柄,而不是在每个新的tick上。
"......不能动态地改变指标 的输入参数"?
将指标的输入参数 复制为专家顾问的输入参数。而且,在初始化专家顾问时获得一次手柄,比在每个新的刻度上获得手柄要好。
在EA的工作过程中,平均线的周期与ATR不同,所以平均线的句柄被放在OnTick()中。 事实上,EA的输入参数是ATR的周期,它没有变化。
我有一个在EA运行时从ATR变化的平均周期,所以平均线的句柄被放在OnTick()中。事实上,EA的输入参数 是ATR周期。它没有改变。ATR在OnInit()中。