2评论

0收藏

外汇EA一些入门的知识点

avatar yanni | 3418 人阅读 | 2 人评论 | 2016-08-01

什么是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

认识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();}


告诉我以下怎样解读

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点
){这样才买上成交}

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



* 什么是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 也是大写的


认识Time[0]



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

* 很多时候
我们遇到新的词句

我们第一步就是“研究”
而不是问
问了也是白问
因为明天你就忘记了
是忘得一干二尽啊!

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

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

* 认识Time[0]
记住Time[0]的效果
在以后编写策略时
可能会有用到的



认识时间观念



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

* 有些人只喜欢玩热门时间
比如早上八点到下午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){。。。


认识常用之符号


* 如果你不认识这些符号
你很难编写你的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 不放
然后 再按 \ 就有 || 出来了


""
还没有人打赏,支持一下

评论|共 2 个

mks

发表于 2016-10-21 16:13:06 | 显示全部楼层

感谢分享,谢谢谢谢

stchw916

发表于 2016-10-22 19:19:20 | 显示全部楼层

感谢分享,谢谢谢谢

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

EA之家评论守则