//< This is EA : Compile and run in folder "/experts" >
int start()
{
static int iClockPeriod = 1000 ;
static int iTimeStamp ;
static int iRunTime ;
while ( ! IsStopped () )
{
iTimeStamp = GetTickCount () ;
Comment ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
iRunTime = GetTickCount () - iTimeStamp ;
Sleep ( iClockPeriod - iRunTime ) ;
}
}
//</This is EA : Compile and run in folder "/experts" >
//< This is Indicator : Compile and run in folder "/experts/indicators" >
#property indicator_chart_window
int start()
{
static int iClockPeriod = 1000 ;
static int iTimeStamp ;
if ( ( GetTickCount () - iTimeStamp ) < iClockPeriod ) return ;
{
iTimeStamp = GetTickCount () ;
Comment ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
}
}
//</This is Indicator : Compile and run in folder "/experts/indicators" >
它只是mql4中的少数几行(当然你需要DLL调用允许调用windows API,但你不需要安装任何东西)。
我把这个脚本放在我的收藏夹里,当我需要ticks时,我只需把它拖到图表上。
我还有一个没有循环的变体,它只发送一个刻度线,然后退出,并将其(one_tick.mq4)与热键ALT+T绑定,现在我只要按ALT-T就可以向活动图表发送一个刻度线。在周末进行实验时,我的一些stat-arb EAs需要这样做,以执行start()来触发他们的计算和绘制图表(我可以在图表上移动线条来改变间隔时间,然后我需要一个新的tick来更新他们的计算)。
7 我从来没有使用过dll导入,所以请你解释一下。
+ 你必须在Meta Trader Client的文件夹中包含dll文件吗?
+ 我们怎样才能从MT客户端启用这个EA?
只是请给我们一些Meta Trader中DLL导入的例子
7 我从来没有使用过dll导入,所以能不能请你解释一下以下内容。
+ 你必须在Meta Trader Client的文件夹中包含dll文件吗?
+ 我们怎样才能从MT客户端启用这个EA?
请给我们一些Meta Trader中DLL导入的例子。
我很抱歉地告诉你,除非你学会阅读 超过140个字符的文字 的技巧,否则你完全不可能利用它(甚至不可能理解它可以用于什么目的)。
作为一个开始,你可以尝试从你刚才在最后一个帖子中引用的文字中提取意思。你会发现我把它描述成一个脚本,而不是一个EA,此外,你会非常惊讶地发现我写的是不需要安装任何dlls,你甚至可以找到我解释如何使用它的那部分文字。
我很抱歉地告诉你,除非你学会阅读 超过140个字符的文字 的技巧,否则你将完全不可能利用它(甚至不可能理解它可以用于什么目的)。
作为一个开始,你可以试着从你刚才在上一篇帖子中引用的文字中提取出意思。你会发现我把它描述成一个脚本,而不是一个EA,此外,你会惊讶地发现我写的是不需要安装任何dlls,你甚至可以找到我解释如何使用它的那部分文字。
我钦佩你的傲慢和你的英语技能,可能还有你的编码例子。
但解决一个问题而不提供解决方案,只是在回避问题。
7位与其质疑我的阅读能力和技术,不如你写出整个程序,证明你的自我。而不是哲理!
你是否知道如何做一个实时的时钟,一秒一秒的,这就是问题所在,这个时钟应该在图表中吗?
你可以简单地添加2和2。
使用7bit的代码来生成假的刻度线,并结合我发布的代码,你就拥有了所有你需要的东西。
另外,7bit似乎是参与这个论坛的顶级程序员之一......
//z
spidermagos:
我很佩服你的傲慢
谢谢你。
spidermagos:
你为什么不把整个程序写出来,证明你自己,而不是去讲哲学呢?
这个脚本是完整的,可以独立工作,完全在我给出的规格范围内。
我把它作为一个建议发布,以解决指标不允许使用像sleep()这样的阻塞调用的问题,而且也不存在其他从指标本身生成定时器事件的方法。整个时钟问题的这个确切的子 问题在这个线程中被立即提到,我只解决了这个问题,其他的都没有解决。它可以 作为一个完全独立的问题来处理,我的脚本是一个通用的(完全独立的)解决方案,也可以应用于许多类似的场景,我甚至还为一个不同的使用情况举了一个例子。
如果你想写代码,那么你必须学会问题分解 的技巧,你还必须能够立即识别出一个解决方案,以及一个部分解决方案,只要你碰巧遇到一个。
//< This is EA : Compile and run in folder "/experts" > int start() { static int iClockPeriod = 1000 ; static int iTimeStamp ; static int iRunTime ; while ( ! IsStopped () ) { iTimeStamp = GetTickCount () ; Comment ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ; iRunTime = GetTickCount () - iTimeStamp ; Sleep ( iClockPeriod - iRunTime ) ; } } //</This is EA : Compile and run in folder "/experts" >
//< This is Indicator : Compile and run in folder "/experts/indicators" > #property indicator_chart_window int start() { static int iClockPeriod = 1000 ; static int iTimeStamp ; if ( ( GetTickCount () - iTimeStamp ) < iClockPeriod ) return ; { iTimeStamp = GetTickCount () ; Comment ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ; } } //</This is Indicator : Compile and run in folder "/experts/indicators" >
在不同的图表中运行这些程序。
在不同的图表中运行这些程序。
Ais;7bit是正确的,这将不会起作用!启动功能 是逐个tick的。
需要导入dll来解决这个问题。...
即从指标中调用脚本
谢谢你。
这个脚本是完整的,可以独立工作,完全在我给出的规格范围内。
我把它作为一个建议发布,以解决指标不允许使用像sleep()这样的阻塞调用的问题,而且也不存在其他方法来从指标本身产生定时器事件。整个时钟问题的这个确切的子 问题在这个线程中被立即提到了,我只解决了这个问题,其他的都没有解决。它可以 作为一个完全独立的问题来处理,我的脚本是一个通用的(完全独立的)解决方案,也可以应用于许多类似的场景,我甚至还为一个不同的使用情况举了一个例子。
如果你想写代码,那么你必须学会问题分解的技巧,你还必须能够立即识别出一个解决方案,以及一个部分解决方案,只要你碰巧遇到一个解决方案。
7bit - 你如何从一个指标中调用一个脚本?
你能举个例子吗?
我的理解是,Start()函数是逐点工作的。
有没有一种方法可以使用计算机时钟的实时数据并每秒更新?不是逐点更新,而是每秒钟更新?
如果有,请给我一些帮助。
谢谢
首先把你在start中的逻辑放到一个函数中。
接下来在init()中做一个带有sleep的while循环,然后从那里调用该函数。 记住睡眠的单位是毫秒。
这将使你能够控制时间,而不是等待价格变化。
只要你的程序逻辑没有问题,它就能完美地工作。唯一的问题是你不能在回测器 中运行它。先用Start()做测试,然后切换到init()。