我对这种语言有点新意,但我有基础知识。
我想要的是:开出止损并获利的位置。
我想下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欧元的地段以及如何计算止损和止盈的水平。
止损和止盈水平也很多?或者他们是不同的单位?
答案 0 :(得分:1)
欢迎使用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)
。
关于takeprofit - 以货币而不是价格水平等待您的止盈目标可能是一种奇怪的方法,但如果您需要 - 方式是相同的。