外汇公司EA,mq4编程,当条件1成立,进入第二个条件判断,每产生1个新K线就判断一次,当条件2成立,立即开单

MQ4编程问题请问当前15分钟K线价格茬上根15分钟K线收盘价之上1点处买进如何表示 [问题点数:40分]

当前15分钟K线价格在上根15分钟K线收盘价之上1点处买进

匿名用户不能发表回复!
所有商品期货2017年6月6日前的日K线历史数据库。数据格式为:日期品种代码,开盘价最高价,最低价<em>收盘价</em>,成交量示例如下: 568 CF709 CF709 93702
通达信主圖指标--13日黄金K线(不含未來函数) 13日线是生命线,黄K是行情启动,见那个*字怎么办就不用说了。我的指标都是干干劲劲有精神的配套齐了,洳果你还会亏钱!也只能不用说了如果你还去相信那些卖指标的,也只能说没救了!
用于现货交易的超短线交易系统 这个系统的最大优點是顺势而为,不抓顶猜底在振荡市和单边市同样适用 。 关键提醒:以<em>15分钟</em>来交易要顺1、4小时趋势。 交易时以<em>15分钟</em>的EMA14(14单位移动岼均线,即系统中的蓝色线)为标准 1、<em>价格</em>从EMA14的一侧走到另一侧,K线收盘于EMA14的另一侧箭头出现; 2、MACD快线从零轴的一侧穿过零轴(非常偅要); 3、N_STEPMA指标出现箭头(非常重要); 4、FX sniper指标出现变色(辅助)。
本K线算法支持任意周期支持任意交易时间段,支持任意品种本K线算法基于CTP开发,耦合性极低如果进行移植,只需要修改行情源的数据类型
实用的文化模型 ,非常好用
直接从MT4平台下载的数据可能导致鈈完整在此,完整版本的数据希望对大家做EA有用不过由于不同平台时间差问题,大家需要在加个脚本自己调整下时间
R语言的统计分析功能强大,画图方便扩展包众多,而且开源免费 n比起Python,R一些库更专门化例如quantmod(R中的金融分析包),可以画出漂亮的股票图还支歭众多技术指标。 nR语言介绍安装R与RStudio下载RRevolution R Open是今年初(2015年)被微软收购了的Revolution Analytics的R发行版。
是压缩包里面有MT4 mt4 变色均线 变色K线源代码 带EA 都是源码。顶底预测指标有缘分享
最近在研究Numpy,其功能非常强大通过线性代数运算避开了很多的循环,从而使计算效率得到了明显的提高 n接丅来,我就简单讲解一下如果通过numpy构造多项式来拟合股票<em>收盘价</em>的趋势图。(如果有哪位朋友对这篇博文有兴趣希望能够留下您的宝貴建议,我们一起交流学习)手上有一份数据,是创业环保(股票代码:600874)在8月份的交易行情数据: n n其中第4个字段为每天的<em>收盘价</em> n通過numpy中
python 实现股票分时图K线图及抓取免费level2行情
K线技术指标实现详解—筹码分布nnnn概念介绍nn筹码分布是主流炒股软件中必不可少的一项技术指标。籌码分布表明了对应K线下的股民持仓<em>价格</em>分布情况能让投资者据以判断个股的未来走势(压力位和支撑位)。下图展示了筹码分布图通瑺的展示形式: n
用python画股票日线图新手入门教程!可以自行修改日期和股票代码
[EA]非常简洁且功能齐全的均线系统
股票K线图,区块链kline,行情K线图js,kline荇情,行情js插件,行情插件专业版下载,k线js
股票走势图K线控件nn由于时间关系,只能在空余时间做目前只做了MA,EMA,BOLL,MACD,KDJ 5个指标。并且没有扩展功能nn支持實时刷新的单条数据更新。n支持滑动时的分页加载更多数据n支持惯性滑动。n支持多指触控缩放n支持长按拖动。n支持横屏显示nn已对性能莋优化单次添加数据量1000条,总数据量几万条滑动都很流畅,不会影响用户体验nn//@TODOn1、增加扩展性 后续会...
引言:nn邢不行的系列帖子“量化小講堂”,通过实际案例教初学者使用python进行量化投资了解行业研究方向,希望能对大家有帮助nn【历史文章汇总】请点击此处nn【必读文章】EOS期现套利,一周时间15%无风险收益nn 10年400倍策略分享(附视频逐行代码讲解)nn个人微信:xingbuxing0807,有问题欢迎交流nnnn在量化投资中,原来K线...
目录 n一步一步教你写股票走势图——分时图一(概述) n一步一步教你写股票走势图——分时图二(自定义xy轴) n一步一步教你写股票走势图——分時图三(对齐图表、自定义柱状图高亮) n一步一步教你写股票走势图——分时图四(高亮联动)
k线的认识和操盘软件的操作练习k线的各種形状和他<em>表示</em>的意思
这是最近一个iOS项目需要使用的K线的绘制,在网上大量查阅资料无果只好自行绘制。
这几个月在做一个关于证券的項目项目里一些图表的绘制,包括K线图以及相关指标算法的绘制让我有点为难毕竟我也不炒股,没接触过过这些东西原先是使用的ta-lib這个金融库来进行相关的计算。不过有些算法得出的结果有些不太理想(主要是和同花顺的数据进行对比)因此自己动手写了几个算法進行使用。趁现在有时间记录下计算过程。在计算前首先要明白MA的使用MA<em>表示</em>移动平均,n即MA(X10)=
使用BTCoin网站提供的api,实现了对1min数据的下載和存储实现了https,基于代码架构可以实现网站api提供的其他功能
mt4主图反k线指标显示,收集整理自众汇论坛主要功能,将mt4k线图倒过来显礻
关于止损点的问题,不建议超出几个固定点就止损nn<em>价格</em>到达上下轨位,下单的止损为前一高点高点与轨道线<em>价格</em>差建议不超20点,偠以盈亏比设定是否合算如果超过前期高点,考虑反向开单开仓时点为突破止损线后回采。nn//============原则n高胜算:n盈亏的概率(次数亏少盈多)n盈亏的空间(金额点数上亏少盈多)n盈亏的频率(时间)(避免频繁交易适度)n//===========实施方案n消息
Android股票K线图 纯自定义View 仿火币页面先放几张效果图,不是太会录动态图做的不太好将就看Demo 地址rn先放几张效果图,不是太会录动态图做的不太好将就看rn底下有demo地址,整个绘制过程沒有用到任何第三方库纯自定义View,包括各种触摸动作也都是自己写的计算方式(平移,放大缩小指示器接管触摸反馈 ,嵌套在滑动控件裏面的触摸冲突)不多说,放上图自己录得,不太会录将就看(一...
记下自己的研究成果是件开心的事情,本文介绍用Python3将股票历史行凊画成K线图以及添加5日,10日N日均线。n    首先是获取数据源,一般分两种一是直接从财经类网站读取;二是读取本地数据文件。我是先从财经网站下载历史行情数据csv文件然后放到工程文件夹里。nn####从雅虎财经获取历史行情####nfrom
转自/jacoby_fire/article/details/nn因为公司目前是在做一个交易所的项目页媔中需要用到k线图,之前用了echart的k线太过简陋了,参考了另外几个同级网站决定用tradingview这个专业的股票交易所类的图表库。nn从上周开始就研究tradingview一直到昨天才算是勉强能够在本地运行,真的是不容易...
EOS 历史k线 回测专用 发行于2017年7月数据截止至2018年9月
先上图:nnnn这里需要理解下,深度圖左右两边绿色代表买部分,红色代表卖部分买部分从中间到最左边,price依次递减卖的<em>价格</em>从中间到最右边<em>价格</em>依次递减,纵坐标这裏给的是累计的交易量;nn理解了要绘制的深度图我们就可以开始绘制了。nnstyle部分主要主要涉及买卖部分的line
图像识别K线形态论文, MIT论文
K线技术指标实现详解—MAnnnn概念介绍nn简单移动平均线(Moving Average)简称MA,原本的意思是移动平均由于通常将其制作成线形,所以一般称之为移动平均线简称均线。它是将某一段时间的<em>收盘价</em>之和除以该周期 比如日线MA5指5天内的<em>收盘价</em>除以5。他是K线图中最基本的技术指标直接绘制在K线图上。囷K线图比起来他能反映更加稳定的数量(包括股价、成交量和成交额)的变化趋势。常用的...
通达信DLL插件框架结构缠论K线包含处理流程,是画笔线段中枢的基础VC++源码,可编译通过
行情K线图也就是我们常说的蜡烛图,是金融类软件里可以说必不可少的无论日K, 周K,月K,还昰分钟K,准确的来表达个股在一定时间内涨跌走势K线图有着不可无视的作用,其绘制过程也是彰显一个程序员对自定义控件的熟练程度尤其是对Canvas的灵活运用,绘线绘边框,及位置的选取比例的分配,今天这个Demo,则一步步为你诠释rnrnrnrnrn按惯例,先看下今天要实现的效果整個Demo地址为:h
在开篇之前,给大家出个小算法题一定要做哦,因为既然你打算看本章节内容了那么这个小算法必须得会的哟!n 有一组数,1、2、3……99、100一共一百个数,假设是ListA现在将 n ListA索引为0、1、2、3、4的数相加之和赋给ListB索引为4的数 n ListA索引为1、2、3、4、5的数相加之和赋给ListB索引为5的數 ……(以此类推) n
K线技术指标实现详解—MACDnnnn概念介绍nnMACD称为指数平滑移动平均线,是从双指数移动平均线发展而来的由快的指数移动平均線(通常为EMA12)减去慢的指数移动平均线(通常为EMA26)得到快线DIF;再用DIF的9日指数平滑移动得到慢线DEA;再用2×(快线DIF-加权移动均线DEA)得到MACD柱。MACD的意义和双移动平均线基本相同即由快、慢均线的离散、聚合表征<em>当前</em>的多空状态和股...
K线精解 实战精华版 第一章 常见的k线组合 第二章 k线组匼之三只乌鸦 第三章 k线组合之启明星 第四章 k线组合之黄昏星 第五章 k线组合之三空阴线封底 ...... .......
不管是对量化分析师还是普通的投资者来说,K线圖(蜡烛图)都是一种很经典、很重要的工具在K线图中,它会绘制每天的最高价、最低价、开盘价和<em>收盘价</em>这对于我们理解股票的趋勢以及每天的多空对比很有帮助。n一般来说我们会从各大券商平台获取K线图,但是这种情况下获得的K线图往往不能灵活调整也不能适應复杂多变的生产需求。因此我们有必要学习一下<em>如何</em>使用Python绘制K线图n导入必要库n需要说明的是,这里...
画法基础K线图的画法就很轻松了,K线图是条形图和折...
在之前我们讲解了<em>如何</em>用Python绘制K线图。当时就有人问能否加入均线元素当然能啦!不光均线,今天我还要把成交量給加上去n获取数据并加工n为了计算年线(250日均线),我们需要保证数据至少在一年以上所以我们获取17年以来上证综指的行情数据。n获取之后我们同时保留两种格式的日期数据:matplotlib需要的float型以及我们坐标轴标签中需要的字符串型。它们分别是下边的trade_/download/jjlinunie/","strategy":"BlogCommendFromQuerySearch"}"
K线通信协议中文精华版K线通信协议中文精华版。K线通信协议中文精华版
前述n如果有炒股的同学看到我们绘制的分时线(没看到的话,点这儿)想必一定会气嘚半死!因为除了基本的展示功能以外缺少的太多!n比如:长按的话,就会出现<em>价格</em>涨幅、交易量之类的详情
由於項目裏面要做個有關茭易的平臺其中要畫k線圖(蠟燭圖),在網上找了很多插件感覺都沒有專業的股票交易平臺弄的k線圖專業因此為了趕進度,將就用了百度的echarts來做k線圖結果發現如果點比較少的時候k線圖呈現的柱子很大,不好看除非有幾百個點看著才比較和專業的k線圖很像,後來因為偠把那個圖表換成像比特時代裏面的k線圖壹樣的所以為了把圖做的更專業壹些,就只有借鑒壹下他們的插件然後就把專業的...
本文是衔接上篇关于绘制分时图框的内容,如果你还不了解关于K线图、分时图的相关知识可以点击这儿。需求确定<em>在上</em>篇文章中我们已经把分時图的框和坐标文字全部画好,如下:那现在就需要把分时线和背景绘制上去效果如下:开始搞起需求既然已经确定,那我们就来分解需求其实仔细观察效果图,就可以发现分时线为只是一条多个点连成的线而下面的背景区域是一个封闭区间,封闭区间是由上方的线、起始两个坐标点、X轴上与起始坐
该指标可以把MT4中 5分钟 <em>15分钟</em> 30分钟 1小时的四个周期图显示在主界面的底部二不是平铺显示的,各个周期走姠显示一目了然内附MACD多周期指标,很实用
基于 vue + tradingview定制化 的交易所 K线(免费),可实现全部定制化,接入数据即可使用,完全免费
应用在MT4的一款指标,显示K线剩余时间的多少
最新清晰版K线经典图 最新清晰版K线经典图 最新清晰版K线经典图 最新清晰版K线经典图
就股票软件开发而言 重中之重無非就是画制k线图了 本人画制过10多个软件的k线图 浅谈下画图的思路 为了保障图标的动态效果 只能采用滚动视图nnn1、首先得准备数据模型 知道洎己需要绘制的k线图 什么指标  通过开高收低计算好指标 用于绘图n2、部署滚动视图 通过模型的数据量 得到滚动视图的contentoffsize大小 n3、写一个画笔工具類用于绘制n4、计算指标值对应在滚动视图上
K线图(Candlestick chart)源处于日本德川幕府时代它是被当时日本的米市商人用来记录米市的行情与<em>价格</em>波动,洇为其独到的标画方式而被引入到股市及期货市场所有的投资者都可以根据K线的实体的阴阳,上下影线的长短等来判断多空双方力量嘚对比和后市的走向。nnn 一、K线的组成nn
对于不支持获取K线数据的平台(BitVC期货、BTCC的BTC现货、中国比特币的ETH、ETC)如果在策略开始时必须获取足够哆的K线,使用本模板则可从第三方网站直接获得平台的历史K线数据n注意:nK线数据每3秒更新一次,因此无法高频调用n仅适用于实盘交易。n作者不保证第三方数据准确性和程序正确性仅供学习参考。nn处理了Parse
MPAndroidChart的K线图上添加均线n效果图 均线计算方法:n 通常说的5日均线10日均线,其实就是根据<em>当前</em>K线节点的时间维度来说的<em>当前</em>每个节点代表一天,那么上面的均线就叫做日均线(几日均线)下面就统一说成几节点均线n n 那么5节点均线,10节点均线等等是怎么计算出来的呢n n 以5节点均线为例,5节点均线是从第五根柱子开始画一直画到最后一柱子(10节点均线就是从第1
C++编写的K线图源码,适用于开发股票行情K线图在线交易K线图
一个简单的MT4的K线变色指标,对<em>价格</em>的大趋势能很好的呈现
python3 爬虫獲取网易财经股票信息并将股票历史交易记录以K线图的形式展现,能自选股票
VOBMerge是一个简单实用的VOB文件合并工具。它使用方便可以将哆个VOB文件合并为一个,速度也很快还可以合并其它类型的文件。
}

@ 测试数据次数过多目录文件胖箌走不到时,就减肥:

如果你下载的是ex4文件就将它拷贝到experts\indicators目录下,然后重新运行MT4就可以在导航栏的自定义指标项目下看到新的指标名稱,后面的使用和其他指标一样

  如果你下载的是mq4文件,同样你也需要先拷贝的experts\indicators目录下然后使用MetaEditor打开源文件,点击编写按钮这时會在目录下自动生成ex4文件,同时MT4导航栏自定义指标项目下会出现新指标直接使用即可。

  如果还有DLL文件或者有.set,或者有.tpl

OrdersTotal()函数,鈳以计算当前账户中一共还没有平仓的单子和挂单的个数

从历史订单选出最后一单


上面的使用条件是 没有使用挂单没有取消过挂单,洇为历史中包含平仓的和取消的
如果历史中有取消的挂单 就麻烦多了,需要判断类型/时间/赢利来剔除取消的挂单找到最后的岼仓.

如何检测一张交易单是否已经被打止损或打止盈
答9)OrderCloseTime()这个函数返回的是订单的收盘时间。如果订单正在交易中而未平仓此函数
返囙的是0,如果平仓此值就会变成平仓当时的服务器时间,是一个很大的正整数

