如何编码? - 页 118 1...111112113114115116117118119120121122123124125...347 新评论 [删除] 2008.08.20 12:29 #1171 为CEHansen 你好。 在你逐个取条的地方,你必须到处使用i变量而不是Current。Current是未初始化的,所以它是0。 最简单的方法是在开始的for中使用这个。 Current = i。 箭头就会出现。还有,别忘了给Sto_Lookback用一个更大的值。也许是100,1000或类似的值。 P.S 使用这样的for,从我的角度来看,这样做更好。 for (int i = Sto_Lookback; i >0; i--){ ... } 因为这是正常的 "条 "的方式,0是最后一条。这将节省你以后的一些其他麻烦。(例如--重新画图)。只是一个想法。 谢谢。 维克多 [删除] 2008.08.20 13:23 #1172 BigBe 2008.08.21 03:47 #1173 克林格成交量震荡指标 我查了一下这个,看起来是个有趣的指标。 然而,它部分依赖于成交量,这在外汇市场上并不适用。 大的是 [删除] 2008.08.21 18:34 #1174 订单修改错误 1 在我的回测中,我一直得到偶尔出现的 "OrderModify error1"。据我所知,这意味着没有变化,即OrderModify()参数与被修改订单的相应参数相同。 这可能是由于双重比较的问题。 问题是我如何解决这个问题? 下面是我认为造成这个问题的地方。 如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){ OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。 if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False。 继续。 } //MoveOnce if(MoveStopOnce && MoveStopWhenPrice > 0) { if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) { 如果(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) { OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red)。 if (!EachTickMode) BarCount = Bars; 继续。 } } } //拖曳止损 如果(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderOpenPrice() > Point * TrailingStop) { 如果(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。 if (!EachTickMode) BarCount = Bars; 继续。 } } } } else { //关闭 //+------------------------------------------------------------------+ //| 信号开始(退出卖出)| //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| 信号结束(退出卖出)| //+------------------------------------------------------------------+ 如果(Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){ OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange)。 如果(SignalMail) SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) BarCount = Bars; IsTrade = False。 继续。 } //MoveOnce 如果(MoveStopOnce && MoveStopWhenPrice > 0) { 如果(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) { 如果(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) { OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; 继续。 } } } //拖曳止损 if(UseTrailingStop && TrailingStop > 0) { 如果((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { 如果((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) 。 if (!EachTickMode) BarCount = Bars; 继续。 } } } } } } 问吧! 编码帮助 编码帮助......我如何让指标过滤而不是警报? matrixebiz 2008.08.21 22:47 #1175 编码问题 i++或i--在编码中是什么意思? Eg: for (int i=5; i>0;i--) hiachiever 2008.08.21 23:16 #1176 matrixebiz: i++或i--在编码中是什么意思? Eg: for (int i=5; i>0;i--) 它是基于C语言的缩写,用于增加或减少一个基于数字的变量。 例如,在Visual Basic中,你必须写。 i = i + 1来增加i变量。 然而,在C语言中,你可以简单地写i++。 希望这有帮助。 捌零后 matrixebiz 2008.08.21 23:53 #1177 hiachiever: 在C语言中,它是基于数字的变量的增量或减量的简称。 例如,在Visual Basic中,你必须要写。i = i + 1来增加i的变量。然而,在C语言中,你可以简单地写i++。希望这有帮助。 捌月壹日 谢谢。 所以,如果我把 if (int i=6; i>0; i++) 它将 "循环 "或继续检查 值,直到6的最大值?如果我用i--呢?请澄清一下 hiachiever 2008.08.22 00:00 #1178 matrixebiz: 谢谢。所以,如果我把 if (int i=6; i>0; i++) 它将 "循环 "或继续检查值,直到6的最大值? 不确定这是否正确。如果我使用i--呢?请澄清一下 Matrixebiz。 如果你想从6开始然后回到0,那么就用i-- (int i=6; i>0; i--) 这将从6开始,只要I>0,就在每个循环中递减1。 如果你想包括0,则使用i>=0。 干杯。 欢呼吧,Hiachiever matrixebiz 2008.08.22 02:23 #1179 hiachiever: Matrixebiz,如果你想从6开始,然后回到0,那么使用i-- (int i=6; i>0; i--) 这将从6开始,在每个循环中递减1,只要I>0。 如果你想包括0,则使用i>=0。 欢呼吧。 洽洽 好的,所以如果我把 if (int i=6; i>0; i++) 那么它就会从6开始,然后,从1、2、3...6开始递增,对吗? hiachiever 2008.08.22 02:55 #1180 matrixebiz: 好的,所以如果我把if (int i=6; i>0; i++),那么它将从6开始,然后,从1、2、3...6开始递增,对吗? 如果你想做的是在6点结束,那就不太合适。 这种情况下的代码应该是 For (int i=1; i<=6; i++) 这将从1开始,在6结束,每次循环递增1。 干杯。 欢呼吧,Hiachiever 1...111112113114115116117118119120121122123124125...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为CEHansen
你好。
在你逐个取条的地方,你必须到处使用i变量而不是Current。Current是未初始化的,所以它是0。
最简单的方法是在开始的for中使用这个。
Current = i。
箭头就会出现。还有,别忘了给Sto_Lookback用一个更大的值。也许是100,1000或类似的值。
P.S 使用这样的for,从我的角度来看,这样做更好。
for (int i = Sto_Lookback; i >0; i--){
...
}
因为这是正常的 "条 "的方式,0是最后一条。这将节省你以后的一些其他麻烦。(例如--重新画图)。只是一个想法。
谢谢。
维克多
克林格成交量震荡指标
我查了一下这个,看起来是个有趣的指标。
然而,它部分依赖于成交量,这在外汇市场上并不适用。
大的是
订单修改错误 1
在我的回测中,我一直得到偶尔出现的 "OrderModify error1"。据我所知,这意味着没有变化,即OrderModify()参数与被修改订单的相应参数相同。
这可能是由于双重比较的问题。
问题是我如何解决这个问题?
下面是我认为造成这个问题的地方。
如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。
if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False。
继续。
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
如果(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red)。
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
//拖曳止损
如果(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
如果(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
} else {
//关闭
//+------------------------------------------------------------------+
//| 信号开始(退出卖出)|
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 信号结束(退出卖出)|
//+------------------------------------------------------------------+
如果(Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange)。
如果(SignalMail) SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False。
继续。
}
//MoveOnce
如果(MoveStopOnce && MoveStopWhenPrice > 0) {
如果(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
如果(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
//拖曳止损
if(UseTrailingStop && TrailingStop > 0) {
如果((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
如果((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) 。
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
}
}
}
编码问题
i++或i--在编码中是什么意思?
Eg: for (int i=5; i>0;i--)
i++或i--在编码中是什么意思? Eg: for (int i=5; i>0;i--)
它是基于C语言的缩写,用于增加或减少一个基于数字的变量。
例如,在Visual Basic中,你必须写。
i = i + 1来增加i变量。
然而,在C语言中,你可以简单地写i++。
希望这有帮助。
捌零后
在C语言中,它是基于数字的变量的增量或减量的简称。
例如,在Visual Basic中,你必须要写。
i = i + 1来增加i的变量。
然而,在C语言中,你可以简单地写i++。
希望这有帮助。
捌月壹日谢谢。
所以,如果我把 if (int i=6; i>0; i++)
它将 "循环 "或继续检查 值,直到6的最大值?如果我用i--呢?请澄清一下
谢谢。
所以,如果我把 if (int i=6; i>0; i++)
它将 "循环 "或继续检查值,直到6的最大值? 不确定这是否正确。如果我使用i--呢?请澄清一下Matrixebiz。
如果你想从6开始然后回到0,那么就用i--
(int i=6; i>0; i--)
这将从6开始,只要I>0,就在每个循环中递减1。
如果你想包括0,则使用i>=0。
干杯。
欢呼吧,Hiachiever
Matrixebiz,
如果你想从6开始,然后回到0,那么使用i--
(int i=6; i>0; i--)
这将从6开始,在每个循环中递减1,只要I>0。
如果你想包括0,则使用i>=0。
欢呼吧。
洽洽好的,所以如果我把 if (int i=6; i>0; i++)
那么它就会从6开始,然后,从1、2、3...6开始递增,对吗?
好的,所以如果我把if (int i=6; i>0; i++),那么它将从6开始,然后,从1、2、3...6开始递增,对吗?
如果你想做的是在6点结束,那就不太合适。
这种情况下的代码应该是
For (int i=1; i<=6; i++)
这将从1开始,在6结束,每次循环递增1。
干杯。
欢呼吧,Hiachiever