Ava Trader MT4 Terminal EA交易(4)注册模拟账号,写第一个策略

2023-05-16

注册模拟号

https://myvip.avatrade.cn/

策略要求

监控一分钟k线,如果连续两根阳线,就 做多 设置 10 个点差值的 止盈跟 止损

新建ea模板 first1

代码如下

//+------------------------------------------------------------------+
//|                                                       first1.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, jiegemena."
#property link      "https://blog.csdn.net/jiegemena"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+


//--- input parameters
input int RedKNums = 2; // 连续几根阳线
input double ClearLoss = 10; // 止损点位
input double ClearProfit = 10; // 止盈点位

int OId = 0;
string sign1 = "order1";

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- 每个交易数据回调
   DealWork();
  }
//+------------------------------------------------------------------+


// 检测
void DealWork()
  {
   if(!CheckPosition1(OId))
     {
      Print("没有持仓");
      int max0 = 0;
      for(int i=0; i<RedKNums; i++)
        {
         if(GetKGreen(i + 1))
           {
            max0++;
           }
        }

      if(max0 == RedKNums)
        {
         Print("符合条件买入");
         Buy();
         Sleep(60 * 1000);
        }

     }
   else
     {
      Print("有持仓");
     }
  }


// 检查 前 i 分钟 是否阳线
bool GetKGreen(int i)
  {
   double k = GetKPoint(i);
   if(k > 0)
     {
      Print("k 大",k,":", Time[i]);
      return true;
     }
   Print("k 小",k,":", Time[i]);
   return false;
  }

// 前 i 分钟的 k线 差值
double GetKPoint(int i)
  {
   return Close[i]  - Open[i];
  }

// 做多
void Buy()
  {
   double BuyPri = Ask;

   double stoploss = BuyPri - ClearLoss*Point;
   double takeprofit = BuyPri + ClearProfit*Point;
   Print("购买");
   Print("当前:", BuyPri);
   Print("stoploss:", stoploss);
   Print("takeprofit:", takeprofit);
   OId = OrderSend(Symbol(),OP_BUY,1,BuyPri,3,stoploss,takeprofit,sign1,1314168,0,clrGreen);
   if(OId<0)
     {
      Print(" 交易失败 OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully:", OId);
  }

// 做空
void Sell1()
  {
   double SellPri = Bid;

   double stoploss = SellPri + ClearProfit*Point;
   double takeprofit = SellPri - ClearLoss*Point;
   Print("购买");
   Print("当前:", SellPri);
   Print("stoploss:", stoploss);
   Print("takeprofit:", takeprofit);
   OId = OrderSend(Symbol(),OP_SELL,1,SellPri,3,stoploss,takeprofit,sign1,1314168,0,clrGreen);
   if(OId<0)
     {
      Print("OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully:", OId);
  }


// 笨方法检测持仓
bool CheckPosition1(int oid)
  {
   string comment;
// 单号是否存在
   if(OrderSelect(oid,SELECT_BY_TICKET)==false)
     {
      Print("OrderSelect failed error code is",GetLastError());
      return false;
     }
   comment = OrderComment();
   if(comment == sign1)
     {
      return true;
     }
   return false;
  }
//+------------------------------------------------------------------+

点击编写

在这里插入图片描述

回到交易软件,把first1 拖到行情窗口,设置一分钟图

在这里插入图片描述

观察图标是否正常

在这里插入图片描述

只要有价格跳动,观察日志,已经在正常运行

在这里插入图片描述

程序符合条件

在这里插入图片描述

正常设置了 10 个点的止盈止损

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ava Trader MT4 Terminal EA交易(4)注册模拟账号,写第一个策略 的相关文章

随机推荐