帮助升级到MetaTrader 5而没有损失 - 页 15

 
Valmars:

...

Valery,告诉我calc.mq5 中的这段代码是什么意思。

...

if(StringSubstr(Symbol(), 3, 3)=="CAD") { xxx=1.2175;   }
if(StringSubstr(Symbol(), 3, 3)=="JPY") { xxx=91.425;   }
if(StringSubstr(Symbol(), 3, 3)=="CHF") { xxx=1.1631;   }
if(StringSubstr(Symbol(), 3, 3)=="AUD") { xxx=1/0.6800; }
if(StringSubstr(Symbol(), 3, 3)=="NZD") { xxx=1/0.54;   }
if(StringSubstr(Symbol(), 3, 3)=="GPB") { xxx=1/1.49;   }
if(StringSubstr(Symbol(), 3, 3)=="EUR") { xxx=1/1.3015; }

...

也就是说,为什么xxx 变量被分配了固定值?

---

还有一个问题。帮助中包含了关于外汇 利润计算的不完整信息,不是吗?这意味着,只给出了反向报价(XXXUSD)的公式来计算利润。

识别器

描述

公式

符号_计算_模式_外汇

外汇模式- 外汇的利润和保证金计算

保证金: 批量*合同大小/杠杆率

利润:(收盘价-开盘价)*合约大小*手数

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
tol64:

还有一个问题。事实证明,帮助是不完整的,关于外汇 的利润计算信息?这意味着,利润计算公式只针对反向报价(XXXUSD)提出。

是的,看来你是对的。到目前为止,你可以在"货币交易的ABC"一文中了解到利润的计算。
Азбука торговли валютами - Статьи по MQL4
  • www.mql5.com
Азбука торговли валютами - Статьи по MQL4: особенности автоматических торговых стратегий
 
Rosh:
是的,你似乎是对的。现在你可以在"货币交易的ABC"一文中了解利润的计算。

谢谢你。这篇文章绝对应该作为小抄收藏起来,因为我不可能把所有东西都记在脑子里。更好的是,如果你在帮助中添加一个表格,这样所有的东西都集中在一起。:)

---

和固定值(在一个新的头是有必要看的:)),所以我已经理解了一个案例,如果没有数据。但这些数值应根据汇率的变化而不断修正。这就是为什么最好是输出没有数据的信息,而不是错误的值。

 
tol64: 而我理解的是固定值(当脑子里一片空白时:)),以防没有数据。但是,这些数值应该根据一种或另一种货币的汇率而一直被纠正。这就是为什么显示没有数据的信息,而不是显示不正确的数值。

是的,你说得很对。我像作者那样做了,我太懒了,我没有时间......。对于MT4的交叉汇率,你必须在 "市场观察 "窗口明确选择以美元表示的两种货币的符号,即例如,对于NZDJPY,你必须选择USDJPY 和NZDUSD。作者在序言中对这一点有一个免责声明。

"对于XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

USDYYY或XXXUSD主要货币对(例如,GPBJPY在市场审查窗口应打开

USDJPY必须是开放的)"。

在MT5中,最好把这个问题留给指标本身。

 

Piligrim:

Valery (Valmars),你认为就重新包装的复杂性而言,提供你在MQL5中也重新做这个指标是否有意义?之前的那篇,由你翻译的,效果很好!

你不能为MT5修改这个指标,因为MT5没有(也永远不会有)独立的图表。该指标在MT4中是如何工作的?它创建了一个具有非标准时期的独立图表,随着一个新的报价的到来,它将其保存在这个非标准时期的.hst文件中。然后你打开这个图表。在每个tick上,指标在指标dll的帮助下更新(重绘)它。因此,你看到的是一个实时更新的非标准周期的图表。

在MT5中,甚至PERIOD.hc文件的格式(标准时期的图表是在此基础上建立的)也没有被开发者打开,可能是因为他们不能建立 "左手 "的图表。你可以在这里 看到关于带有任意周期的图形的争论。

 
Valmars:

是的,你说得很对。我像作者那样做了,我太懒了,我没有时间......。对于MT4的交叉汇率,你必须在 "市场观察 "窗口明确选择以美元表示的两种货币的符号,即例如,对于NZDJPY,你必须选择USDJPY和NZDUSD。作者在序言中对此有一个免责声明。

"对于XXXX年的十字架,相应的

主要货币对USDYYY或XXXUSD(例如,市场观察窗口中的GPBJPY必须是

是开放的USDJPY)"。

在MT5中,最好把这个问题留给指标本身。

那么,用这段代码代替那个有固定值的列表就可以了?:

bool flgExit=false;
string arrSymbols[7]={ "CAD","JPY","CHF","AUD","NZD","GBP","EUR" };
//---
for(int i=ArraySize(arrSymbols)-1; i>=0; i--)
  {
   if(flgExit) { break; }
   //---
   if(StringSubstr(Symbol(),3,3)==arrSymbols[i])
     {
      for(int j=SymbolsTotal(false)-1; j>=0; j--)
        {
         if(SymbolName(j,false)=="USD"+arrSymbols[i]+"")
           {
            SymbolSelect("USD"+arrSymbols[i]+"",true);
            //---
            if((xxx=SymbolInfoDouble(SymbolName(j,true),SYMBOL_BID))<=0)
              {
               Comment("Ошибка ("+IntegerToString(GetLastError())+") при получении данных по символу "+SymbolName(j,true)+""); return(0);
              }
            else { flgExit=true; break; }
           }
       }
   }
}
 
Valmars:

这个指标不能转换到MT5,因为MT5没有(也不会有)自主图表。该指标在MT4中是如何工作的?它创建了一个具有非标准时期的独立图表,随着一个新的报价的到来,它将其保存在这个非标准时期的.hst文件中。然后你打开这个图表。在每个tick上,指标在指标dll的帮助下更新(重绘)它。因此,你会看到一个实时更新的非标准周期的图表。

在MT5中,甚至PERIOD.hc文件的格式(标准时期的图表使用)也没有被开发人员披露,可能是因为他们不允许制作任何 "左手 "图表。你可以在这里 看到关于带有任意周期的图形的争论。

在任何情况下,谢谢你,瓦莱里!对我来说,作为一个非程序员,在为一些超出我能力范围的问题寻找可能的解决方案方面,可理解的专业咨询要好得多。

 
tol64:

那么,代替那个固定值列表,这段代码可以正常工作吗?:

是的,只要对十字架的第二个字符也执行它,并把它放在inite中。

 
Valmars:
是的,只要对第二个交叉字符也这样做,并把它放入inite。

瓦莱里,如果你有空闲时间,看一下更正后的版本。考虑到上面讨论的一切,现在做得正确吗?谢谢你。


附加的文件:
 
tol64:

...

更新了上述文件(calcdriskprofit.mq5)。纠正了错别字。而不是GBP,是GPB。:)