公务文书的十五个文种:申请mt4--趋势与震荡的结合运用(页 1) - 【MT4开发申请】 - 520FX MT...

来源:百度文库 编辑:中财网 时间:2024/05/04 05:04:35

申请mt4--趋势与震荡的结合运用

设5日10日两条加权均线及 kd线指标(10,5,3).参数可调.当前烛(活动未收盘)为0烛,之前刚收盘烛为1烛,再之前为2烛.


买入条件:1烛开盘在10日均线以下,收盘在10日均线以上,1烛对应的5日均线在10日以上,2烛收盘价在10日均线以下,2烛对应的5日均线在10日均线以下,并且1烛对应的kd线大于20小于80,1烛对应的kd值减2烛对应的kd值>=0, 当以上条件全部满足的情况下,当前0烛开盘后,当前活动价格(好象应该是close)减10日均线<3点时以市价买入.


卖出条件与买入相反.

买平仓:当2烛由上下穿10日均线,收盘价在10日均线下,1烛收盘依然10日均线下并且买单开仓时间距离平仓时间至少一个烛的时间周期.
卖平仓:当2烛由下上穿10日均线收盘价在10日均线上,1烛收盘依然10日均线上并且买单开仓时间距离平仓时间至少一个烛的时间周期.

[[i] 本帖最后由 zsz1002 于 2007-9-9 18:10 编辑 [/i]]

bull 发表于 2007-9-5 16:09

平仓条件没达到之前,出现反向入场讯号,如何处理。另外最近非常忙,一般EA比较指标复杂得多,没太多时间照应。你说完整,如果有时间会帮你处理的

zsz1002 发表于 2007-9-6 03:14

谢谢版主能抽时间关注到我的请求:)

平仓条件没达到而出现反向信号,我考虑是可开反向仓,即允许买卖仓同时存在.但任何方向开单后没平仓前,不允许再开同方向新单.移动止赢止亏比较复杂,暂时不设.

zsz1002 发表于 2007-9-7 16:50

怎么样?有进展吗?好期待呀

bull 发表于 2007-9-7 17:34

这两天商业开发赶工中。。。再等等

bull 发表于 2007-9-8 19:01

1、空头入场条件 不是一句“反之”就对的,自己仔细看看重新用文字说明。我们没法猜测。例如:多头入场KD>20 <80 直接反过来岂不是令人费解。一定要认真!
2、出场单距离入场单至少一个距离,我们这次只能做到入场单和出场单所在的K线差距超过一个。而不是准确的计算入场时间和出场时间的比较。
3、因时间有限,目前只能做出任何时候只有单一仓单在场的方式。不做同时持仓的方式。
请确认,并补充。

bull 发表于 2007-9-8 19:11

另外请修改帖子标题,以方便其他朋友查找参考

zsz1002 发表于 2007-9-9 02:40

MT4开发申请---均线系统

修改完的买卖条件:
设5日10日两条加权均线及 kd线指标(10,5,3).参数可调.当前烛(活动未收盘)为0烛,之前刚收盘烛为1烛,再之前为2烛.


买入条件:
     1烛开盘在10日均线以下,收盘在10日均线以上,1烛对应的5日均线在10日以上,2烛收盘价在10日均线以下,2烛对应的5日均线在10日均线以下,并且1烛对应的kd线大于20小于80,1烛对应的kd值减2烛对应的kd值>=0, 当以上条件全部满足的情况下,当前0烛开盘后,当前活动价格(好象应该是close)减10日均线<3点时以市价买入.


卖出条件与买入相反.

     1烛开盘在10日均线以上,收盘在10日均线以下,1烛对应的5日均线在10日以下,2烛收盘价在10日均线以上,2烛对应的5日均线在10日均线以上,并且1烛对应的kd线小于80且大于20,1烛对应的kd值减2烛对应的kd值<=0, 当以上条件全部满足的情况下,当前0烛开盘后,当前活动的10日均线减当前价格(好象应该是close)<3点时以市价卖出.

买平仓:当2烛由上下穿10日均线,收盘价在10日均线下,1烛收盘依然10日均线下并且买单开仓时间距离平仓时间至少一个烛的时间周期.
卖平仓:当2烛由下上穿10日均线收盘价在10日均线上,1烛收盘依然10日均线上并且买单开仓时间距离平仓时间至少一个烛的时间周期.


至于入场单和出场单所在的K线差距,超过一个应该就可以了.如暂时不能做到同时持仓,那平仓条件没达到而出现反向信号则反向开新仓优先,同时平掉现有单子.