有的朋友可能会质疑,打止损或打止盈的订单其OrderComment()会包含sl或tp字样,检测这个不是
更方便吗你要这样说我完全同意,不过上面的函数也完全可以实现功能这个例子同时说明编程不
是死的,我們可以用不同的方式完成同一件任务

(摘自中国自动化交易中心)

基准货币每一点的价值都是10美元,因为是基准货币最小的变动点就是0.0001只偠乘以合约单位可以得知,即:0.*手数=10美元

这个的代码的意思是,假设我们的可用保证金小于100的话我们就停止开仓。其目的主要是保护峩们的资金不然我们的资金无限制的开仓
朋友可以根据此逻辑判断进行触类旁通的判断

EA下单时有效期expiration参数,是以秒为单位的

挂单时 用當前的时间(服务器时间或本地时间)加上你计划延隔的期限(秒)即可

几个账户有关的术语的确切含义
Balance: 有仓时==净值;(开仓后则鈈一定)

Equity: 开仓后则包含了盈亏
Margin: 当前持有单所占用的资金

是用相反方向的单子来平仓 (需找到对应的单号)

在 МetaТrader 3客户终端中,在兩笔交易中需要停留10秒钟的时间在 MetaQuotes Software Corporation 公司创建 МТ4时,出于交易者的意愿删除了这个限定。事实上,这种情况是接收一个接一个的交易执 (对於一些仓位移动止损水平,移除挂单交易等等)。但有些交易者认为交易之间的停顿是错误的并且进行设置智能交易可以不间断的开仓。这種结果导致账户被封在经纪的角度这是不友好的态度。

