错误、漏洞、问题 - 页 379 1...372373374375376377378379380381382383384385386...3184 新评论 --- 2011.04.30 23:32 #3781 Graff: 这是否有意义用BarsCalculated(ich)代替rate_total?我不这么认为。它更像是一个服务存根,以确保缓冲区已准备好... 此外,复制将返回计算出的数据量,而不是请求的大小。如果不是秘密的话,你是哪个城市的? 不在第聂伯。 Serge 2011.04.30 23:40 #3782 sergeev:顺便问一下,你确定你不需要调用任何额外的函数吗?该库同时具有Refresh和BufferResize。在我看来,它们是正常运作的必要条件。而哪里写着他们应该如此?我尝试了不同的变体。ichi.Refresh(true); ichi.Refresh(false); ichi.RefreshCurrent(true); ichi.RefreshCurrent(false);我没有得到任何效果。 Serge 2011.05.01 13:17 #3783 Continued....iIchimoku指标正在经历一个故障。我的指标只是根据if(tenkan[i]>kijun[i])来画箭头。正如你在截图中看到的那样,箭头没有被正确画出来。完整的代码在文件Ich_1_f.mq5中。然而,如果你手动计算它们,一切都会正确显示文件Ich_1_ok.mq5中的全部代码 附加的文件: Ich_1_f.mq5 6 kb Ich_1_ok.mq5 6 kb Mykola Demko 2011.05.01 19:22 #3784 写下dll:#define _DLLAPI extern "C" __declspec(dllexport) //+------------------------------------------------------------------+ //| адрес переменной double | //+------------------------------------------------------------------+ _DLLAPI int __stdcall GetPtrVar(double a){return((int)(&a));} //+------------------------------------------------------------------+ //| значение переменной double по адресу | //+------------------------------------------------------------------+ _DLLAPI double __stdcall GetValuePtr(int pointer){return(*(double*)pointer);}把它插上。#import "Projeckt1.dll" int GetPtrVar(double a); double GetValuePtr(int pointer); #import呼叫 ..:void OnStart() { double var=153.25; Print("вложенный вызов = ",GetValuePtr(GetPtrVar(var))); int pointer=GetPtrVar(var); Print("вызов с сохранением адреса = ",GetValuePtr(pointer)); }我们得到了这个。2011.05.01 18:09:12 Черновик 31 (EURUSD,H1) вызов с сохранением адреса = 5.560304580319136 e-287 2011.05.01 18:09:12 Черновик 31 (EURUSD,H1) вложенный вызов = 153.25 尽管这两行应该返回相同的值153.25。为什么? Renat Fatkhullin 2011.05.01 20:14 #3785 Urain: 为什么? 这是在32位还是64位版本? Mykola Demko 2011.05.01 20:17 #3786 Renat: 这是在32位还是64位版本? 32 Renat Fatkhullin 2011.05.01 20:39 #3787 它非常简单--在GetPtrVar(double a)函数中,你取了堆栈中变量副本 的地址,然后试图读取堆栈内存的那块垃圾。第一次,由于GetValuePtr的近距离调用,我们成功地从未受污染的堆栈中读取,而随后的函数调用 则不可逆转地损坏了堆栈。没有错误。 Документация по MQL5: Основы языка / Функции / Вызов функции www.mql5.com Основы языка / Функции / Вызов функции - Документация по MQL5 Mykola Demko 2011.05.01 20:45 #3788 Renat:这很简单--在GetPtrVar(double a)函数中取堆栈中变量副本 的地址,然后尝试读取堆栈内存中的那块垃圾。是的,没错,我觉得我需要在那里挖出一些东西。你必须在dll中写入 GetPtrVar(double &a){return((int)(&a));} Vladimir Gomonov 2011.05.01 20:46 #3789 Renat:它非常简单--在GetPtrVar(double a)函数中,你取了堆栈中变量副本 的地址,然后试图读取堆栈内存的那块垃圾。第一次,由于GetValuePtr的近距离调用,我们成功地从未受污染的堆栈中读取,而随后的函数调用 则不可逆转地损坏了堆栈。没有错误。我也注意到了这一点。我想这是正确的做法。#define _DLLAPI extern "C" __declspec(dllexport) //+------------------------------------------------------------------+ //| адрес переменной double | //+------------------------------------------------------------------+ _DLLAPI int __stdcall GetPtrVar(double & a){return((int)(&a));} //+------------------------------------------------------------------+ //| значение переменной double по адресу | //+------------------------------------------------------------------+ _DLLAPI double __stdcall GetValuePtr(int pointer){return(*(double*)pointer);}堵塞:#import "Projeckt1.dll" int GetPtrVar(double & a); double GetValuePtr(int pointer); #import President5 2011.05.01 21:27 #3790 在Metatrader5的439版本中,增加了一个历史质量指标。当我在M1和H4的开盘价 和所有点位上测试时,质量是51%...为什么以及如何增加?报价的来源是Alpari演示。 Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы www.mql5.com Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5 1...372373374375376377378379380381382383384385386...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是否有意义
用BarsCalculated(ich)代替rate_total?
我不这么认为。它更像是一个服务存根,以确保缓冲区已准备好...
此外,复制将返回计算出的数据量,而不是请求的大小。
如果不是秘密的话,你是哪个城市的?
顺便问一下,你确定你不需要调用任何额外的函数吗?
该库同时具有Refresh和BufferResize。在我看来,它们是正常运作的必要条件。
而哪里写着他们应该如此?
我尝试了不同的变体。
我没有得到任何效果。
Continued....
iIchimoku指标正在经历一个故障。我的指标只是根据if(tenkan[i]>kijun[i])来画箭头。正如你在截图中看到的那样,箭头没有被正确画出来。
完整的代码在文件Ich_1_f.mq5中。
然而,如果你手动计算它们,一切都会正确显示
文件Ich_1_ok.mq5中的全部代码
写下dll:
把它插上。
呼叫 ..:
我们得到了这个。
尽管这两行应该返回相同的值153.25。
为什么?
为什么?
这是在32位还是64位版本?
它非常简单--在GetPtrVar(double a)函数中,你取了堆栈中变量副本 的地址,然后试图读取堆栈内存的那块垃圾。
第一次,由于GetValuePtr的近距离调用,我们成功地从未受污染的堆栈中读取,而随后的函数调用 则不可逆转地损坏了堆栈。
没有错误。
这很简单--在GetPtrVar(double a)函数中取堆栈中变量副本 的地址,然后尝试读取堆栈内存中的那块垃圾。
是的,没错,我觉得我需要在那里挖出一些东西。
你必须在dll中写入
它非常简单--在GetPtrVar(double a)函数中,你取了堆栈中变量副本 的地址,然后试图读取堆栈内存的那块垃圾。
第一次,由于GetValuePtr的近距离调用,我们成功地从未受污染的堆栈中读取,而随后的函数调用 则不可逆转地损坏了堆栈。
没有错误。
我也注意到了这一点。我想这是正确的做法。
堵塞: