问题描述
我想编写一个 EA,当打开买入/卖出头寸时,利润为 60 点。如果仓位达到-20点利润,则在第一个仓位的反方向开仓,盈利60点
听到代码:
if(orderType==OP_BUY)
ticket = OrderSend(Symbol(),orderType,lots,openPrice,5,stopLossprice,takeProfitPrice,"AFKARIAUS ",MagicBuy,clrGreen);
if(orderType==OP_SELL)
ticket = OrderSend(Symbol(),MagicSell,clrGreen);
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TradES))
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicBuy && OrderType()==OP_BUY)
BuyTicket=OrderSend(Symbol(),OP_SELLSTOP,OrderOpenPrice()-20*Point,OrderOpenPrice()+60*Point,OrderOpenPrice()-20*Point-60*Point,"AFKARIAUS",MagicBuy+1,clrBlue);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicSell && OrderType()==OP_SELL)
SellTicket=OrderSend(Symbol(),OP_BUYSTOP,OrderOpenPrice()+20*Point,OrderOpenPrice()-60*Point,OrderOpenPrice()+20*Point+60*Point,MagicSell+1,clrBlue);
}
一切正常
但是当用真钱测试时,有佣金、点差和掉期。我不知道我该怎么办
请帮帮我
谢谢
解决方法
包含掉期和佣金的智能解决方案就是处理该订单:
-
订单选择
-
OrderSwap 和 OrderCommission(总和)
if (OrderSelect(ticket_number,SELECT_BY_TICKET,MODE_TRADES)==true) { current_trade_absolute_profit = OrderSwap() + OrderProfit() + OrderCommission(); }
您还可以像这样查找和存储点值:
double tick_value = MarketInfo(Symbol(),MODE_TICKVALUE);
然后计算当前的点数价格,之后您可以在每次赚取更多点数时简单地替换双倍值
if (current_pip_number > highest_pip_number)
{
highest_pip_number = current_pip_number;
}
if (highest_pip_number < current_pip_number + 20)
{
OrderClose(ticket_number,lotsize,iClose(NULL,0),slippage,clrViolet);
}