修改过的.还有些需要知道你想做什么我才知道怎么改.
) d" M" n" i3 |
你原来的长周期过滤算法加载起来相当的耗费系统资源。
# u9 e3 I" L5 U$ y
2 ?& h! T* S- r) V: G* b2 s#property copyright "Copyright ?2007, guanhuaming."
5 ~) r0 s1 M, v k: R" V6 s#property link "
http://www.metaquotes.net"
- Q' P& a$ e2 s9 D6 y! V
#property indicator_chart_window
0 L4 w8 C" c/ ]& m, Q3 S
#property indicator_buffers 2
& s: J+ a: k- v#property indicator_color1 Red
. F: w4 H6 W. ?
#property indicator_color2 White
4 y) V# }$ F4 V B( `2 p//---- input parameters
5 O- M! o8 Z* M. M- Lextern int hourly_ema1 = 5;
1 C3 ^2 [9 f8 O& B1 e0 q% S
extern int hourly_ema2 = 10;
- Y+ j# h* ^1 C$ o% m' T7 T" [" C
extern int hourly_ema3 = 20;
0 ]4 h$ r1 ?. u7 W$ {7 ~' Rextern int hourly_ema4 = 60;
" m0 e3 }" W6 S
extern int hourly_ema5 = 120;
3 t8 b/ R# u& A) e; l9 T
extern int hourly_ema6 = 240;
- c3 j* ]/ S! o3 E* h! }5 n
extern int daily_ema1 = 60;
, U; o. @" A7 _) [- k9 T
extern int daily_ema2 = 120;
4 N: Y9 B; f$ P" `) @( o) C& V3 Nextern int daily_ema3 = 240;
) A: x* E! c: P: G# a7 U
extern int StopLossPoint = 30;
6 v" Z3 p5 K3 V( E# Z' n* ]- P( |2 H//---- indicator buffers
, c, ]& q; b: R8 c
double UpTrendBuffer[];
F6 w8 G% _$ \) E% \. gdouble DownTrendBuffer[];
: E. f6 o4 t1 @double CloseBuyBuffer[];
/ T6 ?0 s& e- B* K* C1 Z
double CloseSellBuffer[];
& q2 Q3 z1 q$ K/ z, o8 u
int init()
7 o) u! {; T! {3 Q9 F{
4 [" |, n0 |$ d6 m$ A SetIndexBuffer(0,UpTrendBuffer);
! W" G4 `$ E6 g
SetIndexBuffer(1,DownTrendBuffer);
/ p$ w C0 ^3 y* |/ z9 z$ h+ ?
SetIndexStyle(0,DRAW_ARROW);
! j$ a4 P' R2 `) X9 B1 Y
SetIndexStyle(1,DRAW_ARROW);
9 |3 i2 D! r$ X6 O5 Q SetIndexArrow(0,233);
+ y. m0 u4 t5 d5 W4 d' G4 A
SetIndexArrow(1,234);
& U4 @7 L+ y5 d3 @6 a- j$ b! d6 n SetIndexLabel(0,"Buy Signal");
T6 s- I+ `6 Z# S$ b
SetIndexLabel(1,"Sell Signal");
8 \) }" p1 a0 @" t7 A( k7 A string short_name = "Sell Or Buy Signal";
: {& u& r8 I/ D5 T& T( J' h% k IndicatorShortName(short_name);
; L: V' L8 T. l$ X1 ?3 K! \
IndicatorDigits(Digits+2);
7 F: D# H9 L5 k8 y7 q8 e return(0);
! Z$ F: x J; ?& V- y0 B- P* D0 H
}
) ]4 `+ h E9 F9 Fint start()
5 W6 R/ R l) Y% [; _# F$ \! v
{
& x; w u5 B, p: ~& S int dayBars=iBars(Symbol(),PERIOD_D1);
, ^, [, n# l7 u9 K
if(dayBars<=0) return (-1);
- K! q: r" N4 m3 C! k: S; U
+ C& ]- z- I& z& F) } int curPeriod=Period();
; D: S" z/ k/ j" q2 v if(curPeriod!=PERIOD_H1) return (-1);
! L/ A" y/ u: s: |% F 2 v4 T, k- V2 x9 V' E' {. u
int counted_bars=IndicatorCounted();
" u; ?# _( L( ^7 C1 }* e6 |' | if (counted_bars<0) return (-1);
6 }" @+ C" c$ d u) R1 {- h& M
if (counted_bars>0) counted_bars--;
) z" _# e5 D9 e3 e/ {$ h
int limit=Bars - counted_bars;
- X. W# l6 I" E" v ) o0 c7 f, S- ]/ B
double H1_ema1, H1_ema2, H1_ema3, H1_ema4, H1_ema5, H1_ema6;
* C# ?' t# G& _9 X) p. a
double D1_ema1, D1_ema2, D1_ema3;
$ t7 G8 t) F. U) B
for(int i=limit;i>=0;i--)
2 K/ h/ Z/ g. }& P+ Y {
\; t3 e0 I p H1_ema1 = iMA(Symbol(),PERIOD_H1, hourly_ema1, NULL, MODE_EMA, PRICE_CLOSE, i);
, H1 v8 W1 t1 X) ]' [
H1_ema2 = iMA(Symbol(),PERIOD_H1, hourly_ema2, NULL, MODE_EMA, PRICE_CLOSE, i);
+ t6 N0 N$ _4 f& }+ n' g6 e H1_ema3 = iMA(Symbol(),PERIOD_H1, hourly_ema3, NULL, MODE_EMA, PRICE_CLOSE, i);
6 I% M6 B) w( f- }+ C e
H1_ema4 = iMA(Symbol(),PERIOD_H1, hourly_ema4, NULL, MODE_EMA, PRICE_CLOSE, i);
! O- u& x* J) N/ g
H1_ema5 = iMA(Symbol(),PERIOD_H1, hourly_ema5, NULL, MODE_EMA, PRICE_CLOSE, i);
. z' ] T5 D2 Q. b
H1_ema6 = iMA(Symbol(),PERIOD_H1, hourly_ema6, NULL, MODE_EMA, PRICE_CLOSE, i);
6 R( |; z; S+ N7 A7 f/ b
8 Y# i" y& d1 Q$ E int daily_pos;
" y5 H4 S3 A* D O! r, s" [- | daily_pos=iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i));
. O5 e' o# I2 i* X; I2 p6 j D1_ema1 = iMA(Symbol(),PERIOD_D1, daily_ema1, NULL, MODE_EMA, PRICE_CLOSE, daily_pos);
: G( g% g& c j! ?8 p i D1_ema2 = iMA(Symbol(),PERIOD_D1, daily_ema2, NULL, MODE_EMA, PRICE_CLOSE, daily_pos);
2 _4 V8 Z4 b3 s2 m4 u$ L
D1_ema3 = iMA(Symbol(),PERIOD_D1, daily_ema3, NULL, MODE_EMA, PRICE_CLOSE, daily_pos);
' o2 ]( W5 S6 ?2 f/ m if(D1_ema1>D1_ema2 &&
: e8 U; y. E8 ]- W9 g# `6 s
iClose(Symbol(),PERIOD_D1,daily_pos)>=D1_ema1 &&
. y7 h; ]* w( L+ d0 \0 z- ? iClose(Symbol(),PERIOD_D1,daily_pos)>=D1_ema2 &&
2 r4 E6 S9 {& n
iClose(Symbol(),PERIOD_D1,daily_pos)>=D1_ema3)//日线图大势看涨
' V4 s* {1 N% w F' C
{
2 a, r5 u, T) j1 J7 ^- R8 P y
if (H1_ema1>=H1_ema2 && H1_ema2>=H1_ema3
' w2 d! n- V5 i- o' R" `$ \
&& Close
>=H1_ema4 && Close>=H1_ema5 && Close>=H1_ema6 7 `/ a# Q% [; H$ O
&& Close-H1_ema4<=StopLossPoint*Point)$ f* d# T+ Q7 s4 W8 V
{
9 q. m' G4 C7 k4 @8 G1 J0 S UpTrendBuffer=Low;
0 Z; S( X9 ~9 p" m) m' c' S } 4 b5 S5 F _% l5 Q
}
$ v% t8 N8 A) N0 o( B if(D1_ema1<D1_ema2 && 1 ~1 ?6 g% `; P" k: h5 w
iClose(Symbol(),PERIOD_D1,daily_pos)<=D1_ema1 && & H4 x( X8 ]6 G
iClose(Symbol(),PERIOD_D1,daily_pos)<=D1_ema2 &&! B6 z* i) } Y7 x, b
iClose(Symbol(),PERIOD_D1,daily_pos)<=D1_ema3)//日线图大势看跌
" J$ n# R/ `8 }1 B6 q! E/ y {" j2 }1 u& ^! n+ z1 s. A. o; N
if (H1_ema1<=H1_ema2 && H1_ema2<=H1_ema3 && : _+ o8 J7 V7 K; w- T
Close<=H1_ema4 && Close<=H1_ema5 && Close<=H1_ema6 && + | u. P7 i) G$ N' x7 h! v# I
H1_ema4-Close<=StopLossPoint*Point)
+ H" J( C, l7 {: {; B {
# J, R1 x, @: k DownTrendBuffer=High; / V `5 l9 C# Z4 z' T" o) z4 Z' ?
} F& n7 h4 e |) M6 b9 u2 X& v
5 w4 A/ c0 A1 |0 Y4 A
}5 Z, q; j& }+ v+ j S; P. n/ ~/ u
# O5 K% Q$ a( d' J* |; y$ j }/ t) y! w2 ?0 R! m
return(0);
0 {1 K8 ~+ F; ^' o}) Q Z. q) ]0 _
- g) q% q; N6 c! h" `+ z! c2 Q1 r
[ 本帖最后由 xfxyldj 于 2007-7-4 12:43 编辑 ]