小西点金 发表于 2011-9-20 21:47:50

求助:给macd sample EA加上移动止赢止损策略。。谢谢。


[*]
[*]/*
[*]MACD Sample详解
[*]//+------------------------------------------------------------------+
[*]//|                                                MACD Sample.mq4 |
[*]//|                      Copyright ?2005, MetaQuotes Software Corp. |
[*]//|                                       http://www.metaquotes.net/ |
[*]//+------------------------------------------------------------------+
[*]以上是垃圾
[*]*/
[*]//这是自定义函数
[*]extern double TakeProfit = 50;   //盈利目标点数
[*]extern double Lots = 0.1;       //每单入场的手数
[*]extern double TrailingStop = 30; //追踪止损的点数
[*]extern double MACDOpenLevel=3; //MACD开仓的参考位置
[*]extern double MACDCloseLevel=2; //MACD出场的参考位置
[*]extern double MATrendPeriod=26; //条件中使用的MA均线的周期数
[*]//程序最上面extern开始的这些数据都是程序参数,
[*]//也就是在使用者调用的时候可以修改的部分。
[*]//这个EA是个常见的技术指标条件入场,条件出场
[*]//同时又移动止损功能的完成示意,
[*]//很适合初学者研究。
[*]//先总结这个程序的基本条件的意思 以方便大家对号入座,尽快理解。
[*]//多头入场条件:buy
[*]// MACD小于0 并且 小于指定的参数MACDOpenLevel   
[*]   //并且 MACD讯号下下穿基准线(死叉) 并且 MA向上趋势
[*]//多头出场条件:Close buy
[*]// MACD大于0 并且 大于指定的参数MACDCloseLevel
[*]   //并且 MACD信号线上传基准线(金叉)
[*]//空头入场条件:sell
[*]//MACD大于0 并且 大于指定的参数MACDOpenLevel   
[*]//并且 MACD讯号线上穿基准线(金叉) 并且 MA向下趋势
[*]//空头出场条件: Close sell
[*]//MACD小于0 并且 小于制定的参数MACDCloseLevel   
[*]//并且 MACD讯号线下穿基准线(死叉)
[*]//=============================================================
[*]//有了以上的初步了解,下面开始进行EA程序基本结构的分析:
[*]//1、start()函数是最重要的执行部分,
[*]//每来一个价格 此函数都自动执行一次,所以主要的逻辑结构都在这个函数里
[*]//2、程序的基本流程都是按照以下步骤进行,
[*]//我们先牢牢记住这个结构,然后再对号入座去理解程序。
[*]//先判断当前自身的仓位状态,因为start函数式循环运行的,
[*]//所以中间的每个步骤都会使用start函数,因此,
[*]//当函数开始的时候我们首先要通过MT4的仓位操作函数获得当前的仓位状态,
[*]///并进一步根据状态进行不同分支的计算。
[*]//程序开始的以下两个部分不重要 简单说一下:
[*]int start()
[*]{
[*]//这是自定义函数
[*]   double MacdCurrent, MacdPrevious, SignalCurrent;
[*]   double SignalPrevious, MaCurrent, MaPrevious;
[*]   int cnt, ticket, total;
[*]//这是多余的检查
[*]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)//追踪止损重复了2次(没有水准的编写)
[*]            {               
[*]               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
[*]               {
[*]                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
[*]                  {
[*]                  //如果检查条件符合就OrderModify buy的单
[*]                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
[*]                     return(0);
[*]                  }
[*]               }
[*]            }
[*]         }
[*]      }
[*]   }
[*]   return(0);//返回上面再从头执行
[*]}// the end.完

复制代码
我想把MACD这个EA的止损去掉,修改成为止损止赢的保护策略。。我的止损止赢策略是一个多单或空单,
当赢利30点,那么在开仓价的+N点做一个止损止赢的保护,当价格若回撤到止损位的时候,就平仓了;
当赢利50点,那么在开仓价的+N*3点做一个止损止赢的保护,当价格若回撤到止损位的时候,就平仓了;
当赢利70点,那么在开仓价的+N*5点做一个止损止赢的保护,当价格若回撤到止损位的时候,就平仓了;
当赢利80点,那么在开仓价的+N*6点做一个止损止赢的保护,当价格若回撤到止损位的时候,就平仓了;

弄了几天没成功。。求助各位高手。。版主求助。。
万分感谢。。

lramr 发表于 2012-11-22 00:28:10

天啊.

hate 发表于 2012-11-22 00:28:10

一楼的位置好啊..

lramr 发表于 2012-11-22 00:28:10

唉,悲催的外汇。。

爻爻 发表于 2012-11-22 00:28:10

给推荐一个好的平台,这样EA才能很好的发挥啊

姐想赚钱 发表于 2012-11-22 00:28:10

你还想说什么啊....

我爱sqq 发表于 2012-11-22 00:28:10

朕要休息了..............

操盘手 发表于 2012-11-22 00:28:10

我有个群,大家一起来讨论EA.

madydela07 发表于 2012-11-22 00:28:10

加油啊!!!!顶哦!!!!!

yzopqjam 发表于 2012-11-22 00:28:10

经过你的指点 我还是没找到在哪 ~~~
页: [1] 2
查看完整版本: 求助:给macd sample EA加上移动止赢止损策略。。谢谢。