找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 9|回复: 0

请教高手如何解决错误代码4756问题

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-23 22:44:00 | 显示全部楼层 |阅读模式
最后由 ken138888 于 2023-10-24 14:59 编辑

需求:当价格到达设定的区间时,开始修改止和止损价格。

问题:用MT5的“1分钟OHLC”模式回测时,一切正常,但用“每个点基于实时点”回测时,日志就显示4756错误代码,如下图显示:









代码如下:void yidong(int tppoint_1,int tppoint_2,string symbol,ENUM_POSITION_TYPE type,int magic,string com) {//  tppoint_1=400 //  tppoint_2=500

   int t=PositionsTotal();   for(int i=t-1;i>=0;i--)     {       if(PositionGetTicket(i)>0)        {          if(PositionGetString(POSITION_SYMBOL)==symbol)           {              double bid=SymbolInfoDouble(symbol,SYMBOL_BID);              double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);              long dig=SymbolInfoInteger(symbol,SYMBOL_DIGITS);              double pot=SymbolInfoDouble(symbol,SYMBOL_POINT);              double op=PositionGetDouble(POSITION_PRICE_OPEN);              double sl= PositionGetDouble(POSITION_SL);              double tp=PositionGetDouble(POSITION_TP);  

             if(type==POSITION_TYPE_BUY && magic == PositionGetInteger(POSITION_MAGIC) && com == PositionGetString(POSITION_COMMENT) )              {     

                if(bid-op>=pot*tppoint_1  && bid-op<pot*tppoint_2 && sl<op+tppoint_1*pot )

                   {                     MqlTradeRequest request={};                     MqlTradeResult  result={};                     request.action=TRADE_ACTION_SLTP;                     request.position=PositionGetTicket(i);                     request.symbol=symbol;                     request.sl=op+tppoint_1*pot;                     request.tp=op+tppoint_2*pot;                     request.comment=com;                     request.magic=magic;                     if(!OrderSend(request,result))                     PrintFormat("OrderSend error %d",GetLastError());                     }

              }

           if(type==POSITION_TYPE_SELL && magic == PositionGetInteger(POSITION_MAGIC) && com == PositionGetString(POSITION_COMMENT) )              {  

             if( op-ask>=pot*tppoint_1 && op-ask<tppoint_2*pot && op-tppoint_1*pot<sl  )

                      {

                       MqlTradeRequest request={};                       MqlTradeResult  result={};                       request.action=TRADE_ACTION_SLTP;                       request.position=PositionGetTicket(i);                       request.symbol=symbol;                       request.sl=op-tppoint_1*pot ;                       request.tp=op-tppoint_2*pot ;                       request.comment=com;                       request.magic=magic;                       if(!OrderSend(request,result))                       PrintFormat("OrderSend error %d",GetLastError());                     }

              }           }         }     } }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-12 11:09 , Processed in 0.095998 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表