【问题标题】:How to calculate lot based on account currency in Metatrader4如何在 Metatrader 4 中根据账户货币计算手数
【发布时间】:2018-10-29 01:17:49
【问题描述】:

我对这门语言有点陌生,但我有基础。

我想要的:开仓止损止盈。

我想以100欧元下单,我想将止损设置为10欧元,将止盈设置为5欧元。但正如我所见,OrderSend 方法需要大量来下订单,以及止损和止盈的水平。

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

我在网上搜索了一些 lot-pip-etc 计算,但毕竟我尝试过的没有奏效。这就是我想要计算的方式:

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 trading metatrader4


    【解决方案1】:

    欢迎使用 MQL4! 第一个问题是关于账户货币的——如果是美元(或者不是欧元)——你必须进行这种转换。好的,让我描述如何处理欧元余额。 您可以根据止损计算手数 - 在这种情况下,您可以使用 MarketInfo(_Symbol,MODE_TICKVALUE) 获取分时值。但是您必须知道在哪里退出(止损)的价格水平,是 1 点还是 100 点。让我们认为这是 100 个滴答(相当于 5 位经纪人的 10 个点)。那么,你的手数是
    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)。 关于止盈 - 以货币而不是价格水平等待止盈目标可能是一种奇怪的方法,但如果你需要 - 方法是一样的。

    【讨论】:

    • 嗨!感谢您的回答。我想用欧元账户交易欧元/美元。我的问题:什么是“止损”? 10欧怎么算? '双重结果'你为什么用相同的'lot_step'分割然后多重?这没有任何意义。
    • 这是一个程序员论坛,而不是交易者或想成为交易者的论坛......你应该在外汇论坛中弄清楚关于止损的问题。很多 - 我刚刚编辑过,请再检查一遍
    • 是的,我知道我的大部分问题不是关于如何编程,但我想我可以像往常一样在这里得到答案。专注于我的问题的编程方面:你能告诉我 MQL4 中止损和止盈的单位是什么吗?还很多?还是点子?还是价格?
    • 进场止损止盈都是价格。您可以根据规则计算止损 - 输入减去 X 点数或刻度,或者也可以以百分比计算。无论如何,它与平衡无关。同时,在止损情况下可能损失的金额在账户余额中指定,是手数、分时值以及入场价和止损之间分时数的乘积
    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2018-11-12
    • 2013-04-04
    • 1970-01-01
    相关资源
    最近更新 更多