1-------100你离100%还有多远??、、?
每个做外汇的人都想拥有自己的EA{保证能够赚钱的EA},。。。这个我就不在多说废话了,大家心里是最清楚不过了,想要有自己的EA这个想法是非常正确的,但是要动手做一个保证能够赚钱的EA,那真是太难了,但是我相信:努力还是有希望的,不努力那就绝对没希望了。好吧,我们要以十倍的努力加上我们所有的智慧从0开始的学习。刚开始要学EA的人,看到EA源码就好像是在看天书,好,那么我们从这里开始学,
我们的学习思路是这样的:点-----线-----网-----面-----体,
大家看了上面的话,感觉我是要给大家讲课似的,不然不然!!我只是想把我知道的发上来和大家共享,另外也通过此平台和大家一起进步。
《以后我会把我知道的东西陆续发在本粘上,“当然是从0开始得,”
相信不平凡的生活是从菜鸟开始的,
首先我们就从第一问题入手:
先找一个样本吧,那就找最平凡,最经典的一个EA:MACD。因为这个大家都知道,
你能完完全全的看懂它吗? 你能完完全全的理解他吗?每个字符和每个函数你都能完完全全的灵活的应用吗?
如果你看不懂你也不要着急,我为什么要找个EA:MACD放上来呢?因为这个大家都知道,网上的资料相对来说也是比较齐全,所以对我们新手来说要看明白他是非常有利的,通过网上的资料和MQL4的字典功能,要完完全全的搞明白它,那只是个时间问题了,无论你会不会英语,有没有C语言的基础那都没多大的关系。这个问题就让我们一步一步的来解决。
Let\'s get started!让我们开始吧!
还是提前声明一下:由于本人水平有限,所以呢,犯错误是在所难免的,在此也希望大家给予指正。
[*]//+------------------------------------------------------------------+
[*]//| MACD Sample.mq4 |
[*]//| Copyright ?2005, MetaQuotes Software Corp. |
[*]//| http://www.metaquotes.net/ |
[*]//+------------------------------------------------------------------+
[*]
[*]extern double TakeProfit = 10;
[*]extern double Lots = 0.1;
[*]extern double TrailingStop = 10;
[*]extern double MACDOpenLevel=3;
[*]extern double MACDCloseLevel=2;
[*]extern double MATrendPeriod=26;
[*]
[*]//+------------------------------------------------------------------+
[*]//| |
[*]//+------------------------------------------------------------------+
[*]int start()
[*]{
[*] double MacdCurrent, MacdPrevious, SignalCurrent;
[*] double SignalPrevious, MaCurrent, MaPrevious;
[*] int cnt, ticket, total;
[*]// initial data checks
[*]// it is important to make sure that the expert works with a normal
[*]// chart and the user did not make any mistakes setting external
[*]// variables (Lots, StopLoss, TakeProfit,
[*]// TrailingStop) in our case, we check TakeProfit
[*]// on a chart of less than 100 bars
[*] if(Bars(MACDOpenLevel*Point) && MaCurrent0)
[*] {
[*] if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(\"SELL order opened : \",OrderOpenPrice());
[*] }
[*] else Print(\"Error opening SELL order : \",GetLastError());
[*] return(0);
[*] }
[*] return(0);
[*] }
[*] // it is important to enter the market correctly,
[*] // but it is more important to exit it correctly...
[*] for(cnt=0;cnt(MACDCloseLevel*Point))
[*] {
[*] OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
[*] return(0); // exit
[*] }
[*] // check for trailing stop
[*] if(TrailingStop>0)
[*] {
[*] if(Bid-OrderOpenPrice()>Point*TrailingStop)
[*] {
[*] if(OrderStopLoss()0)
[*] {
[*] if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
[*] {
[*] if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
[*] {
[*] OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
[*] return(0);
[*] }
[*] }
[*] }
[*] }
[*] }
[*] }
[*] return(0);
[*]}// the end.
复制代码
下面是我翻译的,可能有些翻译的不太准确,做不到十全十美那就来个十全九美吧,不过我相信是不会影响你看明白他的意思的,如果能做到这一点那么就说明我的目的达到了<div class=\"blockcode\"><div id=\"code_rYB\"><ol>//+------------------------------------------------------------------+
//| MACD Sample.mq4 |
//| Copyright ?2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
extern double TakeProfit = 10;// 盈利目标点数
extern double Lots = 0.1;//每单入场的手数
extern double TrailingStop = 20;//追踪止损的点数
extern double MACDOpenLevel=3;//MACD开仓的参考位置
extern double MACDCloseLevel=2;//MACD出场的参考位置
extern double MATrendPeriod=26;//条件中使用的MA均线的周期数
//程序最上面extern开始的这些数据都是程序参数,也就是在使用者调用的时候可以修改的部分。
//这个EA是个常见的技术指标条件入场,条件出场 同时又移动止损功能的完成示意,很适合初学者研究。
//先总结这个程序的基本条件的意思 以方便大家对号入座,尽快理解。
//多头入场条件:
// MACD小于0 并且 小于指定的参数MACDOpenLevel并且 MACD讯号下下穿基准线(死叉) 并且 MA向上趋势
//多头出场条件:
// MACD大于0 并且 大于指定的参数MACDCloseLevel 并且 MACD信号线上传基准线(金叉)
//空头入场条件:
//MACD大于0 并且 大于指定的参数MACDOpenLevel并且 MACD讯号线上穿基准线(金叉) 并且 MA向下趋势
//空头出场条件:
//MACD小于0 并且 小于制定的参数MACDCloseLevel并且 MACD讯号线下穿基准线(死叉)
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//下面开始进行EA程序基本结构的分析
int start()
//1、start()函数是最重要的执行部分,每来一个价格 此函数都自动执行一次,所以主要的逻辑结构都在这个函数里
//2、程序的基本流程都是按照以下步骤进行,我们先牢牢记住这个结构,然后再对号入座去理解程序
// 先判断当前自身的仓位状态,因为start函数式循环运行的,所以中间的每个步骤都会使用start函数,因此,当函数开始的时候我们首先要通过MT4的仓位操作函数获得当前的仓位状态,并进一步根据状态进行不同分支的计算。
{
double MacdCurrent, MacdPrevious, SignalCurrent;//MACD当前的数值,MACD之前的数值,信号线当前的数值
double SignalPrevious, MaCurrent, MaPrevious;//信号线之前的数值,MA当前的数值,MA之前的数值
//说明要引用3跟线进行交叉对比,
int cnt, ticket, total;//同样在这里定义了3个整数
// initial data checks 检查原始数据
// it is important to make sure that the expert works with a normal确定很重要哪一专家的作品用常态
// chart and the user did not make any mistakes setting external 图解和使用者没有让任何的设定的错误外部
// variables (Lots, StopLoss, TakeProfit, 变数( 每单入场手数,止损 ,赢利目标点数, 追踪止损 在我们的情况,我们检查:
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars在一图解少于 100根酒吧上
if(Bars 呵呵,找个机会... 真笨,如果有那么好赚的话,就不用做广告给你们了!这些都是骗人的!就像股票软件一样。。。。 这个贴不错!!!!! 鉴定完毕.! 小生对楼主之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心. 我的啦嘿嘿 我帮你 喝喝 现在越做月亏啊 我在顶贴~!~