《MT4EA编程速成教程》中第33页习题

第一题:将交易信号改成均线交叉,金叉做多,死叉做空。

金叉死叉,需要获取小均线两个点,大均线两个点,然后比较四个点的大小变化,就能判断金叉和死叉。

当黄色为小均线,红色为大均线   当 A>B 并且 C>D 就是金叉。

当黄色为大均线,红色为小均线   当 A>B 并且 C>D 就是死叉。

在之前一单一结的EA基础上,只需要修改signal()这个信号函数。

代码修改如下:

int signal(){int res=0;double smallma1=iMA(NULL,0,8,0,MODE_SMA,PRICE_CLOSE,1);double bigma1=iMA(NULL,0,26,0,MODE_SMA,PRICE_CLOSE,1);double smallma2=iMA(NULL,0,8,0,MODE_SMA,PRICE_CLOSE,2);double bigma2=iMA(NULL,0,26,0,MODE_SMA,PRICE_CLOSE,2);if(smallma1>bigma1 && smallma2<bigma2){res=1;}if(smallma1<bigma1 && smallma2>bigma2){res=-1;}return(res);}

完整代码如下:

//+------------------------------------------------------------------+
//|                                                 Test_EA_05_1.mq4 |
//|                                                             云开 |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "http://www.forexmt4.cn"
#property link      "http://www.forexmt4.cn"#property description "【漆天编程】 习题EA1"
#property description "  "
#property description "这是一款测试EA,作者QQ:80364276"
#property description "  "
#property description "发布时间:2021.10.26"
#property strict
#property icon "//Images//sea.ico"input double lots=0.1; //交易手数
input int SL=600;      //止损点数
input int TP=200;      //止盈点数//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(){
//---
//---return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){
//---}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(){int buys=0;  //多单持仓有几笔int sells=0; //空单持仓有几笔int signal=signal();for(int i=0; i<OrdersTotal(); i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){if(OrderSymbol()==Symbol() && OrderMagicNumber()==16384 && OrderType()==OP_BUY){buys++;if(signal<0){bool res=OrderClose(OrderTicket(),OrderLots(),Bid,0);if(res){Print("订单平仓成功");}return;}if(OrderStopLoss()==0){bool res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-SL*Point,OrderOpenPrice()+TP*Point,0);if(res)Print("订单修改成功");}}if(OrderSymbol()==Symbol() && OrderMagicNumber()==16384 && OrderType()==OP_SELL){sells++;if(OrderStopLoss()==0){bool res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+SL*Point,OrderOpenPrice()-TP*Point,0);if(res)Print("订单修改成功");}if(signal>0){bool res=OrderClose(OrderTicket(),OrderLots(),Ask,0);if(res){Print("订单平仓成功");}return;}}}}
//---if(signal>0 && buys==0){int ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"My buy order",16384,0,clrGreen);if(ticket<0){Print("OrderSend failed with error #",GetLastError());}else{Print("OrderSend placed successfully");}}if(signal<0 && sells==0){int ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,"My sell order",16384,0,clrRed);if(ticket<0){Print("OrderSend failed with error #",GetLastError());}else{Print("OrderSend placed successfully");}}}
//+------------------------------------------------------------------+
int signal(){int res=0;double smallma1=iMA(NULL,0,8,0,MODE_SMA,PRICE_CLOSE,1);double bigma1=iMA(NULL,0,26,0,MODE_SMA,PRICE_CLOSE,1);double smallma2=iMA(NULL,0,8,0,MODE_SMA,PRICE_CLOSE,2);double bigma2=iMA(NULL,0,26,0,MODE_SMA,PRICE_CLOSE,2);if(smallma1>bigma1 && smallma2<bigma2){res=1;}if(smallma1<bigma1 && smallma2>bigma2){res=-1;}return(res);}
//+------------------------------------------------------------------+

