14 12
发新话题
打印

[指标EA编写讨论] 我想请教一个MT开发的问题

本主题由 xfxyldj 于 2007-12-5 15:41 分类

我想请教一个MT开发的问题

请问怎样设计一个全局的参数

是可变的

假设这个变量叫 a =0

在第一次交易中把A设置成 1

在第二交易中也可以读取A=1

请问怎样写呢?

TOP

我想你意思是只要运行一次,以后就全部为1了。
那你写一个if (a=0)   a=1;
就解决了啊。

TOP

回复 1楼 的帖子

在函数外面定义的变量就是全局变量。
建议你最好用静态全局变量,稳妥些。
Static variables

"静止" 记忆被称作静态变量。在数据类型之前指定成分"静止" 被公开。

例子:

int somefunc()
  {
   static int flag=10;
   ....
   return(flag);
  }

静态变量被存放在永久记忆里,在作用退出后静态变量不会丢失。所有在同一板块内(除正式变量作用外),可能作为静止变量定义。 静态变量可以由相对应的类型常数初始化。 与局部变量不同。如果没有明确地初始化, 静态变量初始化以零。 静态变量在"init()" 作用之前只可应用一次。
Global variables

"全局变量和函数被定义在同一级别, 即他们不是在某一地方的局部使用。

例子:

int GlobalFlag=10;   // global variable
int start()
  {
   ...
  }

全局变量的范围是整个程序。全局变量在所有程序内是被定义的。 如果它的价值没有被定义,初始化价值为零。 全局变量只对于相应的常数初始化。 全局变量只可以在初始化 作用操作之前一次性初始化。

注解: 变量在全局变量的水平位上不能够与客户端GlobalVariable... ()作用混淆。

TOP

回复 1楼 的帖子

拷贝的MQL的翻译。虽然不是很准确,我想你能看得懂。
将static 关键字放在全局变量定义语句的前面就可以实现全局静态变量的定义!

TOP

我意思是说,下一次启动交易系统都可以读回这个数

希望得到正解

TOP

回复 5楼 的帖子

你说的这个不可以。你的问题中并没有提到要关闭交易程序。
作为程序来讲当程序退出的时候就将所有的变量释放了。
因此不可能保存。
不过你的要求也可以办到。
那就是用文件读写函数。
1、定义一组变量。
2、定义一个存放文件。
3、每次变量改变的时候写文件(退出时再做一次写文件操作)。
4、重新启动交易系统的时候读文件。
5、将文件中的记录作为这组变量的启动初始值。

TOP

以上的问题我解决了,谢谢大家的支持

我还有一个问题,就是怎样修改测试中的保证金倍数?或者数量

TOP

回复 7楼 的帖子

能说说您怎么解决的吗?
不是很清楚你说的保证金倍数是什么意思。
如果是启始资金的数量,在测试的时候“智能交易属性”选项中可以修改。

TOP

回楼上,解决方法用是用
GlobalVariableSet
GlobalVariableGet
解决的


我的意思是说,当买一手的时候,不是要用一定的保证金来做底的吗?

就是平常说的200倍,100倍,我想修改他的倍数,请问哪里修改的呢

TOP

回复 9楼 的帖子

当一个账户开好后是无法更改保证金杠杆的。
因此这个是不能修改的。
但你可以取得当前账户的保证金杠杆值。
用AccountLeverage( ) 函数。

TOP

 14 12
发新话题