是导入一个文件. 你可以在std.mqh文件里写好一些函数以后写ea的时候,直接用就行了鼡include包含进来 .include文件往往用于声明函数,

或者有些人也喜欢把具体实现写在H文件上 ,不同的是MQL不用处理内存问题

[承编:] 反编译是由中间语言过度嘚, 这个和windows字节序有关, 就好象你删除问件恢复后,不是原来那个名字而是一寸乱码一样, 反编译出来的东西,是他主动命名的, 变量在内存中嘟以堆或者栈的形式存者反编译的时候,就按照堆栈的位置给每个变量起名就好似你由广州去到北京,但你还是你.

[snake:] 变量名是人起的機器不懂这些,所谓的变量名就是为了人类能看懂的翻译成机器语言都是16进制的地址. 反编译后,需要给他们起个名字就按照顺序编号來起了 .变量名字在编译的时候就已经被机器废弃了..其实有规律的,开头是g的是全局变量l的是局部变量 ..

[无欢:] 在编译原理中,编译机负责把變量摆放在适合的堆栈里所以,他的标识只能是地址号

订单中返回最后一笔单子的订单号
如果是历史订单,取最后一张历史单的平仓時间, 如果是还在交易中的,就取最后一口单的开仓时间

新账户时此值是0 . 则select会返回失败,也就是负值

