[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 381

 
moskitman:

这来自于帮助,但是否可以用NULL作为符号,只 "监视 "EA运行的工具?

例如,像这样。

NULL似乎不起作用。

Symbol() 会起作用=)

[Deleted]  

下午好。我有以下问题。 位于MQL4.communityMQL4,在 "简单的 MQL 程序 "部分,包含一个 tradingexpert.mq4例子 ,内容如下(见附件文件)。外部变量extern double StopLoss =200extern double TakeProfit =39 是在第1-2块中声明。8-9块调用New_Stop(StopLoss)New_Stop(TakeProfit) 函数来计算SLTP 参数。在第11-12块中有关于该功能的描述。

问题New_Stop 函数的正式参数 具有int 类型(int Parametr),而在函数调用 New_Stop(StopLoss)(New_Stop(TakeProfit))中传递的参数具有double 类型。在MQL4 书中,在MQL4.community 的 "语言基础知识 "部分,"函数 "小节,"函数属性 "说"函数调用中传递的参数的数量、类型 和顺序必须与函数描述中传递的正式参数的数量、类型 和顺序一致(有默认参数的函数调用除外--见函数调用和函数描述及返回操作符。如何解释这个矛盾:根据后者,在声明StopLossTakeProfit 变量时,我应该声明int 类型,而不是double(编译器没有产生任何错误)?

为了不给论坛添乱,提前感谢您的回答。

附加的文件:
 

你好,你能不能给我一个提示...我在互联网上搜索了一半,信息各不相同

专家顾问的本质是在不同的工具上建仓。"在现实生活中,它可以工作并显示当前的价格,但我不能通过历史来运行它......该函数返回零。

我想显示两种货币的当前报价,例如EURUSD和EURCHF。

我正在用这个函数调用当前的报价(当欧元兑美元图表处于活动状态时,我正在跟踪历史数据)。

MarketInfo("EURUSD",MODE_BID)---> 获得当前价格

MarketInfo("EURCHF",MODE_BID)---> 返回零

我在这个论坛上发现,MarketInfo在历史上不起作用,使用 "iClose"。

但当我用

iClose("EURUSD",PERIOD_M1,0)---> 我得到当前价格

iClose("EURCHF",PERIOD_M1,0)---> 它的返回值为零

我还可以如何在策略测试器中 获得不同工具的当前报价?谢谢你

 
faton:

MT4测试器不是多币种的。换句话说,只有单一货币的EA可以被测试。

 
moskitman:

MT4测试器不是多币种的。换句话说,只有单一货币的EA可以被测试。


谢谢
 
faton:

谢谢

更确切地说,在一个工具上测试,你可以使用其他工具进行分析。
 
sergeev:


谢谢你的帮助!))。
 
DhP:

或者看起来是这样。

谢谢你的反馈!!!非常有帮助!!。
 
7777877:

下午好。我有以下问题。 位于MQL4.communityMQL4,在 "简单的 MQL 程序 "部分,包含一个 tradingexpert.mq4例子 ,内容如下(见附件文件)。外部变量extern double StopLoss =200extern double TakeProfit =39 是在第1-2块中声明。8-9块调用New_Stop(StopLoss)New_Stop(TakeProfit) 函数来计算SLTP 参数。在11-12块中有关于该功能的描述。

问题New_Stop 函数的正式参数具有int 类型(int Parametr),而在函数调用 New_Stop(StopLoss)(New_Stop(TakeProfit))中传递的参数具有double 类型。在MQL4 书中,在MQL4.community 的 "语言基础 "一章中的 "函数 "部分,"函数属性 "小节说"函数调用中传递的参数的数量、类型 和顺序必须与函数描述中传递的正式参数的数量、类型 和顺序一致(有默认参数的函数调用除外--见函数调用和函数描述及返回操作符。如何解释这个矛盾:根据后者,在声明StopLossTakeProfit 变量时,我应该声明int 类型,而不是double(编译器没有产生任何错误)?

提前感谢您的回答,不要在论坛上乱扔垃圾。

外部参数(extern double StopLoss =200; extern double TakeProfit =39;),原则上应该是整数类型(更确切地说,根据作者的想法--它是一个以点为单位的值)。在调用函数时,会使用隐式类型转换。浮点类型被转换为整数类型,并损失了精度。在这种情况下,这并不重要:止损和利润的大小按计划是以点为单位设置的--它始终是整数。

IMHO,这个例子的代码写得很差。

使用常数的绝对值是一种非常糟糕和错误的风格,有记忆性的名称。

         if (OrderType()>1)                     // Попался отложенный
           {
 

顺序枚举的最糟糕的实现:很难想出一个更 "弱智 "的实现。它似乎被特别放慢了速度:额外的计算、不必要的函数调用--就时间而言是最昂贵的操作,而且是在循环的每次迭代中。而且,尽管循环内的订单数量没有变化,但这是一个事实。

   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
 
对不起,我曾经在Rumuse上工作,现在正在学习MT4。我在这里仍然是一个 "傻瓜"。11 .09 .我不能启动引言。请告诉我什么是错的。我很高兴能帮助你。