如何在Metatrader4中根据账户货币计算手数



我对这种语言有点陌生,但我有基础知识。

我想要的:开立止损并获利的头寸。

我想用 100 欧元下订单,我想将止损设置为 10 欧元,并将止盈设置为 5 欧元。但正如我所看到的,OrderSend 方法需要很多下订单,以及止损和获利水平。

我的问题是:如何根据我要设置的欧元金额计算这些值?

我在网上搜索了一些手点等计算,但毕竟我尝试的都没有奏效。这就是我想计算的方式:

double AmountToTradeInEuro = 100;
double AmountToTakeInEuro = 5;
double AmountToMaxLossInEuro = 10;
double Lots = AmountToTradeInEuro / MarketInfo(Symbol(), MODE_TICKVALUE);
double StopLossLevel = AmountToTakeInEuro / MarketInfo(Symbol(), MODE_TICKVALUE);
double TakeProfitLevel = AmountToMaxLossInEuro / MarketInfo(Symbol(), MODE_TICKVALUE);
OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, StopLossLevel, TakeProfitLevel);

基本上,我想知道如何计算 100 欧元的手数以及如何计算止损和止盈的水平。

止损和止盈水平也很多吗?还是它们是不同的单位?

欢迎来到 MQL4! 第一个问题是关于账户货币 - 如果是美元(或其他不是欧元的东西) - 你必须进行这样的转换。好的,让我描述如何处理欧元余额。 您可以根据止损计算手数 - 在这种情况下,您可以使用MarketInfo(_Symbol,MODE_TICKVALUE)获取即时报价值。但是您必须知道退出(止损)的价格水平,无论是 1 点还是 100 点。让我们认为这是 100 个即时报价(等于 10 个点的 5 位数经纪人)。然后,您的手数double lot = AmountToMaxLoss / (MarketInfor(_Symbol, MODE_TICKVALUE) * stoploss)
,然后您必须规范化结果:

double lot_step=MarketInfo(_Symbol, MODE_LOTSTEP); double result = lot_step * NormalizeDouble(lot / lot_step, 0);然后检查该result > MarketInfo(_Symbol, MODE_MINLOT)。 关于止盈 - 以货币而不是价格水平等待您的止盈目标可能是一种奇怪的方法,但如果您需要 - 方式是相同的。

最新更新