第二个是1所以你可以理解OrdersHistoryTotal()-1是“距离现在最近嘚出场单的序号

对于一个被止赢的价位,按原来价位重新入场怎么写呢?

个数是1, 但序号是从0开始

你这个已经出场了就算查到价格也要判斷当前现价,然后决定如何处理:

如果当前价比你找到的那个价还优那你可以现价入场;如果已经偏离很远则挂单这些由你决定

几句话說不清楚,大致意思是:

A:这参数本意是用于记录这个订单的描述信息,程序只能在订单入场的时候设定它同时系统会在这个订单发生止损 圵赢或者拆单的时候自动修改这里的内容
既然订单发生止损 止赢或者拆单的时候自动修改这里的内容
我可以在下单的时候给comment赋值”on”,当订单生成后我可以用OrderComment()函数实时获取它的comment值如果不等于”on”那就说明订单已经止损或止赢了

用OrderComment 函数,每次止损或者止盈后系统自動给订单加入一个注释,如果是止损就是s/l判断字符串里包含这个字符串就行了。同理只赢的就是t/p。

有函数能实时地获取订单被止损止贏的信息吗?

比如对于主动平仓,我可以:

if (cc2>0)...... 知道已平了仓但对于止损止赢的被动平仓呢?

被平仓的订单 其Comment的属性会被系统自动更改为[ST] 止贏是[TP] 用这个去过滤就知道了!

是开平仓失败时重新要价的
重新要价是按原来的价格吗

你手动下单的时候,有时候行情速度太快会提示伱价格已经变动了,是否按照最新价格下单
ea下单也有这个问题一般都是判断下单失败后,调用一下这函数刷新一下价格。

取消了指标後,在窗口还留着这些东东的解决办法:

Ctrl+B 用对象列表删除;

点市场报价拖动一个其它货币对再试试;

它的意思是指是止损位置与入场价格の间的最小点数差距

EA下单时有效期expiration参数应怎么写?

此参数是以秒为单位 下单时用当前的时间(服务器时间或本地时间)加上你计划的期限(以秒计算)即可,例如:

@一个返回订单数的子函数

怎样将时间相加减及时间转换的函数

Low [ ] 是一个数组,里面储存了当前周期图表上每根K线的 L ;

Low[0]是表示当前K线的L 注意了:它仅储存了当前周期的!

iLow() 用这个函数则可获取其它周期的图表上的某根K线的最低价

如何在n根柱后关闭訂单

1、获得持仓单的入场时间
2、用iBarShift函数算出入场时对应的K线序号
3、比较这个序号是否大于你说的K线个数

先画一条趋势线然后 双击然后按住ctrl 用左键拖那根线

如果要休息一会或有事要处理而这时持有单子,但又无法实时看盘怎么监测汇价呢?

MT4有一个汇价报警功能启动MT4,crtl+t警报。然后在空白处右键鼠标会出现一个对话框,选择创建如下图。报警方式选择sound商品选择你要的货币,条件可以选择买卖价夶于小于某个价位最后选则具体报警价位,执行选项就是各种报警的声音

指标文件呈灰色显示的 说明你添加的是EX4文件没有原码不能修妀代码,但不影响使用


第一个 是你平台上下载到的最精确的价格来模拟,比如有1分钟的就按1分钟的测试

第二个 是你测试1小时图的话,僦按半小时图k线选12个点来测试

如果在一个价位开了多口买单,而且在另一个价位也开了多口买单,如果遇到开空单条件时,我想平掉第一个价位嘚一半买单,怎么写呢

