`
大连IT精英
  • 浏览: 3503 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

CS2011

 
阅读更多
//+------------------------------------------------------------------+
//|                                                       cs2011.mq5 |
//|                                         Copyright ?2011, Xupypr |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2011, Xupypr"
#property version   "1.1"
//+-----------------------------------+
input double Risk=3; // Initial lot
input int TP=2200;
input int SL=0;
input int Fast=30;
input int Slow=500;
input int Sign=36;
//+-----------------------------------+
double Money,Deposit=5000;
int    MACD;
//+-----------------------------------+
void OnInit()
  {
   MACD=iMACD(NULL,0,Fast,Slow,Sign,PRICE_CLOSE);
  }
//+-----------------------------------+
void OnTick()
  {
   static bool UpSignal,DnSignal;
   if(TradeSignalCounter(UpSignal,DnSignal)) TradePerformer(UpSignal,DnSignal);
  }
//+-----------------------------------+
bool TradeSignalCounter(bool &UpSignal,bool &DnSignal)
  {
   if(Bars(_Symbol,0)<100) return(false);
   static int Recount;
   if(IsNewBar() || Recount)
     {
      double Ind[2],Sig[3];
      DnSignal=false;
      UpSignal=false;
      Recount=false;
      if(CopyBuffer(MACD,0,1,2,Ind)<0) Recount=true;
      if(CopyBuffer(MACD,1,1,3,Sig)<0) Recount=true;
      if(Recount==true) return(false);
      if(Ind[0]>0 && Ind[1]<0) DnSignal=true;
      if(Ind[0]<0 && Ind[1]>0) UpSignal=true;
      if(Ind[1]<0 && Sig[0]<Sig[1] && Sig[1]>Sig[2]) DnSignal=true;
      if(Ind[1]>0 && Sig[0]>Sig[1] && Sig[1]<Sig[2]) UpSignal=true;
      return(true);
     }
   return(false);
  }
//+-----------------------------------+
bool TradePerformer(bool &UpSignal,bool &DnSignal)
  {
   if(UpSignal)
     {
      if(PositionOpen(POSITION_TYPE_BUY)) UpSignal=false;
     }
   if(DnSignal)
     {
      if(PositionOpen(POSITION_TYPE_SELL)) DnSignal=false;
     }
   return(true);
  }
//+-----------------------------------+
double Money_M()
  {
   HistorySelect(0,TimeCurrent());
   int total=HistoryDealsTotal();
   double profit=0;
   for(int i=0;i<total;i++)
     {
      ulong deal_ticket=HistoryDealGetTicket(i);
      if(HistoryDealGetString(deal_ticket,DEAL_SYMBOL)!=_Symbol) continue;
      if(HistoryDealGetInteger(deal_ticket,DEAL_TYPE)>1) continue;
      profit+=HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
      profit+=HistoryDealGetDouble(deal_ticket,DEAL_SWAP);
     }
   Money=Deposit+profit;
   if(PositionSelect(_Symbol))
     {
      Money+=PositionGetDouble(POSITION_PROFIT);
      Money+=PositionGetDouble(POSITION_SWAP);
     }
   double Min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);
   double Lots=Risk*Money/Deposit;
   Lots=MathMin(Limit,MathMax(Min,Lots));
   return(Lots);
  }
//+-----------------------------------+
bool PositionOpen(ENUM_POSITION_TYPE Type)
  {
   MqlTradeRequest request;
   MqlTradeResult result;
   MqlTradeCheckResult check;
   ZeroMemory(request);
   double volume=Money_M();
   double takeprofit=0,stoploss=0;
   if(PositionSelect(_Symbol))
     {
      double volumepos=PositionGetDouble(POSITION_VOLUME);
      if(PositionGetInteger(POSITION_TYPE)==Type) volume-=volumepos;
      else volume+=volumepos;
     }
   for(int i=0;i<10;i++)
     {
      volume=NormalizeDouble(volume,1);
      if(volume<=0) break;
      if(Type==POSITION_TYPE_SELL)
        {
         request.type=ORDER_TYPE_SELL;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
         if(TP!=0) takeprofit = request.price-TP*_Point;
         if(SL!=0) stoploss = request.price+SL*_Point;
        }
      if(Type==POSITION_TYPE_BUY)
        {
         request.type=ORDER_TYPE_BUY;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
         if(TP!=0) takeprofit = request.price+TP*_Point;
         if(SL!=0) stoploss = request.price-SL*_Point;
        }
      request.action = TRADE_ACTION_DEAL;
      request.symbol = _Symbol;
      request.volume = MathMin(volume,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX));
      request.sl = stoploss;
      request.tp = takeprofit;
      request.deviation=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
      request.type_filling=ORDER_FILLING_FOK;
      request.comment=DoubleToString(Money,2)+"$";
      if(!OrderCheck(request,check))
        {
         if(check.margin_level<100) volume-=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
         Print("OrderCheck Code: ",check.retcode);
         continue;
        }
      if(!OrderSend(request,result) || result.deal==0)
        {
         Print("OrderSend Code: ",result.retcode);
         if(result.retcode==TRADE_RETCODE_TRADE_DISABLED) break;
         if(result.retcode==TRADE_RETCODE_MARKET_CLOSED) break;
         if(result.retcode==TRADE_RETCODE_NO_MONEY) break;
         if(result.retcode==TRADE_RETCODE_TOO_MANY_REQUESTS) Sleep(5000);
         if(result.retcode==TRADE_RETCODE_FROZEN) break;
         if(result.retcode==TRADE_RETCODE_CONNECTION) Sleep(15000);
         if(result.retcode==TRADE_RETCODE_LIMIT_VOLUME) break;
        }
      else volume-=result.volume;
      Sleep(1000);
     }
   if(!PositionSelect(_Symbol)) return(false);
   return(true);
  }
//+-----------------------------------+
bool IsNewBar()
  {
   static datetime Told;
   datetime Tnew[1];
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,Tnew);
   if(Tnew[0]!=Told)
     {
      Told=Tnew[0];
      return(true);
     }
   return(false);
  }
//+-----------------------------------+
分享到:
评论

相关推荐

    cs2011 - MetaTrader 5EA.zip

    本文将围绕"cs2011 - MetaTrader 5 EA.zip"这一主题,深入探讨2011年自动交易大赛的冠军策略,并分析其中的"cs2011.mq5"文件。 首先,让我们了解一下MetaTrader 5的EA功能。EA是基于MQL5编程语言编写的自动交易脚本...

    EECS2011-Assignment-2-Priority-Queues

    标题 "EECS2011-Assignment-2-Priority-Queues" 指的是一项课程作业,专注于优先级队列这一数据结构。在计算机科学领域,优先级队列是一种特殊的队列,其中每个元素都有一个关联的优先级。与普通队列遵循“先进先出...

    DataStructuresAssignment3:EECS 2011 数据结构作业 3

    数据结构分配3 EECS 2011 数据结构作业 3 BSTRange 具有著名的二叉搜索树方法,如 findLowestCommonAncestor、findAllAbove 和 findAllBelow。 SortedMapPair 有一个方法可以找到 kthSmallestUnion

    PointCalTool.cs

    c#绘图计算点直接位置关系,线段之间位置角度,线段相交,点是否在线段上,线段角度,线段长度,等,使用数学公式进行计算。适用于winform绘图,wpf绘图,等绘图类数学计算

    图形图像处理(PhotoshopCS)中级_DEMO盘_2011

    "图形图像处理(PhotoshopCS)中级_DEMO盘_2011"的标题和描述暗示了这个压缩包可能包含了一系列针对中级用户的Photoshop CS教程或演示文件,时间追溯到2011年。以下将详细介绍Photoshop CS的一些核心概念和功能,...

    CS5218原理图.pdf

    这一点对于Apple Mac mini 2011等特定设备尤其重要,可能需要针对这些设备的特性做特别设计。 ### CS5218 Demoboard Demoboard,也称为演示板,是厂商提供给工程师进行产品演示或开发的成品电路板。它通常包含了...

    CS193P IOS APPLICATION DEVELOPMENT Assignment 1 Walkthrough.pdf

    ### CS193P iOS Application Development - Assignment 1 Walkthrough #### Objective The main objective of this assignment is to reproduce the demonstration given in class, which involves building a ...

    Fall 2011 CS193P Assignment 2: 可编程计算器答案

    "Fall 2011 CS193P Assignment 2: 可编程计算器答案" 是一个关于计算机科学课程CS193P秋季2011学期的第二份作业,主题是设计和实现一个可编程计算器。这个项目可能涉及到编程语言的基础知识,如变量、运算符、控制流...

    PS CS2中级考证考题及解答

    Photoshop CS2(简称PS CS2)是一款由Adobe公司开发的专业图像处理软件,广泛应用于平面设计、摄影后期、视觉艺术等多个领域。对于那些希望在这一领域提升技能并获得认证的人来说,中级考证是一个重要的里程碑。...

    CS2013-EAAI2011panel-RequestForFeedback

    ### CS2013-EAAI2011 Panel: Request for Feedback #### 计算机科学课程历史 计算机科学课程的历史可以追溯到上世纪六十年代。每十年,美国计算机协会(ACM)与电气电子工程师学会(IEEE)旗下的计算机学会会联合...

    cirrus cs4206a

    声卡驱动,关于macbook2011年的机子

    分布式数据库EECS-2011-821

    本文档,"分布式数据库EECS-2011-821",出自加利福尼亚大学伯克利分校,详细探讨了一种名为Resilient Distributed Datasets (RDDs)的故障容错抽象概念,它是针对内存集群计算的一种创新设计。 RDDs是分布式系统中的...

    flash cs3教学案例

    这份压缩包包含了我在2011年教授该课程时,为帮助学生巩固课堂所学、提升实践能力而设计的一系列课后作业和实操题目。通过这些案例,学习者可以系统地掌握Flash CS3的各项核心功能,从而在动画创作的道路上迈出坚实...

    学生成绩管理系统

    package cs2011.StudentScoreManager.indi; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** *...

    PC客户端(cs架构)渗透测试

    PC客户端(cs架构)渗透测试,本项目主要针对pc客户端(cs架构)渗透测试,结合自身测试经验和网络资料形成checklist,如有任何问题,欢迎联系,期待大家贡献更多的技巧和案例。

    超级转换秀V37.9白金正式完整版

    至于压缩包中的“CS2011New37-9FullVerDE.exe”文件,这是超级转换秀V37.9白金正式完整版的安装程序。下载后运行此文件,按照提示步骤即可完成软件的安装。安装过程中,用户需要注意选择合适的安装路径,以及是否...

    Photoshop CS5抠图与调色圣经part1

    这是第一个压缩分卷,需下载第二个压缩分卷才能一起解压 分卷文件共有以下2个: Photoshop CS5抠图与调色圣经.haozip01.zip Photoshop CS5抠图与调色圣经.haozip02.zip Photoshop CS5抠图与调色圣经 扫描...2011年1月

    斯坦福学习笔记 CS229

    《斯坦福学习笔记 CS229》是一份全面的机器学习课程学习资料,涵盖了斯坦福大学教授Andrew Ng在2011年秋季学期教授的机器学习课程内容。这份笔记由一个自称对编程有所了解的学习者个人编写,目的是帮助自己巩固和...

Global site tag (gtag.js) - Google Analytics