漆学军:均线交叉,金叉做多,死叉做空的例子程序相关推荐

  1. 漆学军:MACD交叉,金叉做多,死叉做空的例子程序

    <MT4EA编程速成教程>中第33页习题: 第二题:将交易信号改成MACD交叉,金叉做多,死叉做空. 这道题的重点和难点就是获取MACD的指标值,MACD和之前的抛物线指标或者均线指标不一 ...

  2. Python量化编程如何判断均线数据是金叉还是死叉?-股市数据均线策略编程分析

    Python量化编程如何判断均线数据是金叉还是死叉?-股市数据均线策略编程分析 以平安银行的股票数据为例进行分析 1.使用tushare获取股市数据,直接上代码: import pandas as p ...

  3. 金叉和死叉看哪几条线?股票macd金叉和死叉怎么看?

    资本市场上,每天都在演绎着转瞬即逝的遗憾,和曙光来临的场景.怎么更好的把握住机遇,人工智能和<股市三大猜想>指出人类在金融领域探索的脚步从未停止过.资本追逐利益是投资者的责任与使命,是金融 ...

  4. macd金叉kdj死叉的准确率_MACD金叉不涨又死叉

    小王根据<乔博士:MACD指标详解>学习到的内容,于是QR社区写下心得分享给大家,MACD金叉KDJ死叉 以下QR社区告诉我们MACD金叉KDJ死叉的解释: MACD指标(Moving A ...

  5. macd金叉公式成功率_MACD金叉kdj死叉和20日线可靠吗

    全球金融市场中,投资者使用各式各样的方法进行投资交易,有价值投资者,有技术分析投资者,那么孰高孰低呢?最近笔者在QR社区学习了<乔博士:MACD指标详解>就给大家讲的就是如何拥有一套自己的 ...

  6. 什么叫金叉和死叉?什么叫macd二次死叉?

    根据QR社区的统计显示,现在股票市场上将近有90%的松散客户都是处于亏损状态,那么原因是什么呢?因为他们都是用散户思维在炒股.所以要是想改变现在的基本状况,主要还是要改变投资者的思维模式. 一.什么叫 ...

  7. 金融量化-金叉和死叉

    金融量化分析-金叉和死叉 ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...

  8. (多头、空头、金叉、死叉、卖出信号、买出信号)的python处理

    1.指标概念 均值性指标:以平均数据作为参考的指标 随机性指标:以最高价最低价等为参考的指标 2.多头.空头.金叉.死叉.卖出信号.买出信号 多头:短期均线在长期均线上方 空头:短期均线在长期均线下方 ...

  9. 股票中的KD指标金叉和死叉

    股票中的KD指标金叉和死叉    -[ ] Time:2007-01-23 Tag: 投资理财 1.一般而言, D线由下转上为买入信号,由上转下为卖出信号. 2.KD都在0-100的区间内波动,50为 ...

  10. 金融分析之基本ma5 及金叉、死叉

    1 import pandas as pd 2 import numpy as np 3 import matplotlib.pylab as plt 4 5 res=pd.read_csv(&quo ...

最新文章

  1. 智源大会“人工智能伦理、治理与可持续发展论坛”超5000人线上参会,专家敦促全球多边协作...
  2. 用字符数组存放一个字符串,然后输出该字符串
  3. hashmap 存的是对象的引用地址_Java互联网架构-面试虐我千百遍HashMap源码真讨厌...
  4. 老鼠怕猫是鼻子决定的?!
  5. java微信学习 接入
  6. 五步git操作搞定Github中fork的项目与原作者同步
  7. json 例子_json-简单的例子
  8. ConstraintLayout使用汇总
  9. 如何成为嵌入式软件工程师_成为高效软件工程师的三个关键
  10. JavaWeb 学习路线
  11. linux 批量更改三四级目录 扩展名,Linux批量更改文件后缀名
  12. 深蓝学院-多传感器融合定位-第3章作业
  13. 《空间分析》——思维导图
  14. 亚马逊买家号注册流程
  15. vue 使用腾讯IM即时通信
  16. 西门子数控机床如何用FTP进行程序传输
  17. busybox文件系统与简单驱动学习(4)-RT3070无线网卡STA模式配置
  18. CE认证和CCC认证区别?
  19. linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3
  20. 【读书笔记】万物原理——打开客观世界与主观情感的大门

热门文章

  1. Expected Array got Object
  2. 随机存取存储器(RAM)的最大特点是什么?
  3. ThingJS 3年进化史:为40万物联网开发者打造一站式数字孪生服务平台
  4. 全微分里dxy是怎么化成xdy+ydx
  5. 修改mac地址导致计算机无法上网,如何解决Win7计算机上无法修改MAC地址的问题...
  6. 联想电脑尺寸在哪里看_笔记本型号在哪里看 怎么看笔记本屏幕大小
  7. Linux下ps -ef和ps aux
  8. 圆排列公式推导_数学广角早在公元三世纪,我国数学家刘徽为推导圆的面积公式而发明了 爱问知识人...
  9. 苹果cms模板_万词无限模板站群黑帽SEO利器
  10. 大学竞赛经历分享之微信小程序应用开发赛(1)