客服工作时间:周一至周五 8:30-17:30
打印

[技术分析] 3条均线EA系统测试

本主题由 blueking 于 2008-8-24 22:58 审核通过

3条均线EA系统测试

我用的是5,13,34三条均线系统.当均线是5,13,34时,开多单.当均线是34,13,5时,开空单.当5日均线在13和34之前,平仓.
( i. F* N8 s6 w6 B
( M$ ]( A* K4 O可我测试后的结果,非常的不满意了.现在都开始怀疑这个均线系统是否正确了.
附件: 您所在的用户组无法下载或查看附件

TOP

肯定是开仓时段不合适!!
8 R+ d! {2 h6 }4 h3 l+ {# B& w: d; W
市场每天有3个时间段会出现新的推动力,这些都是亚洲,欧洲,美洲经济报表引发的。也可能是日内逆势大波动,也可能是顺日线的顺势波动。; Z4 d8 |) c1 W) H1 E# U8 @
& s' n4 N8 z  |7 v5 l9 i5 ~
只有考虑了这些情况下的均线系统,才会稳定。也是为什么ea均线测试失败的原因了。

TOP

看看这里面的均线交易:
7 O% ]" ]. w8 X5 l( S6 P! Ohttp://www.forexfactory.com/showthread.php?t=94006&page=18

TOP

均线交易系统,我觉得最麻烦的是盘整,一点点的就亏死了。

TOP

感觉就是盘整的时候,把开仓的保证金一点一点的吃掉了。到最后,都测试的快暴仓了

TOP

均线最怕的就是调整

TOP

均线是二战时期的高射炮手发明的,目的是更准确的打飞机。

TOP

你可以这样测试“1 k# }8 d. p+ S
近一个月随机选取三个均线参数,那个参数盈利最多就用哪个挂实盘。2 R+ c6 I( [) D+ r2 N( U5 x
非欧美市场不要做,盘整太多,均线交叉,没法做* e+ M1 }  @) V

' o/ E" U: o- Q' B/ l5 u& `最好别的参数结合着均线来做

TOP

引用:
原帖由 zjpg 于 2008-8-25 21:44 发表 # r# e4 ~- {9 x
均线是二战时期的高射炮手发明的,目的是更准确的打飞机。
. @2 Q  a7 e7 `) v. E& e: R

8 j2 G. o/ }2 p' T0 u0 u# a我最喜欢打飞机了,哈哈,打得很爽
爱情象革命,结局都是牺牲;
工作象革命,代价都是青春;
世事如潮人如水,
只叹江湖几人回!

TOP