让mt4主图指标在副图显示 [转]

例如:Heiken Ashi是个主图指标不能直接加到副图,要加到副图需要骗一下MT4

Ashi指标,这时在副图显示嘚是MACD指标把这个画面保存模板,关闭MT4把Heiken Ashi.mq4改回MACD原指标,然后把原来的Heiken Ashi.mq4拷回来打开MT4,调入你刚才保存的模板Heiken Ashi就在副图显示了。

脚本的寫法和EA基本一样唯一的不同是脚本只运行一次

善于使用print作为排错方法,输出关键位置的数值来帮助自己判断程序是否正确

是重新从頭到尾(图表最左至右)来循环计算。

如果EA里没有特别指定使用哪个周期的话
已打开EA交易时,改变图表会不会影响EA的使用周期

会,一般指标函数第二个参数是指定时间框,如果它是0,代表用当前的时间周期.如果你改变图表的周期,他就跟着变了

开多仓的条件和平空仓的条件一樣那么怎样实现开多仓的同时平空仓呢?
我用了开仓和平仓指令,结果开了的仓马上又被平了,我该怎么控制平仓时候是平多仓还是岼空仓呢?

注意程序逻辑结构的设计按以下逻辑设计即可实现先平仓,后反向开仓的目的:

Start开始后先判断持仓情况
如果空仓状态: 则判断多空单的条件是否满足如果满足则入场。
如果持仓状态: 则判断出场条件是否满足如果满足则出场
记住:上述操作后都使用return返回,則下次价格到来的时候就会立刻执行下一步的出场动作

return 意思是结束当前函数的执行。
return(0) 则表示不仅结束当前函数同时返回数值0给调用当湔函数的上一级过程中的指定变量
为了尽最大程度消化滑点因素,怎样严格定义订单发送价格? 比如以本周期收盘价格加上[多头]或减去[空头]几個点,在下个周期开始后发送

可以,你要先判断当前价格与你的预想价格的位置关系然后使用 上挂单 或者下挂单 的方式发送订单指令就行叻

其实可以在当前图形调用任何时间段的技术指标,方法就是你使用的函数里都有一个TimeFrame参数这个参数设成你想要的时间段就行了。这样哽简单些

如果是用数组方式画的箭头是无法改变大小的。
而用Object方式画箭头只适合与运行开始后的动态画出新箭头不能追溯历史。(Object中囿些比较大的箭头)

不知是否一分钟数据太多我的mt4不能进行backward test了,没有反应想进1分钟图就死掉, 怎么办好

1、历史数据太多。方法: 到History目录里进入你当前账号所在目录,删掉历史文件
2、图表加载的指标编的的不好计算量过大。方法:找一下图表上是哪个指标到indicator目录丅将这个指标的ex4删除,然后重新进入MT4看看

上面一整段就是为了计算出limit的数值(当前需要计算的K线个数)

if(counted_bars<0)这种用法是很严谨的指标编写方法小于零的情况会有,比如当你打开着一个商品的K线图然后你换了一个服务器,而这个服务器上并没有这个商品这时候就是小于零的凊况。
关于return 它是返回数值给 调用return所在函数 的变量 这里的return是在系统函数start里面,所以这里的返回-1不会有任何实际变化, 主要实现的是退出start()的当湔这次运算过程

首先占用CPU大一定是循环的部分过多, 有可能的原因是你的循环是每次都是“从头到尾”的方式还有就是死循环 或者叫连续絀现仓位操作错误

就是计算当前应该进行循环重新计算的K线的个数

想返回某个条件的那天(非固定周期),取那天的指标数值如何做到

關于取特定时间的特定指标的数值。大致思路如下:

1、首先循环计算特定指标的所有历史数据

2、使用iBarShift函数根据指定时间或者那个时间段对應这个时间的K线序列号

3、根据1已经计算出来的指标数组和2计算得到的序列号,或者指定的指标的数值

要看具体程序例如:如果在循环賦值当前指标数值X的时候,(i是当前K线序列标记)使用了i+1 以后的数据则被视为“未来函数”

只想让EA只按照15分钟时间段操作

要放在init中,最好赋徝一个全局变量让start函数一开始也做相同的判断 同时最好控制一下Alert一次就行了,要不就光弹窗口了,很烦人的

50分钟内的最高价所对应的那条K线求这条K线所对应的26均线的值该怎么写?

应用在1分钟图上或者 指标上的时间段指定为PERIOD_M1
(看到这句,终于明白 better 为什么要用1分钟图输入数据了)

當我用老方法直接合并多空后,相互影响就出现了好几次导致接下来的开仓位置不合里,从而多出几次止损交易:

进入start函数后首先要进荇仓位个数的判断你所做的分辨不同类型持仓也是在这里进行,然后根据持仓情况分成多种状态进行处理这样才可以防止重复入场

我偅新下载了一个MT4,不知为什么自定义指标都不能使用了

加载不上的原因一般都是程序没通过编译,要编译一下看看什么错误信息

TB你还是放弃吧我们比你更了解他的细节,根本没法和MT4相比稍微复杂一点的想法都无法实现,而且设计原理上有重大缺陷

例如 变量A= 第5根K线上嘚日期时间;

1、第一步就是:提取持仓信息并进行判断,以决定当前的状态然后通过条件语句分配到针对不同状态的具体程序段中。
2、持倉单的区分可以通过 持仓单中的 货币名称 单子类型 甚至Magic 和 Commssion来进行更进一步的细分从而实现例如:查看当前多少个多单,多少个空单多尐个挂单,总持仓量是多少最后一个入场单的时间,.....花样出来
这些技巧就要靠不断的练习来实现。

@通过全局变量可以让某个值在各个函数中传递各个函数也都可以修改这个变量的值,起到一种互通有无的作用

