22评论

0收藏

Mt4 Ea 制作速成班-战场策略前篇

avatar EA狙击手 | 5809 人阅读 | 22 人评论 | 2012-11-20

作者:李沂鸿(马来西亚)
·         Mt4 Ea 制作速成班-战场策略前篇
作者:李沂鸿(马来西亚)

因为学员还没有跟到这里,没有打算继续,所以就“战场策略篇”改为“战场策略前篇”。

第1章:圣杯


* 有人在怀疑ea到底能不能制作出“圣杯”?
我可以肯定的给你答案:不能,如果你认为不能
答案是:能,如果你认为能
* 到底是能还是不能?
都说了,是你的思想在左右你
“思想有多远 你就可以走多远”
* 什么是思想?
就是你的思路
* 什么是思路?
就是你的策略
* 什么是策略?
策略就是智慧
* 什么是智慧?
智慧就是。。。
哇!!没完没了啊!
哈哈和。。。
* 考你一个问题:
为什么叫着“智能交易系统
你看到第一个字吗?“智”
智就是指“智慧”
* 所以ea是一个有“智慧”能力的交易系统
* 现在问题来了!!
你有“智慧”吗?
你自认有智慧吗?
没有?
没有的话,你的ea会是智慧的ea吗?
哈哈和。。。
* 没有智慧的ea会是“圣杯”吗?
·         05-28-2009 01:49 AM
yes810
第二章::又爱又恨ea
 

* Ea?什么来的?
有这样好昧?
有这么厉害昧?
如果这么赚钱,你不是早就发达了?
如果有这么厉害,你还需要卖吗?
有没有包赚的?
亏了怎么办?
什么?亏了自己,赚了就对分?
什么5-5分账?
有没有得试用啊!
等我赚了才付款可以吗?
测试就厉害,真的市场就输钱了咯!

*


人们一方面希望可以得到“圣杯”
一方面又怀疑“圣杯”的真实性
所以,要卖ea是一件头痛的事情!
不是吗?哈哈和。。。
*


话说回来一个真正赚钱的ea,你会卖吗?
大多数的人认为应该是不会
如果不会的话,市场上在卖的ea是什么样的ea呢?
有的200美金
有的500美金
有的50美金
一个真正的“圣杯”ea,只值500美金?
*


如果答案会卖
反正是“街外钱”嘛!
你又得面对人家怀疑你的ea的真实性
真是的,哈哈和。。。
*


所以到今天,我没有卖ea
没有打算要卖
也没有打算要用
为什么没有用
哈哈和。。。不告诉你
告诉你,你是不会相信的
有一天,你会编写ea策略的时候
你可能就知道答案了
哈哈和。。。废话
·         05-28-2009 01:59 AM
yes810
第3章::买EA的前提  

*



有些人在买EA之前
会要求对方给他Live测试2个礼拜
如果Live测试赚钱就买
不赚钱就不买了
哈哈和。。。
你以为这“买家”聪明吗?
哈哈和。。。
告诉你,如果你这样认为你是EA白痴
笨蛋一个
*


为什么“买家”笨蛋一个?
因为“买家”更本不了解EA
如果我是“卖家”
人家有这样的要求
不是问题
1个测试14天后不赚钱就算
100测试,有10个赚钱
卖10个,一个500
哈哈和。。。赚5000美金咯!
不好赚吗?哈哈和。。。

* 现在一个问题
那么怎样判断EA的可靠性呢?
怎样知道这EA是否可以买?

* 有些聪明的顾客就想到看“真实交易买卖单”
如果我是“卖家”
没有问题,给你看
你看,5000上6000上7000上8000了
是不是厉害
是不是可以
哈哈和。。。你中计了

* 因为第一,对,你可能看到的是真实交易买卖单
但是你确定买卖是你要买的EA操作的吗?
第二,这“真实交易买卖单”可能是移花接木的
你怎能确定?
骗局怎能可以给你识破阿!
哈哈和。。。