你这个要改改,如果单纯的按照三条均线排列就下单,你会死的很惨.5 T6 q3 }8 \. Y+ B. V2 w
建议改改试一试:
, w0 d( c. x: d( S8 J% S1. 5用EMA5,13用EMA13,34用SMA34;4H周期,% I: _$ @! ]) [9 N; a
2. EMA5叉SMA34准备,等EMA13叉SMA34,后等下一个棒(4H)开盘决定: v! O3 R/ C5 {: N- m5 {# o
    A.  开盘价距EMA13叉SMA34的交叉点之差小于80点,开仓,同时止损80点: [6 o! w0 `$ @) d  ~8 d5 L* T
    B.  开盘价距EMA13叉SMA34的交叉点之差大于85点,不做,等下一信号
% L% h3 k; t) D3. EMA5反向叉SMA34时平仓5 e; @. Z) i6 J* ?

; b+ ~* ^" O8 P; l, s当然,这只是一般方法,个人还有不同的方式过滤信号和规避风险,出场等+ l9 {) A% R  S/ O
做4H行情,USDJPY,EURUSD等比较有效
; d" K, E- ?# U, E# j  \运用好了,小帐户年翻翻还是可以的,不敢贪多,每天看盘1-2次足矣
0 {5 U% N. C  W" z' e9 a
4 [  ]! h" U7 H( g/ e: e打字好累,懒得说了
爱情象革命,结局都是牺牲;
工作象革命,代价都是青春;
世事如潮人如水,
只叹江湖几人回!

TOP

好的,就按照楼上大大哥说的办。' t5 [, y( r- O) Q7 }, V
1 b3 g8 V' @$ z/ \% e' x
等休息的时候再把EA完善下。做好了,那出来大家共享了。4 E: h; g0 L# [

+ ]& Y9 L3 C$ K1 O6 l$ h* o, Z嘎嘎!!

TOP

指标组合如果也能长期稳定赚钱,这个外汇交易市场早就不存在了。
我们自己真正拥有的知识财富,其实是从别人那里借来的

TOP

哈哈,一成不变的系统必定会被市场所淘汰,
+ n* t% {) z- K: H; L" `1 r- F% |% `$ F必须要随着时间流逝、市场变化、心态调整等来修正你的系统中的某些东西,比如资金管理、参数设置、止损出场等
爱情象革命,结局都是牺牲;
工作象革命,代价都是青春;
世事如潮人如水,
只叹江湖几人回!

TOP

制作完成 请大家看看EA编写的是否存在问题。
6 ?. Y4 h/ N! X9 |( Q- c2 j0 O- P7 F9 g4 S# k) C( T8 l* q
//+------------------------------------------------------------------+
) `' U$ L- M% n1 _! e/ A' u% u//|                                                  MY_FIRST_EA.mq4 |
7 Y4 t: i+ K! g* ]//|                       Copyright ?2008, MetaQuotes Software Corp. |$ J% ?; Y9 N9 D" a
//|                                        http://www.metaquotes.net |
* b6 X* F: v; l//+------------------------------------------------------------------+
" L" u- L' d5 r* m3 X#property copyright "Copyright ?2008, MetaQuotes Software Corp."0 b! \& S2 S! V
#property link      "http://www.metaquotes.net"
5 b) a, y' ^; g- j3 ~#define MAGICMA 20081231
9 _/ B' @. s) H( s3 M
  r6 Z9 Z: H3 h" o7 G4 a4 M6 _//---- input parameters
9 a' k1 N" u5 c" e, ]extern int short_period = 5;
, I$ r2 h2 d! `) E: x0 s& d/ iextern int middle_period = 13;
+ H+ e$ \: z# C" s$ iextern int long_period = 34;
6 z2 X/ r" l& V: _2 |  M1 L2 cextern int StopLoss = 80;9 ^; [2 K  }! T' U7 S
//+------------------------------------------------------------------+
, w. r$ D- F3 Y) n/ t//| expert initialization function                                   |; H! S6 D. H# I4 T+ @1 i
//+------------------------------------------------------------------+
' ^* C8 g7 w, Tint init()
1 ?. {$ M$ W+ U* \0 m/ z3 w  {, b! T) V, a5 j) Y1 ]. \
//----2 {6 F$ B/ t6 Z* |7 z. O8 y
   8 E, Z0 R  ^) `: H
//----
  \9 S' X& s" h* ^0 `   return(0);
; ^4 ?/ y) B  P" ~0 @8 `" w: D  }
" ?% ]- j0 e" @+ G! ~  S/ P//+------------------------------------------------------------------+
9 {$ v2 H4 c9 J//| expert deinitialization function                                 |
. X) S1 V: W& H  L& b1 z//+------------------------------------------------------------------+
6 E! M$ Z$ y  E2 W! V% vint deinit()7 @9 I" I9 T5 j) U
  {
9 F0 J/ \) \. i% ~* D4 i//----& o+ p$ g" h1 {4 L  e) y
   
' N! f6 \/ ?2 ^# a- A6 }9 Q//----5 Z1 Z" f7 E1 o# D: U0 w
   return(0);
3 ~, r% Q4 P% [2 C! q) T/ }2 U2 p  }

TOP

再来* B; Y4 L& A- y: [! J) {8 z/ i

" ?! p* y+ p( R/ R: f( l& Q//+------------------------------------------------------------------+
. X1 `% k! T, \//| expert start function                                            |
; h: X- |" Y: t+ r) U//+------------------------------------------------------------------+* y- }# D! s* r6 x4 N  v- ^
int start()
8 n. _  q/ s+ T0 P4 {+ l  y{$ L+ G- v) m  h9 \
//----
9 |( O* M4 Q" s- q: K& N1 S   //---- check for history and trading
5 v$ Z$ |" h0 d' ^+ ?$ V   if(Bars<100 || IsTradeAllowed()==false) return;4 m& o- p- L: n
//---- calculate open orders by current symbol
5 ~# N: Y" ]9 ]   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
) G( U  h- l$ f9 f$ q! J3 c+ l   else                                    CheckForClose();# l3 b7 O& O( u2 `9 L+ g
2 h3 D  K3 e- L7 T9 t
//----) D+ H4 E+ I, o: k" Q9 Z# }
   return(0);
. M5 u; U# u% ~. X}# |! A/ x+ n1 H
//+------------------------------------------------------------------+
7 t$ o! u% q  Q! A// ---计算当前货币订单数函数
1 i  l2 F" |: Fint CalculateCurrentOrders(string symbol)
& x+ @$ o' y" V0 {{
5 H) p! C# }( V6 T0 d3 h+ G! y# I   int buys=0,sells=0;
; x+ C4 j! W5 @6 i, l) W- _: R9 g//----( F2 g5 V, @2 ?$ q- |# ?+ E
   for(int i=0;i<OrdersTotal();i++)