不同条件产生的订单用不同的订单注释标记或者用不同的Magic号碼也行
循环所有持仓单,找出商品名和当前K线图商品一样并且订单注释等于特定注释的订单Ticket然后

想根据不同的条件开3个仓,还有每个平倉条件也不一样,
现在的问题是,每一段之间是怎么隔开的,平仓是又怎么区别出哪个单子呢?

一个根据单号, SELECT_BY_TICKET 表示采用单号操作 ticket就是单号一个根据单子的位置来操作(时间最前面的编号为1,后面的以此类推2,3,4,5) ,

MT图表显示的价格线默认为买进价格线,您若想看到卖出价格线可这样进行:

咑开MT4点击F8健,在出现的对话窗口点击常用把显出卖出价格图前面的勾勾选上。

确认后点击MT4上面的工具、选项、图表,把显出卖出价格图前面的勾勾选上

之所以有“假叉”和“粘合”原因不在于程序,而在于我们的肉眼程序判断交叉哪怕是0.0001的超越都认为发生了交叉。所以在此基础上我们可以在程序中增加一个判断就是交叉后并距离交叉位置有一定宽度后再视为“有效”。

也可:判断条件的时候使用仩一根K线的收盘价做计算而不要用当前未完成的K线收盘价做计算就可以了。

for语句:for语句是循环控制结构中使用最广泛的一种循环控制语呴其功能是将某段程序代码反复执行若干次,特别适合已知循环次数的情况

for (表达式1;表达式2;表达式3)

循环体 {语句序列;}

表达式1:通常為赋值表达式,用来确定循环结构中的控制循环次数的变量的初始值实现循环控制变量的初始化。

表达式2:通常为关系表达式或逻辑表達式用来判断循环是否继续进行的条件,将循环控制变量与某一值进行比较以决定是否退出循环。

表达式3:通常为表达式语句用来描述循环控制变量的变化,多数情况下为自增/自减表达式(复合加/减语句)实现对循环控制变量的修改。

循环体(语句序列):当循环条件满足時应该执行的语句序列可以是简单语句、复合语句。若只有一条语句则可以省略{}。

为循环控制变量赋初值

for语句很好的体现了正确表達循环结构应注意的三个问题:循环控制变量的初始化、循环控制的条件以及循环控制变量的更新。

如果要统一图形上显示不同时间段的指标只能换其他方法,具体方法你可以参考网上_MTF开头的源码指标。这类指标是显示跨时间段的方法

}

MT4编程入门教程目录
MT4编程入门1:MT4自萣义指标的基本操作
MT4编程入门2:指标源码中的常用符号说明
MT4编程入门3:自定义变量
MT4编程入门4:自定义函数
MT4编程入门5:自定义数组
MT4编程入门6:市场数据取值
MT4编程入门7:判断语句
MT4编程入门8:循环
MT4编程入门9:MT4自定义指标的结构
MT4编程入门10:画一条指标线
MT4编程入门1:MT4自定义指标的基本操作
MT4自定义指标的保存目录、指标编缉器与指标调用

该目录中主要有二种类型的文件
一种是mq4文件,这是MT4自定义指标的源码文件是一种高级语言文件,可以人工编写修改机器不能直接执行,但能在MT4启动时自动编译为ex4可执行文件
另一种就是ex4文件,这是MT4自定义指标的可执荇文件由mq4文件编译得到。
mq4文件必须编译为ex4文件才能被MT4执行
但ex4文件是机器码文件,人工不可修改

另外还有一个文件是mqlcache.dat它用来保存目录Φ的文件信息,如果MT4无法自动编译只要删除此文件即可解决问题

mq4文件编译为ex4可执行文件有两种方法:
1、MT4启动时,会自动把此目录中的mq4文件编译为ex4文件

2、用MQ语言编辑器打开mq4文件,点一下“编写”按钮即可生成ex4文件


二、下载保存mq4文件、ex4文件

4\experts\indicators这个目录,也就是下面这个目录Φ就可以了。如果下载的是ex4文件那可以直接调用;如果是mq4文件,则需要重启动MT4让系统自动编译生成ex4可执行文件。如果下载的是rar、zip等類型的压缩文件还必须下载后解压到此目录才能使用。

三、将源码保存为源码文件

在论坛上我们也经常能看到指标源码贴在网页上,泹没有mq4、ex4等文件可以下载只能复制源码。此时需要我们自己动手将源码保存为源码文件那也没关系,非常地简单多点几下鼠标就搞萣。
1、打开MQ语言编辑器

2、在MQ语言编辑器中新建一个文件文件名一定要输,别的随便操作都没关系

3、删除新文件里面的所有内容,成为┅个空文件

4、接着我们就可以将网页上源码复制粘贴进来
试着点一下“编写”,如果左下角出现“0错误0警告”,那说明源码没问题編译通过了,成功生成了ex4可执行文件

5、还有很重要的一点就是要把源码文件保存到正确的目录中


保存后,再点一下编写

当然,我们也還有另的办法:

可以打开一个原已存在的mq4文件然后另存为你需要的文件名,再删除文件中的所有内容成为空文件把网页上的源贴到文件中保存即可

也可以在记事本中新建一个文件,把网页上的源码贴进记事本然后取个文件名保存到上面提到的目录,不过文件后缀必须輸入mq4保存类型选择“所以文件”

四、mt4程序调用自定义指标


MT4编程入门2:指标源码中的常用符号说明
一、注释符:单行注释“//”、多行注释“/*  */”
程序不执行注释,注释内容仅供阅读或保留不用的语句
在MQ语言编辑器中注释内容以灰色显示

表示一个语句内部间隔,不结束语句

賦值语句,把等号后面的值赋给等号前的变量中

整数或小数则表示值相加;字符串,则表示前后连接

表示把符号前的变量值加1,例如:“i ;”  这实际上就是:“i=i 1;”的简写表示i的值加1

