请高手指教:EA如何实现第一个单子和最后一个单子同时平仓
如题:
举个例子:比如马丁亏损加仓模式,
初始第一单0.1手,然后0.2, 0.4, 0.8,现在加仓到了1.6手,
当1.6手的单子和0.1手的单子总盈利大于50美金时,同时把这两个单子平仓。其他单子不平仓。
就是把持仓中最早建仓的和最晚建仓的单子同时平仓。
这个需要如何实现,我是EA编程刚入门不久,请高手指教。
如果方便尽量详细点,谢谢了
|
|
|
|
|
DDD
DDD
DDD
DDD
DDD
DDD
C
DDD
//先查询第一单和最后一单的时间
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY)
{
if(OrderOpenTime()>lastBuyTime)
lastBuyTime=OrderOpenTime();//最后一单时间
if(oneBuyTime>0)
{
if(OrderOpenTime()<oneBuyTime)
oneBuyTime=OrderOpenTime();
}
else
{
oneBuyTime=OrderOpenTime();
}
}
if(OrderType()==OP_SELL)
{
if(OrderOpenTime()>lastSellTime)
lastSellTime=OrderOpenTime();//最后一单时间
if(oneSellTime>0)
{
if(OrderOpenTime()<oneSellTime)
oneSellTime=OrderOpenTime();
}
else
{
oneSellTime=OrderOpenTime();
}
}
}
}
//再查询两单的盈利金额
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(oneBuyTime==OrderOpenTime())
{
oneBuyPrice=OrderOpenPrice();//第一单
oneBuyProfit=OrderProfit() + OrderCommission() + OrderSwap();
}
if(oneSellTime==OrderOpenTime())
{
oneSellPrice=OrderOpenPrice();//第一单
oneSellProfit=OrderProfit() + OrderCommission() + OrderSwap();
}
if(lastBuyTime==OrderOpenTime())
{
lastBuyPrice=OrderOpenPrice();//最后一单
lastBuyProfit=OrderProfit() + OrderCommission() + OrderSwap();
}
if(lastSellTime==OrderOpenTime())
{
lastSellPrice=OrderOpenPrice();//最后一单
lastSellProfit=OrderProfit() + OrderCommission() + OrderSwap();
}
}
}
//盈利金额>50
if(oneBuyProfit<0 &&lastBuyProfit-oneBuyProfit>50)
{
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(oneSellTime==OrderOpenTime())
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),30);
}
if(lastSellTime==OrderOpenTime())
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),30);
}
}
}
} |
|
|
|
|
DD
DD
DDD