zsz1002 发表于 2007-9-9 02:43

如何修改帖子标题?不好意思,我不会

bull 发表于 2007-9-9 12:41

[quote]原帖由 [i]zsz1002[/i] 于 2007-9-9 02:43 发表 [url=http://bbs.520fx.com/redirect.php?goto=findpost&pid=5273&ptid=2890][img]http://bbs.520fx.com/images/common/back.gif[/img][/url]
如何修改帖子标题?不好意思,我不会 [/quote]
楼顶你发的帖子,点 编辑 改标题

bull 发表于 2007-9-9 12:42

[code]//+------------------------------------------------------------------+
//|                                                      zsz1002.mq4 |
//|                                     Copyright ?2007, 520FX Corp. |
//|                                             http://www.520fx.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2007, 520FX Corp."
#property link      "http://www.520fx.com"
extern int Ma1=5;
extern int Ma2=10;
extern int K=10;
extern int D=5;
extern int Slowing=3;
extern int SlipPoints=5;
extern double Lots=0.1;
int TypeOfOrder;
int OpenCnt;
int start()
  {double Ma10_0,Ma5_1,Ma5_2,Ma10_1,Ma10_2,Ma10_3,KD_Main1,KD_Main2,KD_Signal1,KD_Signal2;
   int Ticket;
   Ma10_0=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,0);
   Ma5_1=iMA(NULL,0,Ma1,0,MODE_EMA,PRICE_CLOSE,1);
   Ma5_2=iMA(NULL,0,Ma1,0,MODE_EMA,PRICE_CLOSE,2);
   Ma10_1=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,1);
   Ma10_2=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,2);
   Ma10_3=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,3);
   KD_Main1=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_MAIN,1);
   KD_Main2=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_MAIN,2);
   KD_Signal1=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_SIGNAL,1);
   KD_Signal2=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_SIGNAL,2);
   /*
   买入条件:
   1烛开盘在10日均线以下,收盘在10日均线以上,
   1烛对应的5日均线在10日以上,
   2烛收盘价在10日均线以下,2烛对应的5日均线在10日均线以下,
   并且1烛对应的kd线大于20小于80,
   1烛对应的kd值减2烛对应的kd值>=0,
   当以上条件全部满足的情况下,
   当前0烛开盘后,当前活动价格(好象应该是close)减10日均线<3点时以市价买入
   
   卖出条件:
   1烛开盘在10日均线以上,收盘在10日均线以下,
   1烛对应的5日均线在10日以下,
   2烛收盘价在10日均线以上,2烛对应的5日均线在10日均线以上,
   并且1烛对应的kd线小于80且大于20,
   1烛对应的kd值减2烛对应的kd值<=0,
   当以上条件全部满足的情况下,当前0烛开盘后,当前活动的10日均线减当前价格(好象应该是close)<3点时以市价卖出.
   */
   if (GetOrderMessage()==-1)//空仓状态
   {if (Open[1]Ma10_1 && Ma5_1>Ma10_1 && Close[2]20 && KD_Signal1<80 && (KD_Signal1-KD_Signal2)>=0 && MathAbs(Ask-Ma10_0)<3*Point)
    {
     Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,SlipPoints,0,0,"","1",0,0);//开多头新单
     if(Ticket<0)
     {
      Print("多单建仓失败");  
      return(0);   
     }
     
     if (Open[1]>Ma10_1 && Close[1]Ma10_2 && Ma5_2>Ma10_2 && KD_Signal1>20 && KD_Signal1<80 && (KD_Signal1-KD_Signal2)<0 && MathAbs(Bid-Ma10_0)<3*Point)
    {
     Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,SlipPoints,0,0,"","1",0,0);//开多头新单
     if(Ticket<0)
     {
      Print("空单建仓失败");  
      return(0);   
     }
    }
   }else//持仓状态
   {
    /*
     买平仓:当2烛由上下穿10日均线,收盘价在10日均线下,1烛收盘依然10日均线下
     并且买单开仓时间距离平仓时间至少一个烛的时间周期.
     卖平仓:当2烛由下上穿10日均线收盘价在10日均线上,1烛收盘依然10日均线上
     并且买单开仓时间距离平仓时间至少一个烛的时间周期.
    */
    switch(TypeOfOrder)
    {
     case OP_BUY:
       if (Close[3]>Ma10_3 && Close[2]=1)
       {
        if(OrderClose(GetOrderMessage(),OrderLots(),Ask,SlipPoints)==false)
        {
         Print("多单平仓失败");
         return;
        }
       }
       break;
     case OP_SELL:
       if (Close[3]Ma10_2 && Close[1]>Ma10_1 && OpenCnt>=1)
       {
        if(OrderClose(GetOrderMessage(),OrderLots(),Bid,SlipPoints)==false)
        {
         Print("空单平仓失败");
         return;
        }
       }
       break;   
    }   
   }
   }
   return(0);
  }