表示把符号后的值加到符号前的变量中。例如“i =2;”实际上就是“i=i 2;”的简写,表示i的值加2

等于号用于逻辑判断,双等号前后值相等则返回逻辑值“真true”;双等号前后值不相等,则返回逻辑值“假false”

不等于号用于逻辑判断,不等号前后值不相等则返回逻辑值“真true”;不等号前后值相等,则返回逻辑值“假false”

{}内部为函数体语句
MT4编程入门3:自定义变量
一、洎定义变量在使用前,必须先创建(定义)设定变量的类型和名称。
创建时可同时赋值也可以不赋值。名称可以使用中文字符
bool 是否报警=true;  创建一个逻辑型变量,变量名为“是否报警”同时,赋初值“true”

自定义变量的基本类型有:
1、整形(int):就是整数包括负整数
2、双精度尛数(double):可以简单地理解为带小数位的数
4、逻辑型(bool):其值分别为“true、false”,即“真、假”也可以写成“1、0”(1真,0假)
类型定义词仅在创建变量时使用,后面使用变量时就不能再加类型定义词了

一、和自定义变量一样,自定义函数在使用前也必须先设立,以定义其类型、名称、参数和运算语句
函数类型、名称、参数位于函数头部(参数间以逗号分隔),
大括号中的是运算语句也就是函数体部分。
return语句为函数结束语句return后面括号中的值为函数返回值,即函数运算结果

上例中,int为函数类型表示该函数的返回值(运算结果)是整数;
(x,y)为参数,甴于自定义变量使用之前都必须先创建所以要加上类型定义词int
ft为函数名,有了函数名我们就可以在别处用ft(2,1)的形式来调用此函数;
第一呴,定义一个整形变量temp
第二句计算temp的值
第三句,函数结束返回调用点,以temp的值作为本函数返回值

函数类型就是函数返回值(运算结果)嘚类型,与自定义变量类型差不多
还有一种函数是以函数运行为目的运行结束后不需要返回值也没有返回值的,则函数类型可以写成void(无徝型)

三、函数中如果定义了自定义变量那么此变量仅在本函数内部存在,函数运行结束时自定义变量也就自动注销。
上例中有x、y、temp彡个自定义变量,在函数运行时创建在函数运行结束时自动消失,仅在函数内部有效与函数外部无关。

函数调用非常简单只要函数洺正确、参数个数一致、类型相同就能正确调用
如我们前面创建了ft(x,y)函数,则别处我们可以用ft(4,5)等样式来调用ft(x,y)函数求值
调用时,传递参数值給ft(x,y)函数(按顺序把4传给x把5传给y),返回结果23后继续执行主程序
MT4编程入门5:自定义数组
一、数组是一系列同类型变量的集合,可以同时存储哆个数值
这是一个数据名为aa、包含了4个元素的整数型数组(即数组长度为4),可以同时存储4个数值

二、自定义数组也必须“先建立,后使鼡”
创建(定义)时必须设定类型和名称。
创建(定义)时数组的元素个数也可以设定,也可以不设定
数组中第一个元素的编号为0第二个为1,以此类推编号使用方括号括起来

数组的赋值必须指定明确的赋值对象,除了新建数组时可以批量赋值外数组元素必须一个一个赋值
這是对数组dd的第3个元素dd[2]([0]是第1个,[2]表示第3个)重新赋值为1
在这里没有整数型变量定义符int,

数组只是一系列变量的集合所以每次只能使鼡数组中的一个元素。
数组的引用必须指定明确的引用对象一次只能引用一个。如果需要使用整列数组则必须逐个使用。
我们用aa来引鼡数组aa中的值


MT4编程入门6:市场数据取值
一、预定义数组(MT4已经定义好的可以直接使用)
开盘价、最高价、最低价、收盘价、成交量等历史数据,每根K线蜡烛都各有一个所以必须用数组来解决问题,MT4有几个预定义数组:
类型为双精度double型(即精确小数)

这里有一个位置的问题右边第一根K线蜡烛(即最新的蜡烛)的编号为0,第二根蜡烛编号1第三根蜡烛编号2,也就是说从右向左倒着数过去

Open、High、Low、close,表示第i 1根K线蜡燭的开盘价、最高价、最低价、收盘价

注意:这些是数组用的是方括号。

买入价、卖出价是实时价格MT4用预定义变量Ask和Bid表示,数值类型為double双精度
还有一些预定义变量如:
Bars 表示图表中的蜡烛数,类型为int整数型
Digits 表示当前货币对的小数位类型为int整数型,无日元币对为4有日え币对为2,黄金石油等一般也为2
Point 表示当前货币对的点值类型为双精度double型,无日元币对为0.0001有日元币对为0.01。与Digits正好相反

其他如MACD指标、威廉指标、RSI、SAR、布林线等指标取值都与移动平均线指标相类似


3、在数组中求元素的移动平均值。双精度double型
这也与iMA函数差不多不过数据源变為数组

从数组中不但可以求得移动平均值,还可以求得RSI等指标值


我们经常自己编一些自定义指标可用iCustom函数来取得自定义函数的值
iCustom(商品名,K線周期,自定义指标名称,自定义指标参数1,参数2,参数3,,,自定义指标线编号,位置)
如果自定义指标只有一根指标线,则自定义指标线的编号为0
如果洎定义指标有多根指标线,则第一条自定义指标线的编号为0第二条为1,第三条为2。
表示:求当前图表中,自定义指标mymacd(12,26,9)的第3条指标线茬最新位置的值

抛砖引玉这里只是有代表性地列了几个函数,详细请查阅《MT4编程手册》
MT4编程入门7:判断语句
if语句很常用也比较简单。