& ~4 l" |' Q1 ^7 X   {1 X7 u, Y- |/ E0 [1 |7 C0 m
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
! r0 F) ~. t6 [8 ^6 H. Q      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)& j- L& c2 j% k3 N. v% @
      {
1 ~: J+ Z( z9 _, W         if(OrderType()==OP_BUY)  buys++;' V0 o6 q  ^8 b4 ?  k6 J
         if(OrderType()==OP_SELL) sells++;
7 W7 `5 {$ T# o3 x9 m7 o" h; [      }3 U( x4 N3 ]- V  k/ W: _, O
   }
& P3 L, Q8 O- R% B2 W//---- return orders volume
# _+ C; Q0 M/ e8 v5 Z- B/ ]   if(buys>0) return(buys);2 b( g  e2 {# o# X5 Z' j4 p/ p
   else       return(-sells);7 X# r; f- `. o$ o4 I
}

TOP

继续了。。。
: K7 o; S0 P9 d5 [9 B7 B- I  r; G# T
2 h: }9 y) _1 B! @+ Y// 是否开仓; J2 ~. G8 i8 B, O% J* [
void CheckForOpen()* m6 j/ p# }9 U
{7 I5 I* l! L" f8 C5 q. |- [' H
   double open_short_ma, open_middle_ma,open_long_ma;
" m7 F3 l( x6 C3 w+ u   int    res;
6 p2 b. ?" E# E( x//---- go trading only for first tiks of new bar: P3 H# O3 M. h; U2 u9 q" z
   if(Volume[0]>1) return;. y, ^6 T6 A  h( o) W8 S2 U" d
   
. v$ c# k6 ?7 c5 Q! r- e//---- get Moving Average * l& Z) r# n$ w8 ~6 l
   open_short_ma = iMA(NULL, 0, short_period, 0, MODE_EMA, PRICE_CLOSE, 0);
2 b0 B; D# D- ^0 [$ G: _   open_middle_ma = iMA(NULL, 0, middle_period, 0, MODE_EMA, PRICE_CLOSE, 0);0 U# B4 k5 e  ^- o
   open_long_ma = iMA(NULL, 0, long_period, 0, MODE_SMA, PRICE_CLOSE, 0);3 @; v0 ?6 m' U7 X
! r( X/ l  M3 S, d
//---- sell conditions# ]( |; j' B1 M* ?( |% E' B! }8 l: Z
   if ( ( open_short_ma < open_middle_ma && open_short_ma < open_long_ma && open_middle_ma < open_long_ma ) &&
4 }9 F3 f3 s; |8 h; n3 j  {        ( ( open_middle_ma - Open[0] ) / Point < 80 ): R: I* r0 s( t3 T- d
      )+ f. H2 |; r/ ]/ o" r' y9 [: H! y
   {
8 M" i) [9 U# ~" o$ R2 `      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid-StopLoss*Point,0,"",MAGICMA,0,Red);, U8 f* g5 Z4 w* \* S
      return;6 Z/ \* `7 }6 i: C. G: I  D7 u
   }
( D- i3 X, g1 t4 \//---- buy conditions- q* o0 B6 A) }& o4 r& d# b1 e
   if ( ( open_short_ma > open_long_ma && open_short_ma > open_middle_ma && open_middle_ma > open_long_ma ) &&& t3 {& m4 q, v
        ( ( open_middle_ma - Open[0] ) / Point < 80 )
) y% [6 }) N! W* @0 x      ), ~+ @& m! m# `, z
   {
* f2 c2 P6 T# n. Z1 K4 A" u      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);3 d: V# D; W* l6 E5 g( Y4 v
      return;# g& |9 M7 l% A* ^# T+ \3 u( b
   }$ S0 _( T: |9 n) C* h
//----3 s3 z& @" O* c! e' s
}

