MetaTrader 4 Build 529测试版发布,带有新的编译器 - 页 125

 
stringo:

你不能改变输入变量!

使用关键字input而不是extern,那么编译器就不会让你这样做了

我们将看看我们能做些什么来保持旧的四合院功能。

PS 非常感谢你提出这个问题


因此,没有任何目的要改变它们!"。

它们只是用于进一步的计算。仅此而已!

好吧,原则上我明白了,我们通过引入一个额外的变量解决了这个问题。

extern int TakeProfit_= 10;
int TakeProfit;
......  
   int dig = (int)MarketInfo(Symbol(), MODE_DIGITS);
   if (dig == 5 || dig == 3)
   {
      TakeProfit  = TakeProfit_* 10;
.....
 
Night63:


因此,改变它们并没有什么目的!

它们只是用于进一步的计算。没有比这更多的了!

那么,原则上,我们已经通过引入一个额外的变量来解决这个问题。


这倒是真的...但为什么要在每次勾选时 检查一个不可变的常数呢?在init()中定义一次就够了。
 
stringo:

你不能改变输入变量!

我使用外部变量的值(对于某些变量)作为默认值,并从ini文件中读取同一参数的其余数据。

专家顾问同时工作的几个策略都有自己的输入参数。例子。

extern int TF = 15;
int gia_TF[5];
void start()
{
    for (int li_TF = 0; li_TF < ArraySize (gia_TF); li_TF++)
    {
        TF = gia_TF[li_TF];
    }
}

是的--这个问题可以通过输入额外的变量来解决,但为什么?澄清一下,这个功能是否会被新的MT剥夺?

 
TarasBY:
我使用外部变量的值(对于某些变量)作为默认值,并从ini-file中读取同一参数的其他数据。

顾问们同时与几个有各自输入参数的策略一起工作。例子。

是的--这个问题可以通过输入额外的变量来解决,但为什么?澄清一下,这个功能是否会被新的MT剥夺?

早就告诉你了。:-))

这一点是多余的。这意味着,作为外部变量的内联是不必要的。你可以删除extern。你甚至不会注意到这种差别。反正你是通过INI文件初始化的。

 
TarasBY:
我使用外部变量的值(对于某些变量)作为默认值,并从ini-file中读取同一参数的其余数据。

顾问们同时与几个有各自输入参数的策略一起工作。例子。

是的--这个问题可以通过引入额外的变量来解决,但为什么?澄清一下,这个功能是否会被新的MT剥夺?


不,它不会被剥夺。

一切都将和老四届一样。长时间编写的代码(甚至用新的编译器重新编译)将像以前一样工作。

 
Zhunko:

早就告诉你了...:-))

这是多余的。这意味着与外部变量一起列入外部变量是不必要的。你可以省略extern。你甚至不会注意到这种差别。反正你是从INI文件中初始化的。

瓦迪姆!谁是普遍性和多变性的斗士?:)
 
stringo:

不,它不会。

一切都将与旧的四合院一样。长时间编写的代码(甚至用新的编译器重新编译)将像以前一样工作。

谢谢你。好的。
 
avtomat:

这倒是真的...但为什么要在每次勾选时检查一个不可变的常数呢?在init()中定义一次就够了。


你说得对,一开始就是这样,我们只是在解决问题的阶段尝试了各种各样的东西。

现在回到init,感谢你指出了这个缺陷。

 
stringo:

你能解释一下你的代码的物理意义吗?

如果图表是开放的,则已经选择了该符号,该专家顾问在其上工作。

已经选择的符号不能重新选择。不能隐藏一个图表已打开的符号。


物理点是检查在EA输入参数中以字符串形式输入的符号是否可用于交易。在MT5中相同的代码可以工作。

我引用的代码只是一个例子。那里的情况有些不同,但意思仍然相同。

P.S. 测试器中的错误138是怎么回事?

代码。

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE);
     }
  }

结果。

 
一些带有图形对象的小知识。

这次是OBJ_EDIT

1) 无法输入数据,当点击OBJ_EDIT时,什么都没有发生,字段中的数据没有高亮显示(以前除了用 "ENTER "键,不可能退出字段,现在则无法输入)。

2) OBJPROP_ANCHOR不起作用。

3) 当选择OBJ_EDIT时,移动对象的点会出现在左上角,但会有一定的偏移,尽管是非常小的偏移,这取决于坐标从图表的哪个角(OBJPROP_CORNER)算起。

渲染或移动图形对象方面没有其他问题。谢谢你的更正。