98评论

0收藏

有懂的不,看看这个问题在哪里,

avatar da.da | 8475 人阅读 | 98 人评论 | 2021-12-27


      if(OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"",MAGICMA,0,Blue)<0)
   


      if(OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,clrRed)<0)
        

""
还没有人打赏,支持一下

评论|共 98 个

movie

发表于 2021-12-28 14:02:55 | 显示全部楼层

注意lots变量大小写,这就两判断下单是否成功的条件句

da.da

发表于 2021-12-28 18:57:11 | 显示全部楼层

大小写都试了,还是不能用

盈胜外汇

发表于 2021-12-31 16:39:36 | 显示全部楼层

顶下

triple3

发表于 2021-12-31 16:44:35 | 显示全部楼层

if(OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"",MAGICMA,0,Blue)==false)

逍遥卜算子

发表于 2022-1-1 12:39:24 | 显示全部楼层

da.da

发表于 2022-1-5 10:33:39 | 显示全部楼层

triple3 发表于 2021-12-31 16:44
if(OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"",MAGICMA,0,Blue)==false)

还是用不了呀

da.da

发表于 2022-1-5 10:35:06 | 显示全部楼层

triple3 发表于 2021-12-31 16:44
if(OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"",MAGICMA,0,Blue)==false)

//+------------------------------------------------------------------+
//|                                                           01.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#define MAGICMA  20211220
//--- input parameters
input double   Input1=0.01;//交易手数
input int shortMaPeriod=12; //短期均线
input int LongMaPeriod=48;//长期均线
input ENUM_MA_METHOD method = MODE_SMA;//均线方式
//+------------------------------------------------------------------+
//主函数入口:OnTick 函数每一个报价执行一次                                |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//---检查是否有单子
   if(IsOrderExist()==false)
      CheckForOpen();//没有单子就检查是否能开单
   else
      CheckForClose();//有单子就检查是否应该平仓
  }
//+------------------------------------------------------------------+
//|检查是否有单子,true=有单子,false=没单子
//+------------------------------------------------------------------+
bool IsOrderExist()
  {
   for(int i=0;i<OrdersTotal();i++)//扫描所有单子
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)break;//挨个选中
      if(OrderSymbol()!=Symbol())continue;//货币名称不符,跳过
      if(OrderMagicNumber()!=MAGICMA)continue;//魔术号不符,跳过
      return(true);//找到单子了,返回true
     }
   return(false);//没有找到单子,返回false
  }
//+------------------------------------------------------------------+
//|判断开仓条件
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   if(Volume[0]>1)
      return;//每次K线收线才开单

   double maShort=iMA(NULL,0,shortMaPeriod,0,method,PRICE_CLOSE,0);//短期移动平均线1
   double maLong=iMA(NULL,0,LongMaPeriod,0,method,PRICE_CLOSE,0);//长期移动平均线2
//做多条件:价格在两条均线的上方,并且价格向上穿越短期均线
   if(Open[1]<maShort && Close[1]>maShort && Close[1]>maLong)
     {
      if(OrderSend(Symbol(),OP_BUY,LOTS,Ask,3,0,0,"",MAGICMA,0,clrBlue)<0)
      Print("开仓失败:",GetLastError());
     }
//做空条件:价格在两条均线的下方,并且价格向下穿越短期均线
   if(Open[1]>maShort && Close[1]<maShort && Close[1]<maLong)
     {
      if(OrderSend(Symbol(),OP_SELL,LOTS,Bid,3,0,0,"",MAGICMA,0,clrRed)<0)
         Print("开仓失败:",GetLastError());
     }
  }
//+------------------------------------------------------------------+
//|判断平仓条件
//+------------------------------------------------------------------+
void CheckForClose()
  {
   if(Volume[0]>1)
      return;//每次K线收线才平仓
   double maShort=iMA(NULL,0,shortMaPeriod,0,method,PRICE_CLOSE,0);//短期移动平均线
   for(int i=0; i<OrdersTotal(); i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)continue;
      if(OrderSymbol()!=Symbol())continue;//货币名称不符,跳过
      if(OrderMagicNumber()!=MAGICMA)continue;//魔术号不符,跳过
      if(OrderType()==OP_BUY)//多单
      {
         if(Open[1]>shortMaPeriod && Close[1]<shortMaPeriod)//价格向下穿越短期均线,平多单
         {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))//平仓
               Print("平仓失败:",GetLastError());
          }
        }  
      
      if(OrderType()==OP_SELL)//空单
      {   
       if(Open[1]<shortMaPeriod && Close[1]>MaPeriod)//价格向上穿越短期均线,平空单
        {   
             if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))//平仓
               Print("平仓失败:",GetLastError());
          }
        }
      }
     }   