//+------------------------------------------------------------------+
int GetOrderMessage()
{OpenCnt=-1;
int i,j,Tick;
for(i=0;i{
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol()==Symbol())
   {
    Tick=OrderTicket(); //持仓单Tick            
    TypeOfOrder=OrderType();      
    OpenCnt=iBarShift(NULL,0,OrderOpenTime(),false);
    return(Tick);
   }
}
return(-1);//空仓
}[/code]

zsz1002 发表于 2007-9-9 20:36

系统测试有一笔买进单,没有平仓,是不是缺平仓指令?

另:增加一防止假突破后跳水的平仓条件:
买平仓:Ma5_2>Ma10_2同时close[1]>open[1],同时close[1]>Ma10_1,当前活动烛的当前最高价high>high[1], 在当前烛当前价格close
卖平仓:Ma5_2high[1] ,市价平仓.


有几个不明之处,请教:
extern int Slowing=3;
extern int SlipPoints=5;
的Slowing和SlipPoints是什么意思?有什么作用?

bull 发表于 2007-9-9 22:55

1、Slowing为KD指标参数中的慢速指标
2、SlipPoints为设定的可接受滑点范围。
【程序可以测试了】

bull 发表于 2007-9-9 22:56

[code]//+------------------------------------------------------------------+
//|                                                      zsz1002.mq4 |
//|                                     Copyright ?2007, 520FX Corp. |
//|                                             http://www.520fx.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2007, 520FX Corp."
#property link      "http://www.520fx.com"
extern int Ma1=5;
extern int Ma2=10;
extern int K=10;
extern int D=5;
extern int Slowing=3;
extern int SlipPoints=5;
extern double Lots=0.1;
int TypeOfOrder;
int OpenCnt;
int start()
  {double Ma10_0,Ma5_1,Ma5_2,Ma10_1,Ma10_2,Ma10_3,KD_Main1,KD_Main2,KD_Signal1,KD_Signal2;
   int Ticket,Result;
   Ma10_0=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,0);
   Ma5_1=iMA(NULL,0,Ma1,0,MODE_EMA,PRICE_CLOSE,1);
   Ma5_2=iMA(NULL,0,Ma1,0,MODE_EMA,PRICE_CLOSE,2);
   Ma10_1=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,1);
   Ma10_2=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,2);
   Ma10_3=iMA(NULL,0,Ma2,0,MODE_EMA,PRICE_CLOSE,3);
   KD_Main1=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_MAIN,1);
   KD_Main2=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_MAIN,2);
   KD_Signal1=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_SIGNAL,1);
   KD_Signal2=iStochastic(NULL,0,K,D,Slowing,MODE_SMA,PRICE_CLOSE,MODE_SIGNAL,2);
   /*
   买入条件:
   1烛开盘在10日均线以下,收盘在10日均线以上,
   1烛对应的5日均线在10日以上,
   2烛收盘价在10日均线以下,2烛对应的5日均线在10日均线以下,
   并且1烛对应的kd线大于20小于80,
   1烛对应的kd值减2烛对应的kd值>=0,
   当以上条件全部满足的情况下,
   当前0烛开盘后,当前活动价格(好象应该是close)减10日均线<3点时以市价买入
   
   卖出条件:
   1烛开盘在10日均线以上,收盘在10日均线以下,
   1烛对应的5日均线在10日以下,
   2烛收盘价在10日均线以上,2烛对应的5日均线在10日均线以上,
   并且1烛对应的kd线小于80且大于20,
   1烛对应的kd值减2烛对应的kd值<=0,
   当以上条件全部满足的情况下,当前0烛开盘后,当前活动的10日均线减当前价格(好象应该是close)<3点时以市价卖出.
   */
   Result=GetOrderMessage();
   
   if (Result==-1)//空仓状态
   {
    if (Open[1]Ma10_1 && Ma5_1>Ma10_1 && Close[2]20 && KD_Signal1<80 && (KD_Signal1-KD_Signal2)>=0 && MathAbs(Ask-Ma10_0)<3*Point)
    {
     Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,SlipPoints,0,0,"","1",0,0);//开多头新单
     if(Ticket<0)
     {
      Print("多单建仓失败");  
      return(0);   
     }
    }
     if (Open[1]>Ma10_1 && Close[1]Ma10_2 && Ma5_2>Ma10_2 && KD_Signal1>20 && KD_Signal1<80 && (KD_Signal1-KD_Signal2)<0 && MathAbs(Bid-Ma10_0)<3*Point)
    {
     Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,SlipPoints,0,0,"","1",0,0);//开多头新单
     if(Ticket<0)
     {
      Print("空单建仓失败");  
      return(0);   
     }
    }
   }else//持仓状态
   {
    /*
     买平仓:当2烛由上下穿10日均线,收盘价在10日均线下,1烛收盘依然10日均线下
     并且买单开仓时间距离平仓时间至少一个烛的时间周期.
     卖平仓:当2烛由下上穿10日均线收盘价在10日均线上,1烛收盘依然10日均线上
     并且买单开仓时间距离平仓时间至少一个烛的时间周期.
    */
    //Print(OpenCnt," ",Result);
    switch(TypeOfOrder)
    {
     case OP_BUY:
      
       if (Close[3]>Ma10_3 && Close[2]=1)
       {
        if(OrderClose(Result,OrderLots(),Ask,SlipPoints)==false)
        {
         Print("多单平仓失败");
         return;
        }
       }
       break;
     case OP_SELL:
       if (Close[3]Ma10_2 && Close[1]>Ma10_1 && OpenCnt>=1)
       {
        if(OrderClose(Result,OrderLots(),Bid,SlipPoints)==false)
        {
         Print("空单平仓失败");
         return;
        }
       }
       break;   
    }// end of switch   
   }//end of else
   
   return(0);
  }