規则:如果小括号中的条件成立则执行大括号中的语句;如果不成立,则跳过大括号
我们在编写报警指标的时候,就经常用到这一语呴:
如果“价格向上达到指定价位”则“报警”
如果“MACD上穿”,则“报警”
如果“均线金叉”则“报警”。等等

这是一个价格上、下穿1.0000时报警的判断语句:
上穿报警条件:当第二根K线最高价小于1.0000并且最新K线最高价大等于1.0000
下穿报警条件:当第二根K线最低价大于1.0000,并且最新K線最低价小等于1.0000

这里,mark是用作报警标记,mark的初值是0,
当上穿报警后mark的值就改为1;当下穿报警后,mark的值就改为2;

当mark=0时,说明从未报过警上、下穿嘟能报警;
当mark=1时,说明已经上穿报过警了,不能再上穿报警了,但仍可下穿报警;
当mark=2时,说明已经下穿报过警了,不能再下穿报警了,但仍可上穿报警。


1、呮有语句后面才用到语句结束符“;” 条件、大、小括号后面都不用“;”
2、语句用大括号括起来但如果只有一行语句,则大括号可以渻略

规则:当小括号中的条件成立时就执行大括号中的语句,执行完了再判断条件是否成立如果条件成立就继续执行大括号中的语句。

只要条件成立程序就不停地运行大括号中的语句(循环体),直到小括号中的条件不再成立时结束循环

它与if语句的区别是:if语句是当条件为真时运行一次;而while语句则是只要条件为真,循环体语句就不停地运行直到条件为假时结束循环。

这里循环执行条件是i<1000,循环体中囿两个语句一句是把两条均线的差值赋给数组buffer,另一句“i ;”是每运行一次i的值在原有基础上增加1。这样随着循环的不断运行,i的值逐渐增加循环1000次后,i的值也就从0变为1000此时“i<1000”就不再成立,循环结束这样,数组buffer[]中也就有了1000个值


for循环与while循环在原理上是一致的,呮是书写格式上有所区别

把上面的例子改成for语句:

与前面相比我们注意到:
“i ;”语句从循环体中移到了循环条件“i<1000”的后面;

循环执行順序与while循环一致:

第一步、先执行小括号中的第1句:int i=0;
(此语句用来定义初始变量,在循环中仅执行一次可以为没有任何表达式的空操作符“;”)

第二步、再判断小括号中的第2句是否成立:i<1000;
如果不成立,则循环结束;如果成立则循环继续运行,执行第三步

第三步、按顺序执荇大括号中的语句

第四步、执行小括号中的第1句:i (此语句即:每执行一次i的值增加1)
然后回到第二步继续执行循环。
再补充一点:如果循環体中(大括号中)只有一行语句大括号可以省略
MT4编程入门9:MT4自定义指标的结构
MT4自定义指标一般由四个部分构成:


一、文件头部,也称為预处理程序
预处理程序以“#”开头行尾无语句结束符“;”
把指标显示在主图。如:均线、SRA等类指标用到此语句


二、参数、变量和数组嘚定义

全局性的参数、变量、数组在此定义局部变量可在start()函数中定义


三、初始化函数init()
init()在自定义指标加载时运行一次。

初始化函数的功能昰“设置”如果自定义指标需要划线,则必然用到此函数

当数据有变动时start()就被触发。数据变动一次start()就运行一次。
自定义指标的编程主要依靠此函数进行

start()函数的作用主要是取值和给指标线赋值,报警也在此函数内发起


另外,还有一个反初始化函数deinit()
deinit()在自定义卸载时运荇一次可用以去除指标加载时init()所做的初始化操作。

MT4编程入门10:画一条指标线
要画指标线只要在程序中写明以下几点就可以了:
第一、奣确指标线所在窗口,是主图还是副图
第二、要建立数组用以保存指标线在各个位置的值。
第三、要建立指标线与数组的对应关系哪個数组对应哪条指标线
第四、要明确指标线的线型,是曲线还是柱线或者是箭头
第五、如果指标线是箭头还要说明是哪种箭头
第一、二條写在文件头部中,
第三、四、五条写在init()函数中(init函数仅在指标加载时运行一次)
第六条写在start()函数中(start函数在数据发动变动时运行变动┅次运行一次)

下面以MACD为例说明
我们知道,MACD指标由二条曲线和一组红绿柱线组成(下图一)
紫线是白线的移动平均线;
红绿柱线则是白線和紫线的差,白线上穿紫线出现红柱,下穿则出现绿柱

我们从简单入手,先去除紫线和红绿柱线仅保留其中的那根白线,来看白線是怎样画出来的

以下为上述语句的简要说明

指标触发函数。与init函数不同该函数在有数据变化时被触发,如果数据被不断更新则该函数将不断执行。start也是系统默认的函数名但使用时也仍然需要进行创设,所以也要加定义符int


与指标画线相比报警语句显得非常简单,
呮要在判断语句中加一个报警语句即可

报警方式有:弹出窗口报警、音乐报警、邮件报警等
如果邮箱开通了手机短信通知,则邮件报警嘚内容会即时转发到手机上

当(条件达到)执行此语句时,以弹出窗口警告
报警内容为字符串型,内容之间加逗号

当(条件达到)执行此语句時发送一个邮件。
(收发件人地址在MT4系统中设置详见《MT4编程实例1:一个简单的小程序让你的手机摇身变成外汇公司行情接收机》)
标題之间以加号连接,内容之间也以加号连接
邮件标题和邮件内容以逗号间隔

下面是《价格穿越某均线报警》举例

再说一下自定义变量mark的作鼡:

mark的初值是0当上穿报警时给mark赋值1,当下穿报警时给mark赋值2

这样当mark的值为1时,说明已经对上穿报过警了就不能再次对上穿报警;

当mark的徝为2时,说明已经对下穿报过警了就不能再次对下穿报警。

这样就起到了消除重复报警的作用

}

我要回帖

更多关于 外汇EA 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信