Merge branch 'master' of git://repo.or.cz/mqlkit
[mqlkit.git] / indicators / ew1.mq4
blob6d75ac30865e566a7749b915ae44556839c3a982
1 #include <stdlib.mqh>\r
2 //+------------------------------------------------------------------+\r
3 //|                                                             .mq4 |\r
4 //|                                                                  |\r
5 //|                                                                  |\r
6 //|                                        Converted by Mql2Mq4 v0.7 |\r
7 //|                                            http://yousky.free.fr |\r
8 //|                                    Copyright © 2006, Yousky Soft |\r
9 //+------------------------------------------------------------------+\r
11 //#property copyright " CONVERT BY "ENG.AED AL NAIRAB" ."\r
12 #property link      " http://www.nairab.com/"\r
14 #property indicator_separate_window\r
15 #property indicator_color1 Blue\r
16 #property indicator_buffers 1\r
18 //+------------------------------------------------------------------+\r
19 //| Common External variables                                        |\r
20 //+------------------------------------------------------------------+\r
22 //+------------------------------------------------------------------+\r
23 //| External variables                                               |\r
24 //+------------------------------------------------------------------+\r
25 extern double triger = 0.70;\r
26 extern double back_test = 20;\r
28 //+------------------------------------------------------------------+\r
29 //| Special Convertion Functions                                     |\r
30 //+------------------------------------------------------------------+\r
32 int LastTradeTime;\r
33 double ExtHistoBuffer[];\r
35 void SetLoopCount(int loops)\r
36 {\r
37 }\r
39 void SetIndexValue(int shift, double value)\r
40 {\r
41   ExtHistoBuffer[shift] = value;\r
42 }\r
44 //+------------------------------------------------------------------+\r
45 //| End                                                              |\r
46 //+------------------------------------------------------------------+\r
48 //+------------------------------------------------------------------+\r
49 //| Initialization                                                   |\r
50 //+------------------------------------------------------------------+\r
52 int init()\r
53 {\r
54    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID);\r
55    SetIndexBuffer(0, ExtHistoBuffer);\r
56    SetIndexStyle(1, DRAW_LINE, STYLE_SOLID);\r
57    return(0);\r
58 }\r
59 int start()\r
60 {\r
61 //+------------------------------------------------------------------+\r
62 //| Local variables                                                  |\r
63 //+------------------------------------------------------------------+\r
64 int shift = 0;\r
65 int i = 0;\r
66 double llv = 0;\r
67 double hhv = 0;\r
68 double taiv = 0;\r
69 double trend = 0;\r
71 /*[[\r
72         Name := ew1\r
73         Author := CONVERT BY "ENG.AED AL NAIRAB" .\r
74         Link := http://www.nairab.com/\r
75         Separate Window := yes\r
76         First Color := Blue\r
77         First Draw Type := Line\r
78         First Symbol := 217\r
79         Use Second Data := no\r
80         Second Color := Red\r
81         Second Draw Type := Line\r
82         Second Symbol := 218\r
83 ]]*/\r
87 SetLoopCount(0);\r
88 // loop from first bar to current bar (with shift=0)\r
89 for(shift=900;shift>=0 ;shift--){ \r
90 llv=iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, shift)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, shift);\r
91 hhv=iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, shift)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, shift);\r
92 for(i=shift;i<=shift+back_test ;i++){ \r
93 llv=MathMin(iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, i)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, i),llv);\r
94 hhv=MathMax(iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, i)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, i),hhv);\r
95 \r
96 if( ( hhv == (iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, shift)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, shift))&& trend == 0)) trend=1;\r
97 if( ( llv == (iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, shift)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, shift))&& trend == 0)) trend=-1;\r
98 if( ( llv<0 && trend == -1 && (iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, shift)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, shift))>-1*triger*llv)) trend=1;\r
99 if( ( hhv>0 && trend == 1 && (iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_MEDIAN, shift)-iMA(NULL, 0, 35, 0, MODE_SMA, PRICE_MEDIAN, shift))<-1*triger*hhv)) trend=-1;\r
100         SetIndexValue(shift, trend);\r
102 \r
104   return(0);\r