//+------------------------------------------------------------------+
int GetOrderMessage()
{OpenCnt=-1;
int i,j,Tick;
for(i=0;i{
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol()==Symbol())
   {
    Tick=OrderTicket(); //持仓单Tick            
    TypeOfOrder=OrderType();      
    OpenCnt=iBarShift(NULL,0,OrderOpenTime(),false);
    //Print(OpenCnt);
    return(Tick);
   }
}
return(-1);//空仓
}[/code]

zsz1002 发表于 2007-9-10 01:45

测试了一下,基本达到了预想目标.
  
请再受累另:增加一防止假突破后跳水的平仓条件:
买平仓:Ma5_2>Ma10_2同时close[1]>open[1],同时close[1]>Ma10_1,当前活动烛的当前最高价high>high[1], 在当前烛当前成交价格close
卖平仓:Ma5_2high[1] ,市价平仓.

zsz1002 发表于 2007-9-10 01:58

SlipPoints为什么要设为5呢?设1或2有什么不妥?
还有该系统附加图表后系统交易指示是哭脸状态时,当符合买卖条件或平仓条件时,系统在图表上能否给予进单或平仓箭头提醒?比如:进单红色箭头,平仓绿色.

zsz1002 发表于 2007-9-10 02:32

#define MAGICMA  20050610 是什么意思?

zsz1002 发表于 2007-9-11 01:22

非常期待中,非常期待中...

bull 发表于 2007-9-12 12:00

[quote]原帖由 [i]zsz1002[/i] 于 2007-9-10 01:45 发表 [url=http://bbs.520fx.com/redirect.php?goto=findpost&pid=5315&ptid=2890][img]http://bbs.520fx.com/images/common/back.gif[/img][/url]
测试了一下,基本达到了预想目标.

请再受累另:增加一防止假突破后跳水的平仓条件:
买平仓:Ma5_2>Ma10_2同时close[1]>open[1],同时close[1]>Ma10_1,当前活动烛的当前最高价high>high[1], 在当前烛当前成交价格close ... [/quote]

原来的平仓条件呢?如何处理

bull 发表于 2007-9-12 12:03

[quote]原帖由 [i]zsz1002[/i] 于 2007-9-10 01:58 发表 [url=http://bbs.520fx.com/redirect.php?goto=findpost&pid=5316&ptid=2890][img]http://bbs.520fx.com/images/common/back.gif[/img][/url]
SlipPoints为什么要设为5呢?设1或2有什么不妥?
还有该系统附加图表后系统交易指示是哭脸状态时,当符合买卖条件或平仓条件时,系统在图表上能否给予进单或平仓箭头提醒?比如:进单红色箭头,平仓绿色. ... [/quote]
1、SlipPoints是实际做单中防止交易商滑点的措施,在模拟帐户的历史测试中体现不出来
2、哭脸是因为你加载EA的时候没有将“自动下单”的选项勾上。属性里面可以勾选,就笑脸了
3、实际做单时,图上会自动标记入场出场的符号。