初学者的问题 MQL5 MT5 MetaTrader 5 - 页 769

 
Vitaly Muzichenko:

谢谢你的答复,但如何使其发挥作用,我不知道。

我将最后一次尝试接触......我没有问题中指出的这种工具的账户,但这里有一个在外汇上工作的脚本。结果与该截图中出现的提示值相吻合

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vitaly Muzichenko, 2017.07.26 23:56

我有一手买入,当我设置takeprofit时,终端将其重新计算为美元,因为我的账户是以美元计价的。

但当我用公式(close_price-open_price)*Lots*TickPrice/TickSize 来计算时,我的止盈额是以卢布计算的。

在图表中SBRF-9.17

如果我们用卢布除以美元汇率174.99/USDRUR=2.93美元,我们将得到以美元计算的实得利润。

如何以编程方式编写,并使其自行计算?

/********************Script program start function*******************/
void OnStart()
{
 for(int i = 0; i < PositionsTotal(); i++)
  {
   ulong positionTicket = PositionGetTicket(i);
   string positionSymbol = PositionGetString(POSITION_SYMBOL);
   ENUM_POSITION_TYPE positionType = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   double positionTP = PositionGetDouble(POSITION_TP);
   double positionOpen = PositionGetDouble(POSITION_PRICE_OPEN);
   double point = SymbolInfoDouble(positionSymbol, SYMBOL_POINT);
   int profitPoint = int(fabs(positionOpen-positionTP)/point);
   double positionProfit = PositionGetDouble(POSITION_PROFIT);
   string symbolCurrencyProfit = SymbolInfoString(positionSymbol, SYMBOL_CURRENCY_PROFIT);
   int currentProfit = positionType == POSITION_TYPE_SELL
    ? int((positionOpen-PositionGetDouble(POSITION_PRICE_CURRENT))/point)
    : int((PositionGetDouble(POSITION_PRICE_CURRENT)-positionOpen)/point);
   Print("PositionSymbol ", positionSymbol);
   Print("SymbolCurrencyProfit ", symbolCurrencyProfit);
   Print("PositionTP ", DoubleToString(positionTP, (int)SymbolInfoInteger(positionSymbol, SYMBOL_DIGITS)));
   Print("PositionOpen ", DoubleToString(positionOpen, (int)SymbolInfoInteger(positionSymbol, SYMBOL_DIGITS)));
   Print("PositionProfit ", DoubleToString(positionProfit, 2));
   Print("ProfitPoint ", profitPoint);
   Print("CurrentProfit ", currentProfit);
   Print("ИТОГО ", positionProfit/currentProfit*profitPoint);
  }
   
}/*******************************************************************/

我有2个职位空缺。以下是该脚本的结果

2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionSymbol EURGBP
2017.07.27 13:30:48.517 posi (EURUSD,M15)       SymbolCurrencyProfit GBP
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionTP 0.88697
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionOpen 0.89197
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionProfit 14.47
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ProfitPoint 500
2017.07.27 13:30:48.517 posi (EURUSD,M15)       CurrentProfit 109
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ИТОГО 66.37614678899082
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionSymbol EURJPY
2017.07.27 13:30:48.517 posi (EURUSD,M15)       SymbolCurrencyProfit JPY
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionTP 130.940
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionOpen 130.440
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionProfit -0.90
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ProfitPoint 500
2017.07.27 13:30:48.517 posi (EURUSD,M15)       CurrentProfit -9
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ИТОГО 50.0


但是!!!。不幸的是,在平仓时,没有人会猜到利润货币对存款货币的报价会是多少。在这方面,一个绝对准确的数值是不可能确定的。嗯,没有办法展望未来。

 
Vitaly Muzichenko:

不,在开仓前计算利润/亏损,但要用存款的货币,而不是工具的货币。

在你的情况下,为什么要知道盈亏,而不是为了控制风险?- 我只是好奇--存款的货币是明确的,尽管不清楚在什么现实条件下会使用它。
 
Alexey Viktorov:

我将尝试最后一次伸出援手...我没有问题中提到的工具的账户,但这里有一个在外汇中工作的脚本。结果与作为提示出现的数值相吻合,如该截图所示


我有2个职位空缺。以下是脚本工作的结果


但是!!!。不幸的是,在平仓时,没有人会猜到利润货币对存款货币的报价会是多少。在这方面,一个绝对准确的数值是不可能确定的。嗯,没有办法展望未来。

以下是脚本显示的内容。

2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionSymbol SBRF-9.17
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        SymbolCurrencyProfit RUR
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionTP 16777
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionOpen 16677
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionProfit 1.07
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        ProfitPoint 100
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        CurrentProfit 64
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        ИТОГО 1.671875
 
Vitaly Muzichenko:

这就是脚本所显示的。

维塔利,你可以自己想办法......原则是比3卢布更简单...

PositionGetDouble(POSITION_PROFIT);

返回以存款货币 计算的头寸利润。如果我们用这个值除以开盘价和当前价之间的点数,我们就可以得到存款货币的点值...只需将该值乘以从开盘到平仓的点数,就可以了。但由于我不能,也懒得为此注册一个新账户,所以你必须自己想办法。但就是不知道你应该得到什么,你怎么能知道结果是否正确?你可能需要打印一些额外的数值来理解。什么算作一个条款?我不知道,也许必须以某种方式考虑到这一点。或者说,标准合同的规模是否以某种方式被考虑在内......我不知道。

 

如何理解灰色图表


在正常图片模式下


 

在MT4中,你将鼠标指向图表,你可以看到它是什么点 - 但这里的图片是静态的 - 丑陋。

 
我如何通过特定的指标(利润/亏损/PV)来绘制优化
 
大家好。我有一个问题,我已经把钱上传到我的MQL5账户,并下载了MetaTrader 5应用程序,但我不能把钱转到它上面开始交易。我需要帮助。
 
Minora125:
大家下午好。我遇到了一个问题,我已经把钱上传到我的MQL5账户,我也下载了MetaTrader 5的应用程序,但我不能把钱转到里面开始交易。我需要帮助。

MQL5不是一家经纪公司,它不允许你在真实账户上进行交易。为了转移资金,你可以使用服务:自由职业者、市场、云。

向服务台发送你的请求(在你的个人资料中有一个链接),并要求退还错误转移的资金。

 

在测试器中通过后,图表打开时有交易,我如何关闭这个功能?