* 我不是要“吓”买家
也不是要“玩弄”卖家
只是EA是新时代的产物
没有多少人了解
提防有心机阴谋小人会浑水摸鱼
·         05-28-2009 02:01 AM
yes810
第4章:认识Close[0]Open[0]



* 什么是K线?
那一条一条的柱子叫K线
为什么叫K线?
哈哈和。。。我不知道
我只知道怎样判断K线

* 一个K线的开始叫Open[0]
一个K线的结束叫Close[0]

* 上一个的K线的开始叫Open[1]
上一个K线的结束叫Close[1]

* 上上一个的K线的开始叫Open[2]
上上一个K线的结束叫Close[2]

* 所以要判断几时的K线就什么号码
比如:Open[0] Open[1] Open[2] Open[3] Open[4]
比如:Close[0] Close[1] Close[2] Close[3] Close[4]

* Close[0]>Open[0] 表示上升
Close[0<Open[0] 表示下降

* 如果你这样编写

if(Close[0]>Open[0]
&& Close[1]>Open[1]
&& Close[2]>Open[2]
&& Close[3]>Open[3]){buyme();}

表示后方有3次上升
然后这一次也是上升
判断就下注上升
也就是买上Buy

反过来就卖下Sell

* 就是这么容易
这是基本
·         05-28-2009 02:15 AM
yes810
第5章:认识High[0]Low[0]



* 一个K线的高点叫High[0]
一个K线的低点叫Low[0]

* 上一个的K线的高点叫High[1]
上一个K线的低点叫Low[1]

* 上上一个的K线的高点叫High[2]
上上一个K线的低点叫Low[2]

* 所以要判断几时K线的高低点就什么号码
比如:High[0] High[1] High[2] High[3] High[4]
比如:Low[0] Low[1] Low[2] Low[3] Low[4]

* High[0]-Low[0] 表示我们可以得到他们的差点

* High[1]-Low[1] 表示我们可以得到上一回的差点

* 如果你这样编写

if(Close[0]>Open[0]
&& Close[1]>Open[1]
&& (High[1]-Low[1])/Point>10
&& (High[0]-Low[0])/Point>10
){buyme();}

表示后方有上升超过10点
然后这一次是上升超过10点
判断就下注上升
也就是买上Buy

反过来就卖下Sell

if(Close[0]<Open[0]
&& Close[1]<Open[1]
&& (High[1]-Low[1])/Point>10
&& (High[0]-Low[0])/Point>10
){sellme();}

* 就是这么容易
这是基本
·         05-28-2009 02:18 AM
yes810
第6章:学会解读EA



* 什么是举一反三?
就是我说1
你就应该可以想到2,3

* 我说这样这样用
你应该可以联想到你应该怎样用
这叫学以致用
这叫活学活用

* 告诉我以下怎样解读

if(s+b==0
&& ma1now>ma2now
&& (ma1now-ma2now)/point>10
&& macd1now>0
&& macd2now/point>10
&& close[0]>open[0]
&& high[0]-low[0]/point>10
&& close[0]-open[0]/point>10
){buyme();}

* 哈哈和。。。
复杂了吗?
会解读就不复杂
不会解读就一头雾水
哈哈和。。。
还有更复杂的呢!

* 解读:
如果(买卖等于零
加上 均线1大过均线2
加上 均线1减均线2大过10点
加上 macd1超过零
加上 macd2超过10点
加上 收盘大过开盘
加上 高减低大过10点
加上 收盘减开盘大过10点
){这样才买上成交}

* 所以一些基本的语句
我们是一定要记住和知道的
不知道就不会解读
不会解读就不会编写策略
不会编写就永远作市场的水鱼

哈哈和。。。
·         05-28-2009 02:28 AM
yes810
第7章:认识Point


* 什么是Point?
Point是什么?
为什么叫Point?
为什么要乘以Point?
为什么又除以Point?

* Point的英文解释是“点”
MT4系统内定
这个Point字代表一个变化的“点”

比如:欧元的计算
1.9356 / Point = 19356

又比如:日元的计算
132.66 / Point = 13266

* 注意:Point是会自动变化的
好处是当你编写程式的时候
不会因为 欧元对美元 欧元对日元
就会出错

* 那么Point有什么用呢?

再比如:High的值减Low的值
或者关盘减开盘
if(Close[0]-Open[0]/Point > 10){buyme();}
他的值可能是
1.3100-1.3270=-170
-170 是没有大过 10
因为是下降,所以没有成交交易

再比如:macd1_0的值减macd1_1的值
再比如:ma1now的值减ma2now的值

* 总之是计算“点”用的
Point 没有固定的值
碰到 GU 可能是 0.0001
碰到 EJ 可能是 0.001
使用的目的就是要把他们变成“整数”

* 你可以了解为 除 /Point与 乘 *point
/Point小數點往後移
小數變成整數
*Point小數點往前移
整數變成小數

* 例子:EU小數點有4位
EU / Point小數點往后移4位
小數變成整數

JY小數點有2位
JY / Point小數點往后移2位
也是小數点變成整數

JY 的 high[0]-low[0]=小數点 / Point = 整數
EU 的 high[0]-low[0]=小數点 / Point = 整數

例子:

JY 的 if( high[0]-low[0] > 10 * Point ){buyme()};
JY 的高盘减低盘大过10点就买上

EU 的 if (high[0]-low[0]> 10 * Point ){buyme()};
EU 的高盘减低盘大过10点就买上

* 这两个答案一样
if (high[0]-low[0]> 10 * Point ){buyme()};
if ( (high[0]-low[0]) / Point > 10 ){buyme()};

* 注意:Point 的 P 是大写的
Ask 的 A 也是大写的
Bid 的 B 要大写
颜色Red 的 R 也是大写的
·         05-28-2009 02:32 AM
yes810
第9章:认识Time[0]



* 什么是Time[0]?
没有人告诉过我
我也没有问过任何人
什么是Time[0]?

* 很多时候
我们遇到新的词句
我们第一步就是“研究”
而不是问
问了也是白问
因为明天你就忘记了
是忘得一干二尽啊!

* 在上一个EA速成班的策略中
我有用到
你还记得吗?
你有注意到吗?

* 单看它的写法
应该可以猜到一二
如果你想知道没有他的效果会怎样
简单,把Time[0]给删掉
看看效果怎样
自我学习是不可少的功课

* 认识Time[0]
记住Time[0]的效果
在以后编写策略时
可能会有用到的
·         05-28-2009 02:43 AM
yes810
第10章:认识时间观念



* 很多人在编写策略时
写到到不知道怎样写
这样写也不行
那样也不行
干脆避开热门时间不下注
这就用到时间了

* 有些人只喜欢玩热门时间
比如早上八点到下午3点

* 看看别人编写的

//--- 判断K线开盘时间,以减少运行次数。 ------------------
if( Minute() ==0 ) { return(0); } // 正点时间任何时间段均不运行。
if( Minute()>3 ) { nAllowSend=0; return(0); } // 从此行起可以编写您认为有价值的交易时间,我们现在是开盘3分钟内。
//-------------------------------------------------------------

* 看看别人编写的

if(TimeDayOfWeek(TimeCurrent()) == 0 && Allow_Trade_On_Sun == FALSE){
ok_to_trade = FALSE;
}
if(TimeDayOfWeek(TimeCurrent()) == 1 && Allow_Trade_On_Mon == FALSE){
ok_to_trade = FALSE;
}
if(TimeDayOfWeek(TimeCurrent()) == 2 && Allow_Trade_On_Tue == FALSE){
ok_to_trade = FALSE;
}
if(TimeDayOfWeek(TimeCurrent()) == 3 && Allow_Trade_On_Wed == FALSE){
ok_to_trade = FALSE;
}
if(TimeDayOfWeek(TimeCurrent()) == 4 && Allow_Trade_On_Thu == FALSE){
ok_to_trade = FALSE;
}
if(TimeDayOfWeek(TimeCurrent()) == 5 && Allow_Trade_On_Fri == FALSE){
ok_to_trade = FALSE;
}
if(TimeDayOfWeek(TimeCurrent()) == 6 && Allow_Trade_On_Sat == FALSE){
ok_to_trade = FALSE;
}

if(TimeHour(TimeCurrent()) != 0){
ok_to_trade = FALSE;
}
if(TimeMinute(TimeCurrent()) != 0){
ok_to_trade = FALSE;
}

if(ok_to_trade == FALSE){
}
else{。。。。。。。。。。

* 看别人的EA就是为了“自我学习”
你学习到了什么?
你看到了什么?

* 第一:时间是写在策略的前面

* if(TimeDayOfWeek(TimeCurrent()) == 5
意思就是星期几?5 就是星期5

* 如果要用到小时
应该是这样编写的
if(TimeHour(TimeCurrent()) == 4){。。。

* 如果要用到分钟
应该是这样编写的
if(TimeMinute(TimeCurrent()) == 4){。。。
·         05-28-2009 02:53 AM
yes810
第11章:认识常用之符号


* 如果你不认识这些符号
你很难编写你的EA策略
可能都不知道怎样表达

* a > b 这个代表 a 大过 b

* a < b 这个代表 a 小过 b

* a == b 这个代表 a 等于 b

* a = b 这个也代表 a 等于 b

这两个的分别就是
第一个是编写在前方 if(a==b){ }
第二个是编写在后方 if(a==b){c=b;}

* a => b 这个代表 a 大过 b 或者 等于 b

* a =< b 这个代表 a 小过 b 或者 等于 b

* a && b 这个代表 a 再加上 b 才发生效果

* a || b 这个代表 a 或者 b 都可以发生效果

* + - * / 这个代表 加减乘除

* || 这个符号我在键盘找了好久好久也没有发现
不知道他们是怎样打出来的
问人?哈哈和。。。也没有问过
最近发现原来是这样的
首先 按 Shift 不放
然后 再按 \ 就有 || 出来了
哈哈和。。。
·         05-28-2009 03:09 AM
yes810
第12章:试一试


* 如果 High[3]=1.9976,Low[0]=1.9732
a 是High[3] 和 Low[0] 的中间线
b 是High[3] 和 a 的中间线
c 是Low[0] 和 a 的中间线

* 试一试找出 b 和 c 的价值各是多少?

* 试一试编写成程式
·         05-28-2009 03:22 AM
yes810
第13章:试一试 找一找 想一想


* 速成班的EA结构还少了2个子程式


* 分别是 Closebuy() 和 Closesell();


* 试一试编写或从别的EA copy&Press过来
然后放在我们速成班的EA里边并公开出来
·         05-28-2009 03:34 AM
yes810
第14章:复盘模型的质量


* 很多人不懂
也不知道
为什么测试的时候EA可以赚钱
真正用的时候不能
奇怪?

* 其实一点也不奇怪
因为它们不了解EA的复盘模型

* 复盘模型有三种
但只有第一种的是可靠的
其他的更本不实际
就是这个:每个即时价位(基于所有可利用的最小时段的每一个价位的分形插值计算)

商品 EURUSD (Euro vs US Dollar)
时间周期 日线图 2007.01.02 00:00 - 2007.12.28 00:00 (2007.01.02 - 2007.12.31)
复盘模型 每个即时价位(基于所有可利用的最小时段的每一个价位的分形插值计算)
经测试过的柱数 1259 用于复盘的即时价数量 1190813 复盘模型的质量 90.00%
输入图表错误 0
起始资金 10000.00
总净盈利 12516.45 总获利 20697.15 总亏损 -8180.70
盈利比 2.53 预期盈利 6.80
绝对亏损 2705.73 最大亏损 3884.28 (34.75%) 相对亏损 34.75% (3884.28)
交易单总计 1841 卖单 (获利百分比) 602 (55.98%) 买单 (获利百分比) 1239 (61.82%)
盈利交易(占总百分比) 1103 (59.91%) 亏损交易(占总百分比) 738 (40.09%)
最大: 获利交易 421.80 亏损交易 -250.70
平均: 获利交易 18.76 亏损交易 -11.08
最大: 连续获利金额 12 (75.94) 连续亏损金额 7 (-336.98)
最多: 连续获利次数 782.52 (6) 连续亏损次数 -757.82 (5)
平均: 连续获利 3 连续亏损 2


* 只有在这第一种复盘模型下测试才会跑出:复盘模型的质量 90.00%
其他种类的都是 n\a

* 所以快速测试成功赚钱的别高兴太早
他可能是假象而已
只有在:每个即时价位 上测试赚钱的EA
才是真正可以用的EA
测试到至少2007年的要赚钱才可以用
·         05-28-2009 03:44 AM
yes810
第15章:为什么?



* 很多人希望他自己开始会编写EA策略
但偏偏事与愿违
他还是不会编写
为什么?

* 我告诉过你们
你可以在最短的时间内
在我的教程里,你可以自己编写自己的策略
问题你你自己不争气
问题是你自己以为自己很了不起
问题是你自己以为自己会了
问题是你自己不好意思
问题是你自己喜欢潜水
问题是我都不知道什么问题了
哈哈和。。。

* 在我还没有确定学员会之前
我并没有前进
我在一边说“废话”
一边在等你们交功课
没有交功课就是证明没有人会
这是事实。

* 你可以这样回答:
老师,你给的功课太容易了,太幼稚了,太容易
a 的答案是。。。
b 的答案是。。。
c 的答案是。。。
编写方法是这样。。。
closebuy()是这样编写。。。
closesell()是这样编写。。。
老师,能把速度放快一点吗?
我吸收力很强的
我是一目十行的
我在小学的时候,全校第一名的,谢谢!

* 哈哈和。。。
你有这本事吗?
没有,什么动静也没有
我怎样知道你会还是不会
如果你不会,我又继续
这样啊!我又何必!
哈哈和。。。

* 老师,我的策略是这样这样,应该怎样写?
老师,这策略是这样的,为什么我写不出来?
老师,我头大了,这策略为什么。。。。

* 哈哈和。。。
你是要策略的答案?
还是要知道怎样编写策略
答案是简单,我可以给你
明天你会又说
“老师,昨天的我知道了,今天的这样的策略又怎样编写?”
又是回到“原点”
你还是不会自己编写。。。

* 为什么?
为什么又不会?
答案是你并没有了解编写EA的结构
我在教,你不交功课
你自己想想吧!
反正你会或不会又关我屁事
是不是?
我又没有什么好处
哈哈和。。。
·         05-28-2009 03:53 AM
yes810
第16章:教学方式



* 速成班的学员暂时还不能自由自在的编写策略
因为还少了2个子程式
closebuy();
closesell();
我还在等你们交这功课?。!

* 为什么老师没有提供?
老师无能?老师不会?老师懒惰?
老师自私?老师欺负新人?
哈哈和。。。
是故意的

* 故意?是的,是故意的
也不能这么讲
应该说是教学方式

* 人是懒惰的动物
如果东西便便就有
如果简单的就拥有
他们是不会珍惜的
不对吗?
哈哈和。。。

* 人,尤其自以为是的人
尤其是固执的人
我告诉他们,你这样。。。
那样会碰钉子的
他一定不相信
想想,这也不是什么坏事
就让他们去走冤枉路吧!
没有试过怎么会死心呢!
哈哈和。。。
第17章:要或不要



* 编写策略要讲“简单”也可以
讲“不简单”也可以
这怎么说呢?

* 简单是因为“懂”
不简单是因为“不知道”

* 懂?懂是什么?
懂就是“噢”
“噢,原来是这样”
“噢,我明白了”

* 前面讲过了我不会编写EA
但,什么EA策略也难不倒我
我没有时间学习什么C++
我也不知道C++是什么
几个月前,我也不懂EA是什么

* 我不知道什么是cgi
什么是asp
什么是Php
我不会编写cgi,asp,php
但是我想做一个“姓名学运算”的网站
顺便做一个“一键就可以改名起名”的网站
你说有问题吗?

* 没有人会相信我可以自己办到
连我自己也不相信
我就是要
所以。。。我可以
你可以到我的网站 7x51.com 算一算
你的名字好不好?看看我是不是在瞎说
哈哈和。。。

* 所以,编写EA这问题
是看你自己“要”或“不要”
没有什么可以或不可以之说
·         05-28-2009 04:06 AM
yes810
第拾捌章:编写的思路


* 编写策略其实很简单
为什么简单
因为速成班的EA模板已经便便有了之后
什么策略也难不倒你了

* 比如这样
if(s+b==0
&&macd1>macd2
&& macd1_2<macd2_2){buyme();}

* 如果你要交叉先退出sell
就把这个加在那个的上面就可以了
if(s+b==1
&&macd1>macd2
&& macd1_2<macd2_2){closesell();}

* 就是这么简单
你还需要去学习那个什么“一气呵成”的EA吗?
改东改西吗?
讲过了,“一气呵成”的EA不适合新手学习
你越看你就越乱
除非你喜欢乱
除非你不想速成
另外讲
哈哈和。。。
·         05-28-2009 04:09 AM
yes810
第一九章:如何寻找平仓子程式


* closebuy 和 closesell网上到处多的是
你们怎么就是找不到
还是不知道怎样找?
还是没有找?

* 网上有很多有代码的免费EA
打开他们的EA看看

* 在几个EA里面一定有
close的子程式
他们可能以别的方式编写
也不要紧
copy & press
修改一下
就可以把它变成closebuy()和closesell()了
就是这么简单

* closebuy()和closesell()
就是平仓buy 和
平仓sell的开单
·         05-28-2009 04:22 AM
yes810
第20章:什么是magic


* magic 在红毛话的意思就是“魔术”
在MT4的用意就是辨认这EA开的单子

* MT4顾虑到不是所有的顾客都使用EA开单
有时候你是可以自己手动开单
有magic no 的EA
他只辨认及管理EA自己开的单子
他不会管理你手动开的单子

* 意思就是比如你总结有10个单
但只有三个是EA自动开单的
假如EA要关闭单子
他只会选择magic no一样的3个单子关掉
不会选择你手动添加的单子关闭

* 第二的可能是
有些人会在同一个户口
使用许多不同的EA
个个EA有他自己的魔术号码
所有EA管理自己的魔术号码
就不会出乱子了

* 也有可能
一个EA里面有好几个magic 号码
其用意也是在控制复杂的开单和关单

* 有时候有些人用自定函数的名称
MAGICMA 或 MagicNumber
但效果一样的

举例:

#define MAGICMA 2828228//int MagicNumber = 200601182020;
// allows multiple experts to trade on same account

* 以下是一个添加在TrailingStop的MAGICMA方式


void TrailingStop()
{
// if we have opened positions we take care of them
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber()==MAGICMA) {
if (OrderType()==OP_SELL)
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}

if (OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
}
}
}//end TrailingStop/////////////////////

* 只有你多多参考别人怎样加“魔术号码”
久而久之你也会了
没有什么了不起的
哈哈和。。。
""
还没有人打赏,支持一下

评论|共 22 个

副会他爹

发表于 2012-11-21 23:00:23 | 显示全部楼层

哈哈,顶你了哦.  

mt5mt5

发表于 2012-11-21 23:00:23 | 显示全部楼层

ding   支持  

tat12345

发表于 2012-11-22 00:28:10 | 显示全部楼层

支持一下吧  

掘金帮

发表于 2012-11-22 00:28:10 | 显示全部楼层

真的有么  

阳光小虾

发表于 2012-11-22 00:28:10 | 显示全部楼层

好帖子,要顶!

idc

发表于 2012-11-22 00:28:10 | 显示全部楼层

人气还要再提高  

wilf528

发表于 2012-11-22 00:28:10 | 显示全部楼层

貌似我真的很笨????哎  

醉卧花丛

发表于 2012-11-22 00:28:10 | 显示全部楼层

发贴看看自己积分  

风伤依旧

发表于 2012-11-22 00:28:10 | 显示全部楼层

坐下沙发,呵呵,模拟了一下,觉得可以。  

123下一页
您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则