Код:
#property copyright "Copyright © 2007, Yury V. Reshetov ICQ:282715499 http://reshetov.xnet.uz/"
#property link "http://reshetov.xnet.uz/"
extern int x1 = 120;
extern int x2 = 172;
extern int x3 = 39;
extern int x4 = 172;
extern double tp = 50.0;
extern double sl = 50.0;
extern double lots = 0.1;
extern bool moneymanagement = FALSE;
extern int MagicNumber = 888;
int gi_124 = 0;
int gi_unused_128 = 3;
int init() {
return (0);
}
int deinit() {
return (0);
}
int start() {
double ld_12;
if (Time[0] == gi_124) return (0);
gi_124 = Time[0];
if (IsTradeAllowed()) {
RefreshRates();
gi_unused_128 = MarketInfo(Symbol(), MODE_SPREAD);
} else {
gi_124 = Time[1];
return (0);
}
int l_ticket_0 = -1;
int l_ord_total_4 = OrdersTotal();
for (int l_pos_8 = l_ord_total_4 - 1; l_pos_8 >= 0; l_pos_8--) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) return (0);
}
lots = getlots();
if (lots < 0.01) {
ld_12 = MarketInfo(Symbol(), MODE_SPREAD);
OrderSend(Symbol(), OP_BUYSTOP, 1, Ask + 1000.0 * (Point * ld_12), 3, 0, 0, "NeuroFilter", MagicNumber, Time[0] - 1 + 60 * Period(), Blue);
}
RefreshRates();
if (perceptron() > 0.0) {
l_ticket_0 = OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - sl * Point, Bid + tp * Point, "NeuroFilter", MagicNumber, 0, Blue);
if (l_ticket_0 < 0) {
Sleep(30000);
gi_124 = Time[1];
}
} else {
l_ticket_0 = OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Ask + sl * Point, Ask - tp * Point, "NeuroFilter", MagicNumber, 0, Red);
if (l_ticket_0 < 0) {
Sleep(30000);
gi_124 = Time[1];
}
}
return (0);
}
double getlots() {
double ld_0 = 1;
if (IsOptimization()) return (0.1);
if (!moneymanagement) return (lots);
int l_hist_total_8 = OrdersHistoryTotal();
double ld_12 = 0;
for (int l_pos_20 = l_hist_total_8 - 1; l_pos_20 >= 0; l_pos_20--) {
OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY || OrderType() == OP_SELL) ld_12 += OrderProfit() / OrderLots();
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUYSTOP) break;
}
double ld_ret_24 = NormalizeDouble(MathFloor(ld_12 / 200.0) / 10.0, 1) * ld_0 + 0.5;
double l_maxlot_32 = MarketInfo(Symbol(), MODE_MAXLOT);
if (ld_ret_24 > l_maxlot_32) ld_ret_24 = l_maxlot_32;
return (ld_ret_24);
}
double perceptron() {
double ld_0 = x1 - 100.0;
double ld_8 = x2 - 100.0;
double ld_16 = x3 - 100.0;
double ld_24 = x4 - 100.0;
double ld_32 = Close[0] - Open[7];
double ld_40 = Open[7] - Open[14];
double ld_48 = Open[14] - Open[21];
double ld_56 = Open[21] - Open[28];
return (ld_0 * ld_32 + ld_8 * ld_40 + ld_16 * ld_48 + ld_24 * ld_56);
}