Backgound:
问题是:如何计算"交换价值"就acc而言货币在mt5。换句话说,我将为一天的翻转支付多少美分?
目前有这个" mql5"脚本:
#include <Trade\SymbolInfo.mqh>
void OnStart() {
CSymbolInfo sym; // symbol informations object
sym.Name( ChartSymbol() ); // get the object for the current chart symbol
if( sym.SwapMode() == SYMBOL_SWAP_MODE_POINTS) {
double lot = 0.1;
double swapUSD_long = sym.SwapLong() * 0; // need help here
double swapUSD_short = sym.SwapShort() * 0; // need help here
PrintFormat(
"symbol: %s swap_long: %.2f swap_short: %.2f swapUSD_long: %.2f swapUSD_short: %.2f",
sym.Name(),
sym.SwapLong(),
sym.SwapShort(),
swapUSD_long,
swapUSD_short
);
}
}
将脚本附加到EURAUD时,会打印到终端:
符号:EURAUD swap_long:-10.80 swap_short:6.80 swapUSD_long:0.00 swapUSD_short:0.00
所以:空头头寸的展期价格为6.8点。如何用当前汇率将其转换为美元?为此需要:
只需要一些帮助;)
答案 0 :(得分:0)
如果我理解您的问题,您可以使用TickValueProfit
和TickValueLoss
。如果向某个方向的交换为负(您将支付),请使用TickvalueLoss,并在正面使用TickValueProfit。
您可以像下一个一样为此创建一个函数:
double swap_value_currency(double value_point, double tickprofit, double tickloss)
{
if( value_point == 0.0 ) { return(0.0); }
if( value_point < 0.0 ) {
return( val * tickloss );
}
return( value_point * tickprofit);
}
swap_value_currency
返回交换值取决于一个标准批次的输赢。
所以你的代码片段可以是:
if( sym.SwapMode() == SYMBOL_SWAP_MODE_POINTS)
{
double swval_long = swap_value_currency(sym.SwapLong(), sym.TickValueProfit(), sym.TickValueLoss());
double swval_short= swap_vallue_currency(sym.SwapShort(), sym.TickValueProfit(), sym.TickValueLoss() );
}
因为这是一个标准手,你需要将它与你的手数相乘......