bleh
[mqlkit.git] / golden3.mq4
blob6454115d78d879bda524d60ee51d4fefc6fc9724
1 //+------------------------------------------------------------------+\r
2 //|                                                     getvalue.mq4 |\r
3 //|                      Copyright © 2010, MetaQuotes Software Corp. |\r
4 //|                                        http://www.metaquotes.net |\r
5 //+------------------------------------------------------------------+\r
6 #property copyright "Copyright © 2010, MetaQuotes Software Corp."\r
7 #property link      "http://www.metaquotes.net"\r
8 \r
9 double alertTag;\r
10 double prevtime=0;\r
11 int cntalert=0;\r
12 double prev=0;\r
13 int prevminutet=0;\r
14 int active;\r
15 extern double lot=0.01;\r
16 double balance;\r
17 int cntbal=0;\r
18 extern int dis=100;\r
19 extern double profit_close = 10.0;\r
21 //+------------------------------------------------------------------+\r
22 //| expert initialization function                                   |\r
23 //+------------------------------------------------------------------+\r
24 int init()\r
25   {\r
26 //----\r
27    \r
28 //----\r
29    return(0);\r
30   }\r
31 //+------------------------------------------------------------------+\r
32 //| expert deinitialization function                                 |\r
33 //+------------------------------------------------------------------+\r
34 int deinit()\r
35   {\r
36 //----\r
37    \r
38 //----\r
39    return(0);\r
40   }\r
41 //+------------------------------------------------------------------+\r
42 //| expert start function                                            |\r
43 //+------------------------------------------------------------------+\r
44 int start()\r
45   {\r
46 //----\r
47 int  ticket, total,cntsell,cntbuy,first=0,second=0;\r
48 double profit2;\r
52 int spread = MarketInfo(Symbol(), MODE_SPREAD)+3;\r
54 //first Order   \r
55 int ordt=OrdersTotal();\r
56 if(CntAll(OP_SELLSTOP)==0 && CntAll(OP_BUYSTOP)==0){first=1;}else{first=0;}\r
57 if(CntAll(OP_SELLSTOP)+ CntAll(OP_BUYSTOP)==1){second=1;}else{second=0;}\r
61    if (alertTag!=Time[0] && first==1 && second==0)\r
62    {    \r
63         alertTag = Time[0];\r
64         if(CntAll(OP_SELLSTOP)==0 && CntAll(OP_BUYSTOP)==0)\r
65         {\r
66          OrderSend(Symbol(),OP_BUYSTOP,lot,Ask+dis*Point,3,Ask,0,"My order BuyStop",16384,0,Green);  \r
67          Sleep(1000);\r
68          RefreshRates();\r
69          OrderSend(Symbol(),OP_SELLSTOP,lot,Bid-dis*Point,3,Bid,0,"My order SellStop",16384,0,Red);  \r
70          Sleep(5000);  \r
71          RefreshRates();\r
72          first=0;\r
73         }\r
74    }\r
75    \r
76    if (alertTag!=Time[0] && second==1 && first==0)\r
77    {    \r
78         alertTag = Time[0];\r
79         if(CntAll(OP_SELLSTOP)==0 || CntAll(OP_BUYSTOP)==0)\r
80         {\r
81          if(OrdersTotal()>0)\r
82          {CloseOr(3);\r
83          CloseOr(4);    }\r
84         \r
85          for(int cnt=0;cnt<OrdersTotal();cnt++) {\r
86                Sleep(1000);\r
87                RefreshRates();\r
88                OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);\r
89                if(OrderType() == OP_SELL && Bid < OrderOpenPrice() - dis * Point) {\r
90                   OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss() - dis * Point, OrderTakeProfit(), 3, Red);\r
91                } else if(OrderType()==OP_BUY && Ask > OrderOpenPrice() + dis * Point) {\r
92                   OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss() + dis * Point, OrderTakeProfit(), 3, Green);\r
93                }\r
94          }\r
95          \r
96          Sleep(1000);  \r
97          RefreshRates();\r
98          OrderSend(Symbol(),OP_BUYSTOP,lot,Ask+dis*Point,3,Ask,0,"My order BuyStop",16384,0,Green);  \r
99          Sleep(1000);\r
100          OrderSend(Symbol(),OP_SELLSTOP,lot,Bid-dis*Point,3,Bid,0,"My order SellStop",16384,0,Red);  \r
101          second=0;\r
102         }\r
103    } \r
104   \r
105    \r
106    if (AccountProfit() > profit_close) CloseAll();\r
108                   \r
109    return(0);\r
110   }\r
111 //+------------------------------------------------------------------+\r
112 //+------------------------------------------------------------------+\r
113 int CloseOr(int a)\r
115 int i=0;\r
116 for(i=0;i<OrdersTotal();i++)\r
117    {\r
118     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);\r
119     Sleep(1000);\r
120     if(OrderType()==OP_BUY && a==1)\r
121      {\r
122       OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);\r
123       continue;\r
124      }\r
125     if(OrderType()==OP_SELL && a==2)\r
126      {\r
127       OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);\r
128       continue;\r
129      }\r
130     if(OrderType()==OP_BUYSTOP||OP_BUYLIMIT  && a==3)\r
131      {\r
132       OrderDelete(OrderTicket());\r
133       continue;\r
134      }\r
135     if(OrderType()==OP_SELLSTOP||OP_SELLLIMIT && a==4 ) \r
136       {\r
137        OrderDelete(OrderTicket());\r
138        continue;\r
139       }\r
140    }\r
141 return(0);\r
144  //-------------------------------------------------------+\r
145  //functions lots of functions\r
146  //-------------------------------------------------------+\r
147 //////////////////////////////////////////////////////////\r
148 int CntAll(int a)\r
150 int i=0;\r
151 int buy=0;\r
152 int sell=0;\r
153 int buystop=0;\r
154 int sellstop=0;\r
156 for(i=0;i<OrdersTotal();i++)\r
157    {\r
158     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);\r
159     if(OrderType()==OP_BUY && OrderSymbol()==Symbol())\r
160      {\r
161        buy++;\r
162      }\r
163     if(OrderType()==OP_SELL && OrderSymbol()==Symbol())\r
164      {\r
165        sell++;\r
166      }\r
167     if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())\r
168      {\r
169        buystop++;\r
170      }\r
171     if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())\r
172      {\r
173        sellstop++;\r
174      }\r
175    }\r
176 if(a==OP_BUY){return(buy);}\r
177 if(a==OP_SELL){return(sell);}\r
178 if(a==OP_BUYSTOP){return(buystop);}\r
179 if(a==OP_SELLSTOP){return(sellstop);}\r
182 ///////////////////////////////////////////////////\r
183 int gor(int a)\r
184 {  \r
185    int value=0;  \r
186    if(Close[a]>Open[a]){value=1;}\r
187    else if(Close[a]<Open[a]){value=-1;}\r
188    else if(Close[a]==Open[a]){value=0;}\r
189    return(value);\r
191 /////////////////////////////////////\r
192 int CloseAll()\r
194    int i=0;\r
195    for(i=0; i < OrdersTotal(); i++)\r
196    {\r
197     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);\r
198     Sleep(1000);\r
199     RefreshRates();\r
200     if(OrderType()==OP_BUY)\r
201      {\r
202       OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);\r
203       continue;\r
204      }\r
205     if(OrderType()==OP_SELL)\r
206      {\r
207       OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);\r
208       continue;\r
209      }\r
210     if(OrderType()==OP_BUYSTOP||OP_BUYLIMIT)\r
211      {\r
212       OrderDelete(OrderTicket());\r
213       continue;\r
214      }\r
215     if(OrderType()==OP_SELLSTOP||OP_SELLLIMIT) \r
216       {\r
217        OrderDelete(OrderTicket());\r
218        continue;\r
219       }\r
220    }\r
221    return(0);\r