任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 11 1...456789101112131415161718...1178 新评论 gyfto 2013.06.22 16:57 #101 AndEv: 下午好。有两个坐标为(x1,y1)和(x2,y2)的点。如何用这两点来构造一个对数基础不是自然数的对数函数?似乎我需要使用反函数(),但我不知道如何使其成为对角线。如果有人遇到过这个问题,请告知。我在此表示感谢。 很简单,除以你的对数的基数。也就是说,如果你想要二度的对数x,你就用对数x除以对数2,就得到二度的对数x。 [Deleted] 2013.06.22 17:18 #102 gyfto: 很简单,除以你的对数的基数。也就是说,如果你想要二度的对数x,你就用对数x除以对数2,就得到二度的对数x。 我不太明白。我的意思是,MT4的常规对数功能只计算一个数字的自然对数。MT4中没有其他对数功能。你可以使用反函数,即MathPow,但它需要镜像到对角线上。我想不出有什么更简单的方法可以做到这一点。 Viktar Dzemikhau 2013.06.22 17:20 #103 Fox_RM: 我可以澄清一下你说的不按市场价格出售是什么意思吗?有了SELLLIMIT和BUYLIMIT,一切都正确了。 进入编辑区,阅读什么是待处理订单......所有的问题都会消失。 Сергей 2013.06.22 17:25 #104 hoz: 你应该去编辑并阅读什么是待定订单......然后所有的问题都会消失。卖出限制- 从上边界卖出,买入限制 - 从下边界买入。全部对的,有了待定的订单,这不是重点。 Рустам 2013.06.22 17:40 #105 你在代码中的所有订单都是市场订单 gyfto 2013.06.22 18:14 #106 AndEv: 我不太明白。我的意思是,MT4的常规对数功能只计算一个数字的自然对数。MT4中没有其他对数功能。你可以使用反函数,即MathPow,但它必须镜像到对角线上。我想不出有什么更简单的方法了。 。 关于这个?幂函数的逆函数是同一基础上的对数函数。为了得到所需基础a 上的对数函数,你需要用MathLog(x)除以MathLog(a)。 [Deleted] 2013.06.22 18:39 #107 gyfto: 关于这个?幂函数的逆函数是同一基础上的对数函数。为了得到所需基础a 上的对数函数,用MathLog(x)除以MathLog(a)。 是的,我现在明白了,谢谢你。 [删除] 2013.06.22 19:47 #108 hoz: 这或多或少是这样的。 有些事情,我做错了......它是这样的。int start() { int i, Counted_bars; //-------------------------------------------------------------------- CurrentPoint1 = 0; CurrentPoint2 = 0; kVol1=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_1, MODE_TICKSIZE); kVol2=MarketInfo(Symbol_2, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKSIZE); Counted_bars=IndicatorCounted(); i=Bars-Counted_bars-1; while(i>=0) { Symbol1_Buf[i] = MACD (Symbol_1, iBarShift(Symbol_1, 0, Time[i], FALSE)); if(Revers) Symbol2_Buf[i] = -1*MACD (Symbol_2, iBarShift(Symbol_2, 0, Time[i], FALSE)); else Symbol2_Buf[i] = MACD (Symbol_2, iBarShift(Symbol_2, 0, Time[i], FALSE)); if((Symbol1_Buf[i+1]>Symbol2_Buf[i+1] && Symbol1_Buf[i+2]<=Symbol2_Buf[i+2]) || (Symbol1_Buf[i+1]<Symbol2_Buf[i+1] && Symbol1_Buf[i+2]>=Symbol2_Buf[i+2])) { CurrentPoint1 = 0; CurrentPoint2 = 0; ZeroClose1 = iClose(Symbol_1,Period(),iBarShift(Symbol_1,0,Time[i+1])); ZeroClose2 = iClose(Symbol_2,Period(),iBarShift(Symbol_2,0,Time[i+1])); } CurrentPoint1 = iClose(Symbol_1,Period(),iBarShift(Symbol_1,0,Time[i])) - ZeroClose1; if(Revers) CurrentPoint2 = -1*(iClose(Symbol_2,Period(),iBarShift(Symbol_2,0,Time[i])) - ZeroClose2); else CurrentPoint2 = iClose(Symbol_2,Period(),iBarShift(Symbol_2,0,Time[i])) - ZeroClose2; Spread_Buf[i] = (CurrentPoint1 / MarketInfo(Symbol_1, MODE_POINT) - CurrentPoint2 / MarketInfo(Symbol_2, MODE_POINT)); Buf_Up[i] = Spread_Buf[i]; Buf_Dw[i] = Spread_Buf[i]; if(Spread_Buf[i] < Spread_Buf[i+1]) Buf_Up[i] = EMPTY_VALUE; if(Spread_Buf[i] > Spread_Buf[i+1]) Buf_Dw[i] = EMPTY_VALUE; i--; }事情是这样的。int start() { int i, countedBars = IndicatorCounted(); for(i = Bars - countedBars;i > 0;i--) //-------------------------------------------------------------------- CurrentPoint1 = 0; CurrentPoint2 = 0; kVol1=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_1, MODE_TICKSIZE); kVol2=MarketInfo(Symbol_2, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKSIZE); while(i>=0) { Symbol1_Buf[i] = MACD (Symbol_1, iBarShift(Symbol_1, 0, Time[i], FALSE)); if(Revers) Symbol2_Buf[i] = -1*MACD (Symbol_2, iBarShift(Symbol_2, 0, Time[i], FALSE)); else Symbol2_Buf[i] = MACD (Symbol_2, iBarShift(Symbol_2, 0, Time[i], FALSE)); if((Symbol1_Buf[i+1]>Symbol2_Buf[i+1] && Symbol1_Buf[i+2]<=Symbol2_Buf[i+2]) || (Symbol1_Buf[i+1]<Symbol2_Buf[i+1] && Symbol1_Buf[i+2]>=Symbol2_Buf[i+2])) { CurrentPoint1 = 0; CurrentPoint2 = 0; ZeroClose1 = iClose(Symbol_1,Period(),iBarShift(Symbol_1,0,Time[i+1])); ZeroClose2 = iClose(Symbol_2,Period(),iBarShift(Symbol_2,0,Time[i+1])); } CurrentPoint1 = iClose(Symbol_1,Period(),iBarShift(Symbol_1,0,Time[i])) - ZeroClose1; if(Revers) CurrentPoint2 = -1*(iClose(Symbol_2,Period(),iBarShift(Symbol_2,0,Time[i])) - ZeroClose2); else CurrentPoint2 = iClose(Symbol_2,Period(),iBarShift(Symbol_2,0,Time[i])) - ZeroClose2; Spread_Buf[i] = (CurrentPoint1 / MarketInfo(Symbol_1, MODE_POINT) - CurrentPoint2 / MarketInfo(Symbol_2, MODE_POINT)); Buf_Up[i] = Spread_Buf[i]; Buf_Dw[i] = Spread_Buf[i]; if(Spread_Buf[i] < Spread_Buf[i+1]) Buf_Up[i] = EMPTY_VALUE; if(Spread_Buf[i] > Spread_Buf[i+1]) Buf_Dw[i] = EMPTY_VALUE; i--; }编译后,没有错误,但指标只显示一个长条。 Viktar Dzemikhau 2013.06.22 21:21 #109 Krokus: 编译后,没有错误,但指标只显示一个长条。 我没有时间去了解你的指标的逻辑,但我给你写了如何正确设置循环。顺便说一下,这将有助于简化代码,使其更具有可读性。在这种情况下,分析起来会比较容易。这往往是出错的原因。代码的可读性越 强,变量的名称考虑得越周全,就越好。 [删除] 2013.06.22 21:27 #110 hoz: 好吧,我还没有时间去研究你的指标的逻辑,但我给你写了如何正确设置循环。顺便说一下,简化代码,使其更易读也无妨。然后就会更容易分析了。这往往是出错的原因。代码的可读性越高,变量的名称越好,就越好。 我将研究这个问题。谢谢你。 1...456789101112131415161718...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好。有两个坐标为(x1,y1)和(x2,y2)的点。如何用这两点来构造一个对数基础不是自然数的对数函数?似乎我需要使用反函数(),但我不知道如何使其成为对角线。如果有人遇到过这个问题,请告知。我在此表示感谢。
很简单,除以你的对数的基数。也就是说,如果你想要二度的对数x,你就用对数x除以对数2,就得到二度的对数x。
很简单,除以你的对数的基数。也就是说,如果你想要二度的对数x,你就用对数x除以对数2,就得到二度的对数x。
我可以澄清一下你说的不按市场价格出售是什么意思吗?有了SELLLIMIT和BUYLIMIT,一切都正确了。
进入编辑区,阅读什么是待处理订单......所有的问题都会消失。
你应该去编辑并阅读什么是待定订单......然后所有的问题都会消失。
卖出限制- 从上边界卖出,买入限制 - 从下边界买入。全部
对的,有了待定的订单,这不是重点。
我不太明白。我的意思是,MT4的常规对数功能只计算一个数字的自然对数。MT4中没有其他对数功能。你可以使用反函数,即MathPow,但它必须镜像到对角线上。我想不出有什么更简单的方法了。 。
关于这个?
幂函数的逆函数是同一基础上的对数函数。为了得到所需基础a 上的对数函数,你需要用MathLog(x)除以MathLog(a)。
关于这个?
幂函数的逆函数是同一基础上的对数函数。为了得到所需基础a 上的对数函数,用MathLog(x)除以MathLog(a)。
这或多或少是这样的。
有些事情,我做错了......
它是这样的。
事情是这样的。
编译后,没有错误,但指标只显示一个长条。
编译后,没有错误,但指标只显示一个长条。
我没有时间去了解你的指标的逻辑,但我给你写了如何正确设置循环。
顺便说一下,这将有助于简化代码,使其更具有可读性。在这种情况下,分析起来会比较容易。这往往是出错的原因。代码的可读性越 强,变量的名称考虑得越周全,就越好。
好吧,我还没有时间去研究你的指标的逻辑,但我给你写了如何正确设置循环。
顺便说一下,简化代码,使其更易读也无妨。然后就会更容易分析了。这往往是出错的原因。代码的可读性越高,变量的名称越好,就越好。
我将研究这个问题。谢谢你。