ea简明教程收集以及修改(2)
SetIndexStyle(0,DRAW_LINE,0,1);//定义指标的显示形式。DRAW_LINE标示画线指标。
看下这个内置函数的定义
SetIndexStyle( int index, int type, int style=EMPTY, int width=EMPTY, color clr=CLR_NONE)
index:索引号。0就是第一个指标线1就是第二个指标线。
type: 指标类型 下面是可选参数都是MT4的标准常量。
DRAW_LINE = 0 画线
DRAW_SECTION = 1 画线段
DRAW_HISTOGRAM = 2 画柱状图
DRAW_ARROW = 3 画箭头符号(需要设置符号代码)
DRAW_ZIGZAG = 4 画锯齿图
DRAW_NONE = 12 不画图
style:指标线型 0~4的选择。也可以不要,默认为0。
mt4只做ea的教程
Width:指标线宽 1~5的选择。也可以不要,默认为1。
clr: 指标颜色 一般用#property indicator_color1 White语句定义。前面定义了所以我们这里没有定义。
SetIndexBuffer(0,Buffer1);//为定义的指标变量数组标记索引号。就是使他们一一对应。
0号索引对应Buffer1[]变量。依此类推
IndicatorShortName("MACD("+Fast+","+Slow+","+Signal+")");//设置指标显示的名称,内容是用+号连接的字符串。 就是当鼠标放在指标上所看到的指标名称。与文件名不相关。
SetIndexLabel(0,"MACD_MAIN");//设置指标的标记。就是当鼠标放在指标线上显示的第三行的名称。
这条语句的意思是0号索引对应的指标变量标记是MACD_MAIN。其他类推。
IndicatorDigits(Digits+2);//定义指标的小数点位数数值是整数。这里Digits是MT4的预定义变量。其值为当前货币兑的小数位。
主函数体
int start()
{
int limit,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{
Buffer1=iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_MAIN,i);
Buffer2=iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_SIGNAL,i);
Buffer3=Buffer1 - Buffer2;
}
return(0);
}
1、int limit,counted_bars=IndicatorCounted();//定义两个整形变量,并给counted_bars变量负值。
这里面IndicatorCounted()函数是mt4内置函数不需要参数,其返回值为已经计算过的指标数组数量。
如果指标错误则这个函数会返回一个负数。
2、if(counted_bars<0) return(-1); //如果条件成立说明指标调用运行错误。则退出程序。
3、if(counted_bars>0) counted_bars--;//从已经计算的指标中去除最后一条。
这条语句用来修正counted_bars使得已经计算的最后一个数值可以在接下来的运算中重新计算一次。
4、limit=Bars-counted_bars;//计算需要计算的指标数据的柱数。
这里需要说明。在mt4中指标数组的索引和K线的索引标记相同,是从后向前递增的从0开使的整数。
也就是说,最后一条K线的索引是0同时K线所对应的指标索引也是0。
那么倒数第2条的索引标记为1。倒数第三条的索引标记为2。
这一点一定要理解清楚。不然写程序的时候就会发生错误。
语句中的Bars是mt4预定义变量,其值是当前图表中K线的条数。
这里详细说下为什么有个counted_bars--;的语句,这个语句的意思是对变量counted_bars进行自减一操作。
因为主函数是每次价格变动就会运行一次。当运行完成后。IndicatorCounted()值应该等于Bars也就是K线的条数 如果没有上面的自减一操作,那么当价格变动有了新的收盘价但并没有生成新的K线。这时候计算limit的值将=0. 那么下面的for循环体将不会再计算最后一条k线相对应的指标数值。
实际上这个是需要计算的(因为有了新的收盘价)。而有了自减一的操作就可以对最有一个,也就是当前K线对应的指标值进行运算。
(不知道能看明白不自己慢慢捉摸捉摸)。这个自减一是必需的。
mt4只做ea的教程
5、for(int i=0; i<limit; i++) for 循环语句(因为有了前面的自减一操作,这里limit最小等于1)
关于for循环的运行不作解释。各位自己找资料学习。
6、Buffer1[ i ]=iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_MAIN,i); //
看下iMACD()这个内置指标函数的定义。
iMACD( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int
applied_price, int mode, int shift)
symbol: 货币标识。通用指标用NULL常量。
timeframe: 计算所依据的图表时间周期 。0表示依据当前图表周期。
fast_ema_period: 快线周期
slow_ema_period: 慢线周期
signal_period: 信号线周期
applied_price: 计算所用价格模式
mode: 指标索引模式。MACD指标有两条线,因此这个位置有0,1两个选择。也可以用mt4预定义常量。 shift: 索引号
这里Buffer1取macd主线数据。Buffer2取macd信号线数据。
7、Buffer3[ i ]=Buffer1[ i ] - Buffer2[ i ];//计算MACD两条线之间的距离。
8、这里用到了外部变量。也可以叫用户自定义变量。这种变量在加载图表的时候可以修改。
extern int Fast = 10;
extern int Slow = 22;
extern int Signal = 7;
extern 关键字说明后面定义的变量是外部变量。
华丽的分割线2
=======================================================
问答题
瞬间的光辉/bull
本帖隐藏的内容需要回复才可以浏览
-------------------------------------------------------------------------------------------------------------------------------------------
瞬间的光辉questions
感激的没话说呀!牛版晚上12点还回答我的问题,而且回答的那么详细!
牛版的解释我认为是:所有论坛的高手中最无私最热心帮助别人的。
为了让更多的新手快速的入门EA,我决定做牛版帖子的追问者。牛版的帖子非常易懂,一般新手都能看懂70%,还有那30%的疑问,就由我来补问吧!
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
comment参数有什么作用?A:这参数本意是用于记录这个订单的描述信息,程序只能在订单入场的时候设定他。同时系统会在这个订单发生止损 止赢或者拆单的时候自动修改这里的内容。
我一直想寻找一个函数能够返回我下的订单是否已经被止损或止赢了,问了好多人
都是同样的回答:OrdersTotal()<1就说明你下的订单平仓了,换句话说就是被止损或 调用MACD指标函数为Buffer1数组负值。
mt4只做ea的教程
止赢了。但是前提是我只能同时做一单,如果我同时做好几单呢,这怎么判断我下的其中
一单已经止损或止赢了。
今天看了牛版关于comment参数的解释,有了启发:
comment参数 …… 此处隐藏:3571字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析