//+------------------------------------------------------------------+

triple3

发表于 2022-1-5 19:30:35 | 显示全部楼层

//+------------------------------------------------------------------+
//|                                                           01.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#define MAGICMA  20211220
//--- input parameters
input double   Input1=0.01;//交易手数
input int shortMaPeriod=12; //短期均线
input int LongMaPeriod=48;//长期均线
input ENUM_MA_METHOD method = MODE_SMA;//均线方式
//+------------------------------------------------------------------+
//主函数入口:OnTick 函数每一个报价执行一次                                |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//---检查是否有单子
   if(IsOrderExist()==false)
      CheckForOpen();//没有单子就检查是否能开单
   else
      CheckForClose();//有单子就检查是否应该平仓
  }
//+------------------------------------------------------------------+
//|检查是否有单子,true=有单子,false=没单子
//+------------------------------------------------------------------+
bool IsOrderExist()
  {
   for(int i=0;i<OrdersTotal();i++)//扫描所有单子
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)break;//挨个选中
      if(OrderSymbol()!=Symbol())continue;//货币名称不符,跳过
      if(OrderMagicNumber()!=MAGICMA)continue;//魔术号不符,跳过
      return(true);//找到单子了,返回true
     }
   return(false);//没有找到单子,返回false
  }
//+------------------------------------------------------------------+
//|判断开仓条件
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   if(Volume[0]>1)
      return;//每次K线收线才开单

   double maShort=iMA(NULL,0,shortMaPeriod,0,method,PRICE_CLOSE,0);//短期移动平均线1
   double maLong=iMA(NULL,0,LongMaPeriod,0,method,PRICE_CLOSE,0);//长期移动平均线2
//做多条件:价格在两条均线的上方,并且价格向上穿越短期均线
   if(Open[1]<maShort && Close[1]>maShort && Close[1]>maLong)
     {
      if(OrderSend(Symbol(),OP_BUY,Input1,Ask,3,0,0,"",MAGICMA,0,clrBlue)<0)
      Print("开仓失败:",GetLastError());
     }
//做空条件:价格在两条均线的下方,并且价格向下穿越短期均线
   if(Open[1]>maShort && Close[1]<maShort && Close[1]<maLong)
     {
      if(OrderSend(Symbol(),OP_SELL,Input1,Bid,3,0,0,"",MAGICMA,0,clrRed)<0)
         Print("开仓失败:",GetLastError());
     }
  }
//+------------------------------------------------------------------+
//|判断平仓条件
//+------------------------------------------------------------------+
void CheckForClose()
  {
   if(Volume[0]>1)
      return;//每次K线收线才平仓
   double maShort=iMA(NULL,0,shortMaPeriod,0,method,PRICE_CLOSE,0);//短期移动平均线
   for(int i=0; i<OrdersTotal(); i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)continue;
      if(OrderSymbol()!=Symbol())continue;//货币名称不符,跳过
      if(OrderMagicNumber()!=MAGICMA)continue;//魔术号不符,跳过
      if(OrderType()==OP_BUY)//多单
      {
         if(Open[1]>shortMaPeriod && Close[1]<shortMaPeriod)//价格向下穿越短期均线,平多单
         {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))//平仓
               Print("平仓失败:",GetLastError());
          }
        }  
      
      if(OrderType()==OP_SELL)//空单
      {   
       if(Open[1]<shortMaPeriod && Close[1]>shortMaPeriod)//价格向上穿越短期均线,平空单
        {   
             if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))//平仓
               Print("平仓失败:",GetLastError());
          }
        }
      }
     }   
//+------------------------------------------------------------------+

金币

参与人数 1金币 +5 收起 理由
da.da + 5 谢谢,能用了,现在不怎么开仓

查看全部打赏

da.da

发表于 2022-1-6 10:48:41 | 显示全部楼层

triple3 发表于 2022-1-5 19:30
//+------------------------------------------------------------------+
//|                          ...

现在不平仓怎么解决,能加微跟你学学吗

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则