TOP

续上。。3 G* T- N& i# M; I! G
8 T0 \! e! ~$ s% T) U
// 平仓的条件判断
* E- T4 [( _$ e% wvoid CheckForClose()
( i  T, h2 G  h+ Z' t; @; ]! R{
7 J1 x8 E+ [! T' `. Q" i   double close_short_ma, close_middle_ma, close_long_ma;2 c3 f1 ~7 `! r, Q
   int    res;! h& v6 M+ E1 w0 m- J* B! a0 w. ~
//---- go trading only for first tiks of new bar) g- U; ~! F$ l1 ^
   if(Volume[0]>1) return;
: p; J* K+ e1 e# ?7 x/ x4 l   
8 ~( L: ]6 t# H' a) E4 A0 U$ z//---- get Moving Average 9 q8 L$ y5 W/ D% @) m' ^
   close_short_ma = iMA(NULL,0,short_period,0,MODE_EMA,PRICE_CLOSE,0);/ s! F& \1 v" l
   close_middle_ma = iMA(NULL,0,middle_period,0,MODE_EMA,PRICE_CLOSE,0);
( O& S, ?) F; e- E  O6 z7 R- l! O   close_long_ma = iMA(NULL,0,long_period,0,MODE_SMA,PRICE_CLOSE,0);
, t! |8 g8 D5 \& @0 S" ^% [& O1 C8 a. L. ]0 f+ ^- ^% D1 Q
//----
& @1 R" L3 |1 s5 `$ F9 L2 p5 ^   for(int i=0;i<OrdersTotal();i++)
- y7 a: U" Y6 e" n   {
. \; W+ C9 L+ u, E      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;* B2 t9 F& A1 R& S- r+ E; m) G
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
1 C9 `- a6 @3 M# |8 T4 W# ?  A  z      //---- check order type 5 f3 v) {# `  W$ t4 z+ j
      if(OrderType()==OP_BUY)
: _# v3 ~/ Y2 v3 B* S      {0 X6 l3 o$ z: W5 {
         if ( close_short_ma < close_long_ma )
6 W( _% y3 A( _* k9 n) j! x         { " H7 r& \  [* I% g
            OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
* N4 f- d2 b/ u" {1 Y7 a6 t$ a         }   
1 m2 w: F8 p) Z# E         break;, }" e; t) z$ ^8 w/ e# |/ A' w
      }
: Y) {; Q* o4 @! G) G3 |      if(OrderType()==OP_SELL)
0 l# G: w* c6 o" |. m* h; x: ]% ?      {
( _) L% S6 Q; ~; e         if ( close_short_ma > close_long_ma )1 z9 p$ F' K5 |  q% O: _
         {
! Y+ K$ Q7 ~5 f8 I            OrderClose(OrderTicket(),OrderLots(),Ask,3,White);8 {7 `2 L# P5 h: x
         }   5 i) |" q# E9 W# ?( |4 I: ~) c
         break;  v- O/ K2 Y4 S! ?% P$ Z+ S9 L
      }
$ N/ c$ G8 I5 A0 K, q9 a# x   }, @  T, }6 C2 u6 G0 L
//----
. ]/ P1 k( ~  l/ `1 j9 I4 c3 n}" b7 s) G1 w- p& n

. p* \) S4 F, V; R( ^% |8 E2 K$ [//---计算交易手数的函数。) u2 I' Z& T2 q+ r, B
double LotsOptimized()8 l' Q9 n! `+ e. q4 C3 X
{
7 a  X6 f0 n4 ]$ z: k   if(AccountEquity()<300) return(1);  n: D* {4 v+ p3 E7 F6 c. \
   if(AccountEquity()>=300 && AccountEquity()<500) return(1);$ \+ G1 d4 I5 e
   if(AccountEquity()>=500 && AccountEquity()<1000) return(1);. Z) w5 ~/ j+ H% y& q+ m) Z
   if(AccountEquity()>=1000 && AccountEquity()<5000) return(1);& y7 c: b, z. d) t& s1 C
   if(AccountEquity()>=5000 && AccountEquity()<10000) return(1);
3 S9 s$ \! D) \+ J0 N# `   if(AccountEquity()>=10000) return(1);. }+ j, X- ]$ Z; {
}

TOP

上面贴出了我自己写的关于3条均线的EA了。

TOP