colin.hong 发表于 2024-6-16 11:36:07

请教大神,均价盈利300点启动均价保本点数50点,怎么写

extern int    均价保本启动点数=300;
extern int    均价保本点数=50;   
===========================================
   if(是否开启均价止损==true)
      {
         on_off=false;
         move_sl();
         for(i=0; i<OrdersTotal(); i++)
         {
            if(OrderSelect(i,SELECT_BY_POS))
            {
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==识别码3)
               {
                  if(OrderType()==OP_BUY)
                  {
                     if(OrderStopLoss()==0 && 最后的多单价格>Ask-均价止损点数*Point)
                     {
                        double slp=Ask-均价止损点数*Point;
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slp,OrderTakeProfit(),0))
                           Print(" 修改多均价止损");
                     }
                     if(NormalizeDouble(OrderTakeProfit()-btpp,8)!=0)
                     {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),bslpp,btpp,0))
                           Print(" 修改多均价止盈成功");
                     }
                     if(OrderStopLoss()<最后的多单价格 && (Ask-多第一单开单价格>均价保本点数*Point) && 均价保本点数>0 && (OrderTakeProfit()-(均价止盈点数-均价保本启动点数)*Point)<Ask)
                     {
                        slp=多第一单开单价格+均价保本点数*Point;      


                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slp,OrderTakeProfit(),0))
                           Print(" 修改多均价保本止损成功");
                     }
                  }


                  if(OrderType()==OP_SELL)
                  {

                     if(OrderStopLoss()==0 && 最后的空单价格<Bid+均价止损点数*Point)
                     {
                        slp=Bid+均价止损点数*Point;
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slp,OrderTakeProfit(),0))
                           Print(" 修改空均价止损成功");

                     }
                     if(NormalizeDouble(OrderTakeProfit()-stpp,8)!=0)
                     {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),sslpp,stpp,0))
                           Print(" 修改空均价止盈成功");
                     }
                     if(OrderStopLoss()> 最后的空单价格 && 空第一单开单价格-Bid>均价保本点数*Point && 均价保本点数>0 && (OrderTakeProfit()+(均价止盈点数-均价保本启动点数)*Point)>Bid)
                     {
                        slp=空第一单开单价格-均价保本点数*Point;

                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slp,OrderTakeProfit(),0))
                           Print(" 修改空均价保本止损成功");

                     }

                  }
               }
            }
         }
      }

gupeng2008100 发表于 2024-6-24 11:09:00

问ai他就写出来了

colin.hong 发表于 2024-6-29 17:27:27

// 假设您使用的交易平台支持MQL4或MQL5语言

// 初始化函数
int OnInit() {
    // 设置均价盈利目标和保本点数
    double profit_target = 300.0; // 均价盈利目标
    double stop_loss = 50.0; // 启动均价保本点数
   
    // 创建订单
    if (OrderSend(NULL, OP_BUY, 1, Ask, 1, NULL, NULL, profit_target, stop_loss) > 0) {
      return INIT_SUCCEEDED;
    } else {
      return INIT_FAILED;
    }
}

// 图表事件处理函数
void OnChartEvent(int event_type, const void* event_data) {
    // 检查是否达到均价盈利目标
    if (event_type == EVENT_PRICE && event_data != NULL) {
      double current_price = *(double*)event_data;
      double profit = current_price - Ask; // 计算当前盈利
      
      if (profit >= profit_target) {
            // 达到均价盈利目标,启动保本点策略
            if (OrderSend(NULL, OP_CLOSE, 1, Ask, 1, NULL, NULL, profit_target, stop_loss) > 0) {
                Print("已达到均价盈利目标,启动保本点策略。");
            } else {
                Print("未能启动保本点策略,请检查订单状态。");
            }
      }
    }
}
页: [1]
查看完整版本: 请教大神,均价盈利300点启动均价保本点数50点,怎么写