系统交易

突破盈亏平衡后再交易 - MetaTrader 4的高手运用
MetaTrader4
突破盈亏平衡后再交易 - MetaTrader 4的高手运用

大家好!今天我们来聊聊如何在交易中利用盈亏平衡点来优化我们的交易策略。这个小小的EA(专家顾问)最厉害的地方就是它的订单计数功能。 int OrdersCounter()   {    int counter=0; //---    for(int i=OrdersTotal()-1; i>=0; i--)       if(OrderSelect(i,SELECT_BY_POS))          if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // 判断订单是否由这个EA生成            { //--- 如果盈亏平衡点已经达到    /* 仅针对买入,当止损价高于或等于开盘价时有效。注意,这种实现方式不适合有挂单的情况,仅对买入和卖出适用 */             double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();             if(!XBreakeven) // 如果只有盈亏平衡还未生效'               {                counter++; // 计数当前持仓               }            }    return counter;   } 我们只计算那些尚未达到盈亏平衡的订单。简单来说,就是我们只计算那些没有保护其开盘价的订单。 double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();             if(!XBreakeven) // 如果盈亏平衡和跟踪止损尚未生效' 通过这个计数器,我们可以限制最大持仓数量。在本例中,我们将其设置为一次只能有1个订单。    if(OrdersCounter()<MaximumOrders) 因此,每当达到盈亏平衡时,这个函数将忽略计数。由于我们在这个例子中只有一个持仓,它将返回零,然后我们就可以开新的订单,整个过程就这样循环下去。 当然,这一切的实现都得益于我创建的盈亏平衡功能。 void BreakEvenFunction()   { //---    for(int i=OrdersTotal()-1; i>=0; i--)       if(OrderSelect(i,SELECT_BY_POS))          if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())            { // 针对买入,如果买入价高于开盘价加上盈亏平衡点,反之适用于卖出             double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());             /* 仅在止损价等于或高于开盘价时适用于买入,反之适用于卖出 */             if(xHybrid)               {                bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);               }            }   } 你们也试试看吧!

2021.07.13
如何使用Validate Me框架为MetaTrader 4编写交易机器人
MetaTrader4
如何使用Validate Me框架为MetaTrader 4编写交易机器人

Validate Me框架 在本文中,我将分享如何通过市场买入和卖出订单来编写一个交易机器人,以适应市场验证的需求。这个框架包含了一些必须通过的检查,以确保交易机器人在市场上发布前具备合格的标准。(仅供学习参考) 买入代码示例 ask=MarketInfo(_Symbol,MODE_ASK);          bid=MarketInfo(_Symbol,MODE_BID);          sl=(OrderStopPips==0)?0.0:bid-ExtOrderStop;          if(sl!=0.0 && ExtOrderStop<StopLevel)             sl=bid-StopLevel;          tp=(OrderTakePips==0)?0.0:ask+ExtOrderTake;          if(tp!=0.0 && ExtOrderTake<StopLevel)             tp=ask+StopLevel;          GetLot=CheckVolumeValue(Lots);          if(!CheckStopLoss_Takeprofit(OP_BUY,ExtOrderStop,ExtOrderTake))             return;          if(CheckMoneyForTrade(GetLot,OP_BUY))             order=OrderSend(_Symbol,OP_BUY,GetLot,ask,10,sl,tp,"框架示例",678,0,Blue); 框架输入参数

2021.06.22
首页 上一页 9 10 11 12 13 14 15 16 17 18 19 下一页 末页