//
#property copyright "Copyright � 2012, Finans Plus "
#property link "http://www.finans-plus.ru"
extern string EA_Name = "Aladdin 7 FX Pro";
extern string Creator = "Copyright � 2012, Finans Plus";
extern string Options1 = "��������";
extern bool UseStopLevels = TRUE;
extern bool IsMarketExecution = FALSE;
extern double MaxSpread = 2.0;
extern double OpenSlippage = 2.0;
extern double CloseSlippage = 3.0;
extern string Option2 = "��������� �����";
extern int TakeProfit = 26;
extern int StopLoss = 120;
extern int GoProfit = 1;
extern int GoProfitTriger = 10;
extern int MaxLossPoints = -65;
extern string Options3 = "��������� MM";
extern double FixedLot = 0.1;
extern double AutoMM = 0.0;
extern double AutoMM_Max = 20.0;
extern bool RecoveryMode = FALSE;
extern string Opt1 = "---If RecoveryMode = TRUE, setup---";
extern int MaxAnalizCount = 50;
extern double Risk = 25.0;
extern double MultiLotPercent = 1.1;
extern string Options4 = "��������� ���������";
extern double TrailingStop = 0.0;
extern double TrailingStep = 0.0;
extern double Utral = 10.0;
extern string Options5 = "������� �����������";
extern int iMA_Period = 75;
extern int iCCI_Period = 18;
extern int iATR_Period = 14;
extern int iWPR_Period = 11;
extern int maMethod = 2;
int g_applied_price_284 = PRICE_CLOSE;
extern string Profoptions6 = "��������� �����������";
extern bool Optimization = FALSE;
extern string _AddOpenFilters = "����";
extern int FilterATR = 6;
extern double iCCI_OpenFilter = 150.0;
extern string _OpenOrderFilters = "��������";
extern int iMA_Filter_Open_a = 15;
extern int iMA_Filter_Open_b = 39;
extern int iWPR_Filter_Open_a = -99;
extern int iWPR_Filter_Open_b = -95;
extern string _CloseOrderFilters = "�����";
extern int Price_Filter_Close = 14;
extern int iWPR_Filter_Close = -19;
extern string Options7 = "����������� ���������";
extern bool LongTrade = TRUE;
extern bool ShortTrade = TRUE;
extern bool No_Hedge_Trades = TRUE;
extern bool OneOrderInBarMode = TRUE;
int gi_384 = 5;
extern int MagicNumber = 88888;
bool gi_392 = TRUE;
bool gi_396 = TRUE;
bool gi_400 = TRUE;
extern string End = "*** Good Luck ***";
double gd_412;
double gd_420;
int gi_428;
double gd_432;
string gs_440;
int g_slippage_448;
int gi_unused_452;
int gi_unused_456 = 1;
int g_bars_460;
double gd_464;
bool gi_472;
bool gi_476;
string g_comment_480 = "Aladdin 7 FX Pro";
int gi_488 = 0;
double g_minlot_492 = 0.01;
double g_maxlot_500 = 0.01;
double g_lotstep_508 = 0.01;
int gi_516 = 100000;
double g_marginrequired_520 = 1000.0;
double gd_528 = 1.0;
double gd_536;
int gi_544;
int gi_548;
int gi_552;
int gi_556;
int gi_560;
int gi_564;
int g_color_568 = Blue;
int g_color_572 = Red;
int g_color_576 = DodgerBlue;
int g_color_580 = DeepPink;
void init() {
if (IsTesting() && (!IsVisualMode())) {
gi_400 = FALSE;
OneOrderInBarMode = FALSE;
}
if (!gi_400) Comment("");
gs_440 = Symbol();
if (Digits < 4) {
gd_420 = 0.01;
gi_428 = 2;
gd_432 = 0.001;
gd_412 = 1;
} else {
gd_420 = 0.0001;
gi_428 = 4;
gd_432 = 0.00001;
gd_412 = 10;
}
g_slippage_448 = OpenSlippage * MathPow(10, Digits - gi_428);
gi_unused_452 = CloseSlippage * MathPow(10, Digits - gi_428);
gd_464 = NormalizeDouble(MaxSpread * gd_420, gi_428 + 1);
if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
if (ObjectFind("LV") >= 0) ObjectDelete("LV");
g_minlot_492 = MarketInfo(Symbol(), MODE_MINLOT);
g_maxlot_500 = MarketInfo(Symbol(), MODE_MAXLOT);
gi_516 = MarketInfo(Symbol(), MODE_LOTSIZE);
g_lotstep_508 = MarketInfo(Symbol(), MODE_LOTSTEP);
g_marginrequired_520 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
double ld_0 = 0;
if (StringSubstr(AccountCurrency(), 0, 3) == "JPY") {
ld_0 = MarketInfo("USDJPY" + StringSubstr(Symbol(), 6), MODE_BID);
if (ld_0 > 0.1) gd_528 = ld_0;
else gd_528 = 84;
}
if (StringSubstr(AccountCurrency(), 0, 3) == "GBP") {
ld_0 = MarketInfo("GBPUSD" + StringSubstr(Symbol(), 6), MODE_BID);
if (ld_0 > 0.1) gd_528 = 1 / ld_0;
else gd_528 = 0.6211180124;
}
if (StringSubstr(AccountCurrency(), 0, 3) == "EUR") {
ld_0 = MarketInfo("EURUSD" + StringSubstr(Symbol(), 6), MODE_BID);
if (ld_0 > 0.1) gd_528 = 1 / ld_0;
else gd_528 = 0.7042253521;
}
gi_544 = iWPR_Filter_Open_a;
gi_548 = iWPR_Filter_Open_b;
gi_552 = (-100) - iWPR_Filter_Open_a;
gi_556 = (-100) - iWPR_Filter_Open_b;
gi_560 = iWPR_Filter_Close;
gi_564 = (-100) - iWPR_Filter_Close;
}
void deinit() {
if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
if (ObjectFind("LV") >= 0) ObjectDelete("LV");
}
void start() {
int li_0 = 0;
if (!IsDemo() && !IsTradeAllowed()) {
li_0 = 1;
Comment("\n", "������ ������ Aladdin 7 FX ��� ����-������, ��� �������� ������ �������� ���� http://finans-plus.ru. ");
return;
}
li_0 = 2;
if (gi_400) f0_8();
f0_5();
f0_18();
if (AutoMM > 0.0 && (!RecoveryMode)) gd_536 = MathMax(g_minlot_492, MathMin(g_maxlot_500, MathCeil(MathMin(AutoMM_Max, AutoMM) / gd_528 / 100.0 * AccountFreeMargin() / g_lotstep_508 / (gi_516 / 100)) * g_lotstep_508));
if (AutoMM > 0.0 && RecoveryMode) gd_536 = f0_1();
if (AutoMM == 0.0) gd_536 = FixedLot;
if (iBars(Symbol(), PERIOD_M15) < iMA_Period || iBars(Symbol(), PERIOD_M15) < iWPR_Period || iBars(Symbol(), PERIOD_M15) < iATR_Period || iBars(Symbol(), PERIOD_M15) < iCCI_Period) {
Print("������������ ������������ ������ ��� ��������");
return;
}
if (DayOfWeek() == 1 && iVolume(NULL, PERIOD_D1, 0) < 5.0) return;
if (!IsTesting() && IsStopped()) return;
if (!IsTesting() && !IsTradeAllowed()) return;
if (!IsTesting() && IsTradeContextBusy()) return;
HideTestIndicators(TRUE);
if (li_0 == 2) f0_11();
}
void f0_11() {
bool li_0 = TRUE;
bool li_4 = TRUE;
if (No_Hedge_Trades == TRUE && f0_16(OP_SELL)) li_0 = FALSE;
if (No_Hedge_Trades == TRUE && f0_16(OP_BUY)) li_4 = FALSE;
if (f0_14()) {
if (f0_7() && (!f0_16(OP_BUY)) && li_0 && f0_15(OP_BUY) && LongTrade) {
if (f0_0()) {
if ((!gi_472) && gi_396) {
Print("�������� ������ �� ������� �������� ��-�� �������� ������.");
Print("������� ����� = ", DoubleToStr((Ask - Bid) / gd_420, 1), ", MaxSpread = ", DoubleToStr(MaxSpread, 1));
Print("������� Aladdin7FX ����� ��������� �����, ����� ����� ������ ����������.");
}
gi_472 = TRUE;
} else {
gi_472 = FALSE;
f0_6(OP_BUY);
}
}
if (f0_9() && (!f0_16(OP_SELL)) && li_4 && f0_15(OP_SELL) && ShortTrade) {
if (f0_0()) {
if ((!gi_476) && gi_396) {
Print("�������� ������ �� ������� �������� ��-�� �������� ������.");
Print("������� ����� = ", DoubleToStr((Ask - Bid) / gd_420, 1), ", MaxSpread = ", DoubleToStr(MaxSpread, 1));
Print("������� Aladdin7FX ����� ��������� �����, ����� ����� ������ ����������.");
}
gi_476 = TRUE;
} else {
gi_476 = FALSE;
f0_6(OP_SELL);
}
}
}
}
void f0_6(int a_cmd_0) {
int li_4;
color color_8;
string ls_unused_20;
double price_28;
double price_52;
double price_60;
int ticket_12 = 0;
int li_36 = gi_384;
int error_40 = 0;
double price_44 = 0;
double ld_68 = NormalizeDouble(TakeProfit * gd_420, gi_428);
double ld_76 = NormalizeDouble(StopLoss * gd_420, gi_428);
if (gi_488 > 0) {
MathSrand(TimeLocal());
li_4 = MathRand() % gi_488;
if (gi_392) Print("DelayRandomiser: �������� ", li_4, " ������.");
Sleep(1000 * li_4);
}
double ld_84 = gd_536;
if (AccountFreeMarginCheck(gs_440, a_cmd_0, ld_84) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
if (gi_396) {
Print("��� �������� ������ ������������ ��������� �����.");
Comment("��� �������� ������ ������������ ��������� �����.");
}
} else {
RefreshRates();
if (a_cmd_0 == OP_BUY) {
price_28 = NormalizeDouble(Ask, Digits);
color_8 = g_color_568;
if (UseStopLevels) {
price_52 = NormalizeDouble(price_28 + ld_68, Digits);
price_60 = NormalizeDouble(price_28 - ld_76, Digits);
} else {
price_52 = 0;
price_60 = 0;
}
} else {
price_28 = NormalizeDouble(Bid, Digits);
color_8 = g_color_572;
if (UseStopLevels) {
price_52 = NormalizeDouble(price_28 - ld_68, Digits);
price_60 = NormalizeDouble(price_28 + ld_76, Digits);
} else {
price_52 = 0;
price_60 = 0;
}
}
if (IsMarketExecution && UseStopLevels) {
ticket_12 = OrderSend(gs_440, a_cmd_0, ld_84, price_28, g_slippage_448, 0, 0, g_comment_480, MagicNumber, 0, color_8);
if (ticket_12 > 0) {
f0_17(gs_440, ticket_12, OrderOpenPrice(), price_60, price_52, Black);
return;
}
} else {
ticket_12 = OrderSend(gs_440, a_cmd_0, ld_84, price_28, g_slippage_448, price_60, price_52, g_comment_480, MagicNumber, 0, color_8);
if (ticket_12 > 0) return;
}
if (a_cmd_0 != OP_BUY && a_cmd_0 != OP_SELL) return;
error_40 = GetLastError();
if (ticket_12 < 0 && error_40 == 135/* PRICE_CHANGED */ || error_40 == 138/* REQUOTE */ || error_40 == 146/* TRADE_CONTEXT_BUSY */) {
Print("Requote. Error" + error_40 + ". Ticket: " + ticket_12);
price_44 = price_28;
for (int li_92 = 1; li_92 <= li_36; li_92++) {
RefreshRates();
if (a_cmd_0 == OP_BUY) {
if (Ask <= price_44) {
if (IsMarketExecution && UseStopLevels) {
ticket_12 = OrderSend(gs_440, a_cmd_0, ld_84, NormalizeDouble(Ask, Digits), g_slippage_448, 0, 0, g_comment_480, MagicNumber, 0, color_8);
if (ticket_12 > 0) {
f0_17(gs_440, ticket_12, OrderOpenPrice(), price_60, price_52, Black);
return;
}
} else {
ticket_12 = OrderSend(gs_440, a_cmd_0, ld_84, NormalizeDouble(Ask, Digits), g_slippage_448, price_60, price_52, g_comment_480, MagicNumber, 0, color_8);
if (ticket_12 > 0) break;
}
if (GetLastError() != 135/* PRICE_CHANGED */ && GetLastError() != 138/* REQUOTE */ && GetLastError() != 146/* TRADE_CONTEXT_BUSY */) break;
Print("Requote. " + "Attempt " + ((li_92 + 1)));
continue;
}
}
if (a_cmd_0 == OP_SELL) {
if (Bid >= price_44) {
if (IsMarketExecution && UseStopLevels) {
ticket_12 = OrderSend(gs_440, a_cmd_0, ld_84, NormalizeDouble(Bid, Digits), g_slippage_448, 0, 0, g_comment_480, MagicNumber, 0, color_8);
if (ticket_12 > 0) {
f0_17(gs_440, ticket_12, OrderOpenPrice(), price_60, price_52, Black);
return;
}
} else {
ticket_12 = OrderSend(gs_440, a_cmd_0, ld_84, NormalizeDouble(Bid, Digits), g_slippage_448, price_60, price_52, g_comment_480, MagicNumber, 0, color_8);
if (ticket_12 > 0) break;
}
if (GetLastError() != 135/* PRICE_CHANGED */ && GetLastError() != 138/* REQUOTE */ && GetLastError() != 146/* TRADE_CONTEXT_BUSY */) break;
Print("Requote. " + "Attempt " + ((ticket_12 + 1)));
}
}
}
}
}
}
void f0_18() {
int li_0 = OrdersTotal() - 1;
int error_4 = GetLastError();
for (int pos_8 = li_0; pos_8 >= 0; pos_8--) {
if (!OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES)) {
if (gi_396) Print("��������� ������ �� ����� ������� ������. �������: ", f0_13(error_4));
} else {
if (OrderType() == OP_BUY && GoProfitTriger > 0) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == gs_440) {
if (Bid - OrderOpenPrice() > GoProfitTriger * gd_420 && MathAbs(OrderOpenPrice() + GoProfit * gd_420 - OrderStopLoss()) >= Point && NormalizeDouble(OrderOpenPrice() +
GoProfit * gd_420, Digits) >= OrderStopLoss() + Point) f0_17(gs_440, OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + GoProfit * gd_420, Digits), OrderTakeProfit(), Blue);
}
}
if (OrderType() == OP_SELL && GoProfitTriger > 0) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == gs_440) {
if (OrderOpenPrice() - Ask > GoProfitTriger * gd_420 && MathAbs(OrderOpenPrice() - GoProfit * gd_420 - OrderStopLoss()) >= Point && NormalizeDouble(OrderOpenPrice() - GoProfit * gd_420,
Digits) <= OrderStopLoss() - Point) f0_17(gs_440, OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - GoProfit * gd_420, Digits), OrderTakeProfit(), Red);
}
}
if (TrailingStop > 1.0 && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL && OrderOpenPrice() - Ask > Utral * Point * gd_412) {
if (TrailingStop > 0.0 && TrailingStop > 1.0) {
if (OrderOpenPrice() - Ask > TrailingStop * Point * gd_412)
if (OrderStopLoss() - Point * TrailingStep * gd_412 > Ask + Point * TrailingStop * gd_412 && Ask + Point * TrailingStop * gd_412 <= OrderStopLoss() - Point) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop * gd_412, OrderTakeProfit(), 0, CLR_NONE);
}
} else {
if (OrderType() == OP_BUY && Bid - OrderOpenPrice() > Utral * Point * gd_412) {
if (TrailingStop > 0.0 && TrailingStop > 1.0) {
if (Bid - OrderOpenPrice() > TrailingStop * Point * gd_412)
if (OrderStopLoss() + Point * TrailingStep * gd_412 < Bid - Point * TrailingStop * gd_412 && Bid - Point * TrailingStop * gd_412 >= OrderStopLoss() + Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop * gd_412, OrderTakeProfit(), 0, CLR_NONE);
}
}
}
}
if (TrailingStop < 1.0 && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL && TrailingStop < 1.0) {
if (TrailingStop <= 0.0) continue;
if (OrderOpenPrice() - Ask <= Utral * Point * gd_412) continue;
if (!(OrderStopLoss() - Point * TrailingStep * gd_412 > Ask + (OrderOpenPrice() - Ask) * TrailingStop && Ask + (OrderOpenPrice() - Ask) * TrailingStop <= OrderStopLoss() - Point)) continue;
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + (OrderOpenPrice() - Ask) * TrailingStop, OrderTakeProfit(), 0, CLR_NONE);
continue;
}
if (OrderType() == OP_BUY) {
if (TrailingStop > 0.0 && TrailingStop < 1.0) {
if (Bid - OrderOpenPrice() > Utral * Point * gd_412) {
if (OrderStopLoss() + Point * TrailingStep * gd_412 < Bid - (Bid - OrderOpenPrice()) * TrailingStop && Bid - (Bid - OrderOpenPrice()) * TrailingStop >= OrderStopLoss() +
Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - (Bid - OrderOpenPrice()) * TrailingStop, OrderTakeProfit(), 0, CLR_NONE);
}
}
}
}
}
}
}
void f0_17(string a_symbol_0 = "", int a_ticket_8 = 0, double a_order_open_price_12 = -1.0, double a_order_stoploss_20 = 0.0, double a_order_takeprofit_28 = 0.0, color a_color_36 = -1) {
bool bool_44;
int error_52;
int ticket_40 = OrderTicket();
if (a_symbol_0 == "") a_symbol_0 = Symbol();
int li_60 = 5;
int li_64 = 10;
if (a_order_open_price_12 <= 0.0) a_order_open_price_12 = OrderOpenPrice();
if (a_order_stoploss_20 < 0.0) a_order_stoploss_20 = OrderStopLoss();
if (a_order_takeprofit_28 < 0.0) a_order_takeprofit_28 = OrderTakeProfit();
int digits_48 = MarketInfo(a_symbol_0, MODE_DIGITS);
a_order_open_price_12 = NormalizeDouble(a_order_open_price_12, digits_48);
a_order_stoploss_20 = NormalizeDouble(a_order_stoploss_20, digits_48);
a_order_takeprofit_28 = NormalizeDouble(a_order_takeprofit_28, digits_48);
if (a_order_open_price_12 != OrderOpenPrice() || a_order_stoploss_20 != OrderStopLoss() || a_order_takeprofit_28 != OrderTakeProfit()) {
for (int li_56 = 1; li_56 <= li_64; li_56++) {
if (!IsTesting() && (!IsExpertEnabled()) || IsStopped()) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
bool_44 = OrderModify(a_ticket_8, a_order_open_price_12, a_order_stoploss_20, a_order_takeprofit_28, 0, a_color_36);
if (bool_44 == TRUE) break;
error_52 = GetLastError();
if (gi_396) Print("��������� ������ �� ����� ����������� ������ (", f0_10(OrderType()), ",", ticket_40, "). �������: ", f0_13(error_52), ". ������� �", li_56);
Sleep(1000 * li_60);
}
}
}
void f0_5() {
int li_0 = OrdersTotal() - 1;
int error_4 = GetLastError();
for (int pos_8 = li_0; pos_8 >= 0; pos_8--) {
if (!OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES)) {
if (gi_396) Print("��������� ������ �� ����� ������� ������. �������: ", f0_13(error_4));
} else {
if (OrderType() == OP_BUY) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == gs_440)
if (Bid >= OrderOpenPrice() + TakeProfit * gd_420 || Bid <= OrderOpenPrice() - StopLoss * gd_420 || f0_2(OrderOpenPrice(), f0_3())) f0_12(OrderTicket(), Bid);
}
if (OrderType() == OP_SELL) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == gs_440)
if (Ask <= OrderOpenPrice() - TakeProfit * gd_420 || Ask >= OrderOpenPrice() + StopLoss * gd_420 || f0_4(OrderOpenPrice(), f0_3())) f0_12(OrderTicket(), Ask);
}
}
}
}
void f0_12(int a_ticket_0, double ad_4) {
double price_12;
int slippage_20;
color color_36;
double ld_24 = ad_4;
int li_32 = gi_384;
OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
int cmd_40 = OrderType();
if (cmd_40 == OP_BUY) {
price_12 = NormalizeDouble(Bid, Digits);
color_36 = g_color_576;
}
if (cmd_40 == OP_SELL) {
price_12 = NormalizeDouble(Ask, Digits);
color_36 = g_color_580;
}
if (MathAbs(OrderTakeProfit() - price_12) > MarketInfo(Symbol(), MODE_FREEZELEVEL) * Point) {
if (MathAbs(OrderStopLoss() - price_12) > MarketInfo(Symbol(), MODE_FREEZELEVEL) * Point) {
if (OrderClose(a_ticket_0, OrderLots(), price_12, CloseSlippage, color_36) == FALSE) {
if (GetLastError() != 135/* PRICE_CHANGED */ && GetLastError() != 138/* REQUOTE */ && GetLastError() != 146/* TRADE_CONTEXT_BUSY */) return;
Print("Requote");
for (int li_44 = 1; li_44 <= li_32; li_44++) {
RefreshRates();
if (cmd_40 == OP_BUY) {
slippage_20 = MathRound((Bid - ld_24) / gd_420);
if (Bid >= ld_24) {
Print("Closing order. Attempt " + ((li_44 + 1)));
if (OrderClose(a_ticket_0, OrderLots(), NormalizeDouble(Bid, Digits), slippage_20, color_36)) break;
if (!((GetLastError() != 135/* PRICE_CHANGED */ && GetLastError() != 138/* REQUOTE */ && GetLastError() != 146/* TRADE_CONTEXT_BUSY */))) continue;
return;
}
}
if (cmd_40 == OP_SELL) {
slippage_20 = MathRound((ld_24 - Ask) / gd_420);
if (ld_24 >= Ask) {
Print("Closing order. Attempt " + ((li_44 + 1)));
if (OrderClose(a_ticket_0, OrderLots(), NormalizeDouble(Ask, Digits), slippage_20, color_36)) break;
if (GetLastError() != 135/* PRICE_CHANGED */ && GetLastError() != 138/* REQUOTE */ && GetLastError() != 146/* TRADE_CONTEXT_BUSY */) break;
}
}
}
}
}
}
}
int f0_7() {
bool li_ret_0 = FALSE;
bool li_4 = FALSE;
bool li_8 = FALSE;
bool li_12 = FALSE;
double iclose_16 = iClose(NULL, PERIOD_M15, 1);
double ima_24 = iMA(NULL, PERIOD_M15, iMA_Period, 0, maMethod, g_applied_price_284, 1);
double iwpr_32 = iWPR(NULL, PERIOD_M15, iWPR_Period, 1);
double iatr_40 = iATR(NULL, PERIOD_M15, iATR_Period, 1);
double icci_48 = iCCI(NULL, PERIOD_M15, iCCI_Period, PRICE_TYPICAL, 1);
double ld_56 = NormalizeDouble(iMA_Filter_Open_a * gd_420, gi_428);
double ld_64 = NormalizeDouble(iMA_Filter_Open_b * gd_420, gi_428);
double bid_72 = Bid;
if (iatr_40 <= FilterATR * gd_420) return (0);
if (iclose_16 - ima_24 > ld_56 && iclose_16 - bid_72 >= (-gd_432) && gi_544 > iwpr_32) li_4 = TRUE;
else li_4 = FALSE;
if (iclose_16 - ima_24 > ld_64 && iclose_16 - bid_72 >= (-gd_432) && (-iCCI_OpenFilter) > icci_48) li_8 = TRUE;
else li_8 = FALSE;
if (iclose_16 - ima_24 > ld_64 && iclose_16 - bid_72 >= (-gd_432) && gi_548 > iwpr_32) li_12 = TRUE;
else li_12 = FALSE;
if (li_4 == TRUE || li_8 == TRUE || li_12 == TRUE) li_ret_0 = TRUE;
else li_ret_0 = FALSE;
return (li_ret_0);
}
int f0_9() {
bool li_ret_0 = FALSE;
bool li_4 = FALSE;
bool li_8 = FALSE;
bool li_12 = FALSE;
double iclose_16 = iClose(NULL, PERIOD_M15, 1);
double ima_24 = iMA(NULL, PERIOD_M15, iMA_Period, 0, maMethod, g_applied_price_284, 1);
double iwpr_32 = iWPR(NULL, PERIOD_M15, iWPR_Period, 1);
double iatr_40 = iATR(NULL, PERIOD_M15, iATR_Period, 1);
double icci_48 = iCCI(NULL, PERIOD_M15, iCCI_Period, PRICE_TYPICAL, 1);
double ld_56 = NormalizeDouble(iMA_Filter_Open_a * gd_420, gi_428);
double ld_64 = NormalizeDouble(iMA_Filter_Open_b * gd_420, gi_428);
double bid_72 = Bid;
if (iatr_40 <= FilterATR * gd_420) return (0);
if (ima_24 - iclose_16 > ld_56 && iclose_16 - bid_72 <= gd_432 && iwpr_32 > gi_552) li_4 = TRUE;
else li_4 = FALSE;
if (ima_24 - iclose_16 > ld_64 && iclose_16 - bid_72 <= gd_432 && icci_48 > iCCI_OpenFilter) li_8 = TRUE;
else li_8 = FALSE;
if (ima_24 - iclose_16 > ld_64 && iclose_16 - bid_72 <= gd_432 && iwpr_32 > gi_556) li_12 = TRUE;
else li_12 = FALSE;
if (li_4 == TRUE || li_8 == TRUE || li_12 == TRUE) li_ret_0 = TRUE;
else li_ret_0 = FALSE;
return (li_ret_0);
}
int f0_2(double ad_0, int ai_8) {
bool li_ret_12 = FALSE;
bool li_16 = FALSE;
bool li_20 = FALSE;
double iwpr_24 = iWPR(NULL, PERIOD_M15, iWPR_Period, 1);
double iclose_32 = iClose(NULL, PERIOD_M15, 1);
double iopen_40 = iOpen(NULL, PERIOD_M1, 1);
double iclose_48 = iClose(NULL, PERIOD_M1, 1);
double ld_56 = NormalizeDouble((-MaxLossPoints) * gd_420, gi_428);
double ld_64 = NormalizeDouble(Price_Filter_Close * gd_420, gi_428);
double bid_72 = Bid;
if (ad_0 - bid_72 <= ld_56 && iclose_32 - bid_72 <= gd_432 && iwpr_24 > gi_560 && ai_8 == 1) li_16 = TRUE;
else li_16 = FALSE;
if (iopen_40 > iclose_48 && bid_72 - ad_0 >= ld_64 && ai_8 == 1) li_20 = TRUE;
else li_20 = FALSE;
if (li_16 == TRUE || li_20 == TRUE) li_ret_12 = TRUE;
else li_ret_12 = FALSE;
return (li_ret_12);
}
int f0_4(double ad_0, int ai_8) {
bool li_ret_12 = FALSE;
bool li_16 = FALSE;
bool li_20 = FALSE;
double iwpr_24 = iWPR(NULL, PERIOD_M15, iWPR_Period, 1);
double iclose_32 = iClose(NULL, PERIOD_M15, 1);
double iopen_40 = iOpen(NULL, PERIOD_M1, 1);
double iclose_48 = iClose(NULL, PERIOD_M1, 1);
double ld_56 = NormalizeDouble((-MaxLossPoints) * gd_420, gi_428);
double ld_64 = NormalizeDouble(Price_Filter_Close * gd_420, gi_428);
double bid_72 = Bid;
double ask_80 = Ask;
if (ask_80 - ad_0 <= ld_56 && iclose_32 - bid_72 >= (-gd_432) && iwpr_24 < gi_564 && ai_8 == 1) li_16 = TRUE;
else li_16 = FALSE;
if (iopen_40 < iclose_48 && ad_0 - ask_80 >= ld_64 && ai_8 == 1) li_20 = TRUE;
else li_20 = FALSE;
if (li_16 == TRUE || li_20 == TRUE) li_ret_12 = TRUE;
else li_ret_12 = FALSE;
return (li_ret_12);
}
double f0_1() {
double ld_0;
int count_8;
double ld_12;
int li_20;
double ld_24;
int li_32;
double ld_36;
int li_44;
double ld_48 = 1;
if (MultiLotPercent > 0.0 && AutoMM > 0.0) {
ld_0 = 0;
count_8 = 0;
ld_12 = 0;
li_20 = 0;
ld_24 = 0;
li_32 = 0;
for (int pos_56 = OrdersHistoryTotal() - 1; pos_56 >= 0; pos_56--) {
if (OrderSelect(pos_56, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
count_8++;
ld_0 += OrderProfit();
if (ld_0 > ld_24) {
ld_24 = ld_0;
li_32 = count_8;
}
if (ld_0 < ld_12) {
ld_12 = ld_0;
li_20 = count_8;
}
if (count_8 >= MaxAnalizCount) break;
}
}
}
if (li_32 <= li_20) ld_48 = MathPow(MultiLotPercent, li_20);
else {
ld_0 = ld_24;
count_8 = li_32;
ld_36 = ld_24;
li_44 = li_32;
for (pos_56 = OrdersHistoryTotal() - li_32 - 1; pos_56 >= 0; pos_56--) {
if (OrderSelect(pos_56, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (count_8 >= MaxAnalizCount) break;
count_8++;
ld_0 += OrderProfit();
if (ld_0 < ld_36) {
ld_36 = ld_0;
li_44 = count_8;
}
}
}
}
if (li_44 == li_32 || ld_36 == ld_24) ld_48 = MathPow(MultiLotPercent, li_20);
else {
if (MathAbs(ld_12 - ld_24) / MathAbs(ld_36 - ld_24) >= (Risk + 100.0) / 100.0) ld_48 = MathPow(MultiLotPercent, li_20);
else ld_48 = MathPow(MultiLotPercent, li_44);
}
}
}
for (double ld_ret_60 = MathMax(g_minlot_492, MathMin(g_maxlot_500, MathCeil(MathMin(AutoMM_Max, ld_48 * AutoMM) / 100.0 * AccountFreeMargin() / g_lotstep_508 / (gi_516 / 100)) * g_lotstep_508)); ld_ret_60 >= 2.0 * g_minlot_492 &&
1.05 * (ld_ret_60 * g_marginrequired_520) >= AccountFreeMargin(); ld_ret_60 -= g_minlot_492) {
}
return (ld_ret_60);
}
bool f0_0() {
RefreshRates();
if (NormalizeDouble(Ask - Bid, Digits) > gd_464) return (TRUE);
return (FALSE);
}
int f0_3() {
bool li_ret_0 = FALSE;
int li_4 = OrdersTotal() - 1;
for (int pos_8 = li_4; pos_8 >= 0; pos_8--) {
if (OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber() == MagicNumber) {
if (OrderSymbol() == gs_440)
if (OrderType() <= OP_SELL) li_ret_0 = TRUE;
}
}
}
return (li_ret_0);
}
int f0_15(int a_cmd_0 = -1) {
if (OneOrderInBarMode == FALSE) return (1);
int timeframe_4 = Period();
for (int hist_total_8 = OrdersHistoryTotal(); hist_total_8 >= 0; hist_total_8--) {
if (OrderSelect(hist_total_8, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == gs_440 && OrderType() == a_cmd_0 && OrderMagicNumber() == MagicNumber)
if (OrderCloseTime() > iTime(gs_440, timeframe_4, 0)) return (0);
}
}
return (1);
}
int f0_16(int a_cmd_0) {
int order_total_4 = OrdersTotal();
for (int pos_8 = order_total_4 - 1; pos_8 >= 0; pos_8--) {
if (OrderSelect(pos_8, SELECT_BY_POS) == TRUE)
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == a_cmd_0) return (1);
}
return (0);
}
bool f0_14() {
if (Optimization == FALSE) return (1);
if (g_bars_460 < Bars) {
g_bars_460 = Bars;
return (FALSE);
}
return (TRUE);
}
void f0_8() {
string ls_0 = "";
int li_unused_8 = 1;
ls_0 = ls_0
+ "\n Aladdin 7 FX Pro"
+ "\n "
+ "\n Account Number: " + AccountNumber() + ""
//+ "\n Demo-account, �������� �������� ��� ����� �� ����� �����"
+ "\n -----------------------------------------------"
+ "\n TakeProfit = " + TakeProfit + " pips"
+ "\n StopLoss = " + StopLoss + " pips"
+ "\n -----------------------------------------------"
+ "\n Broker Time: " + TimeToStr(TimeCurrent()) + ""
+ "\n Spread = " + DoubleToStr((Ask - Bid) / gd_420, 1) + " pips";
if (NormalizeDouble(Ask - Bid, Digits) > gd_464) ls_0 = ls_0 + " - �������";
else ls_0 = ls_0 + " - ����������";
ls_0 = ls_0
+ "\n -----------------------------------------------";
if (AutoMM > 0.0) {
ls_0 = ls_0
+ "\n AutoMM - ������������"
+ "\n Risk = " + DoubleToStr(AutoMM, 1) + "%";
}
ls_0 = ls_0
+ "\n Lot = " + DoubleToStr(gd_536, 2);
ls_0 = ls_0
+ "\n -----------------------------------------------";
if (UseStopLevels) {
ls_0 = ls_0
+ "\n Stop Levels - ������������";
} else {
ls_0 = ls_0
+ "\n Stop Levels - �� ������������";
}
if (RecoveryMode) {
ls_0 = ls_0
+ "\n Recovery Mode - ������������";
} else {
ls_0 = ls_0
+ "\n Recovery Mode - �� ������������";
}
ls_0 = ls_0
+ "\n -----------------------------------------------";
ls_0 = ls_0
+ "\n Copyright � 2011, Finans Plus Company";
ls_0 = ls_0
+ "\n http://finans-plus.ru";
Comment(ls_0);
}
string f0_10(int ai_0) {
switch (ai_0) {
case 0:
return ("Buy");
case 1:
return ("Sell");
case 2:
return ("Buy Limit");
case 3:
return ("Sell Limit");
case 4:
return ("Buy Stop");
case 5:
return ("Sell Stop");
}
return ("Unknown Operation");
}
string f0_13(int ai_0) {
string ls_ret_4;
switch (ai_0) {
case 0:
case 1:
ls_ret_4 = "��� ������, �� ��������� ����������";
break;
case 2:
ls_ret_4 = "����� ������";
break;
case 3:
ls_ret_4 = "������������ ���������";
break;
case 4:
ls_ret_4 = "�������� ������ �����";
break;
case 5:
ls_ret_4 = "������ ������ ����������� ���������";
break;
case 6:
ls_ret_4 = "��� ����� � �������� ��������";
break;
case 7:
ls_ret_4 = "������������ ����";
break;
case 8:
ls_ret_4 = "������� ������ �������";
break;
case 9:
ls_ret_4 = "������������ �������� ���������� ���������������� �������";
break;
case 64:
ls_ret_4 = "���� ������������";
break;
case 65:
ls_ret_4 = "������������ ����� �����";
break;
case 128:
ls_ret_4 = "����� ���� �������� ���������� ������";
break;
case 129:
ls_ret_4 = "������������ ����";
break;
case 130:
ls_ret_4 = "������������ �����";
break;
case 131:
ls_ret_4 = "������������ �����";
break;
case 132:
ls_ret_4 = "����� ������";
break;
case 133:
ls_ret_4 = "�������� ���������";
break;
case 134:
ls_ret_4 = "������������ ����� ��� ���������� ��������";
break;
case 135:
ls_ret_4 = "���� ����������";
break;
case 136:
ls_ret_4 = "��� ���";
break;
case 137:
ls_ret_4 = "������ �����";
break;
case 138:
ls_ret_4 = "����� ���� - ������";
break;
case 139:
ls_ret_4 = "����� ������������ � ��� ��������������";
break;
case 140:
ls_ret_4 = "��������� ������ �������";
break;
case 141:
ls_ret_4 = "������� ����� ��������";
break;
case 145:
ls_ret_4 = "����������� ���������, ��� ��� ����� ������� ������ � �����";
break;
case 146:
ls_ret_4 = "���������� �������� ������";
break;
case 147:
ls_ret_4 = "������������� ���� ��������� ������ ��������� ��������";
break;
case 148:
ls_ret_4 = "���������� �������� � ���������� ������� �������� ������� ";
break;
case 4000:
ls_ret_4 = "��� ������";
break;
case 4001:
ls_ret_4 = "������������ ��������� �������";
break;
case 4002:
ls_ret_4 = "������ ������� - ��� ���������";
break;
case 4003:
ls_ret_4 = "��� ������ ��� ����� �������";
break;
case 4004:
ls_ret_4 = "������������ ����� ����� ������������ ������";
break;
case 4005:
ls_ret_4 = "�� ����� ��� ������ ��� �������� ����������";
break;
case 4006:
ls_ret_4 = "��� ������ ��� ���������� ���������";
break;
case 4007:
ls_ret_4 = "��� ������ ��� ��������� ������";
break;
case 4008:
ls_ret_4 = "�������������������� ������";
break;
case 4009:
ls_ret_4 = "�������������������� ������ � �������";
break;
case 4010:
ls_ret_4 = "��� ������ ��� ���������� �������";
break;
case 4011:
ls_ret_4 = "������� ������� ������";
break;
case 4012:
ls_ret_4 = "������� �� ������� �� ����";
break;
case 4013:
ls_ret_4 = "������� �� ����";
break;
case 4014:
ls_ret_4 = "����������� �������";
break;
case 4015:
ls_ret_4 = "������������ �������";
break;
case 4016:
ls_ret_4 = "�������������������� ������";
break;
case 4017:
ls_ret_4 = "������ DLL �� ���������";
break;
case 4018:
ls_ret_4 = "���������� ��������� ����������";
break;
case 4019:
ls_ret_4 = "���������� ������� �������";
break;
case 4020:
ls_ret_4 = "������ ������� ������������ ������� �� ���������";
break;
case 4021:
ls_ret_4 = "������������ ������ ��� ������, ������������ �� �������";
break;
case 4022:
ls_ret_4 = "������� ������";
break;
case 4050:
ls_ret_4 = "������������ ���������� ���������� �������";
break;
case 4051:
ls_ret_4 = "������������ �������� ��������� �������";
break;
case 4052:
ls_ret_4 = "���������� ������ ��������� �������";
break;
case 4053:
ls_ret_4 = "������ �������";
break;
case 4054:
ls_ret_4 = "������������ ������������� �������-���������";
break;
case 4055:
ls_ret_4 = "������ ����������������� ����������";
break;
case 4056:
ls_ret_4 = "������� ������������";
break;
case 4057:
ls_ret_4 = "������ ��������� ����������� ����������";
break;
case 4058:
ls_ret_4 = "���������� ���������� �� ����������";
break;
case 4059:
ls_ret_4 = "������� �� ��������� � �������� ������";
break;
case 4060:
ls_ret_4 = "������� �� ������������";
break;
case 4061:
ls_ret_4 = "������ �������� �����";
break;
case 4062:
ls_ret_4 = "��������� �������� ���� string";
break;
case 4063:
ls_ret_4 = "��������� �������� ���� integer";
break;
case 4064:
ls_ret_4 = "��������� �������� ���� double";
break;
case 4065:
ls_ret_4 = "� �������� ��������� ��������� ������";
break;
case 4066:
ls_ret_4 = "����������� ������������ ������ � ��������� ����������";
break;
case 4067:
ls_ret_4 = "������ ��� ���������� �������� ��������";
break;
case 4099:
ls_ret_4 = "����� �����";
break;
case 4100:
ls_ret_4 = "������ ��� ������ � ������";
break;
case 4101:
ls_ret_4 = "������������ ��� �����";
break;
case 4102:
ls_ret_4 = "������� ����� �������� ������";
break;
case 4103:
ls_ret_4 = "���������� ������� ����";
break;
case 4104:
ls_ret_4 = "������������� ����� ������� � �����";
break;
case 4105:
ls_ret_4 = "�� ���� ����� �� ������";
break;
case 4106:
ls_ret_4 = "����������� ������";
break;
case 4107:
ls_ret_4 = "������������ �������� ���� ��� �������� �������";
break;
case 4108:
ls_ret_4 = "�������� ����� ������";
break;
case 4109:
ls_ret_4 = "�������� �� ���������";
break;
case 4110:
ls_ret_4 = "������� ������� �� ���������";
break;
case 4111:
ls_ret_4 = "�������� ������� �� ���������";
break;
case 4200:
ls_ret_4 = "������ ��� ����������";
break;
case 4201:
ls_ret_4 = "��������� ����������� �������� �������";
break;
case 4202:
ls_ret_4 = "������ �� ����������";
break;
case 4203:
ls_ret_4 = "����������� ��� �������";
break;
case 4204:
ls_ret_4 = "��� ����� �������";
break;
case 4205:
ls_ret_4 = "������ ��������� �������";
break;
case 4206:
ls_ret_4 = "�� ������� ��������� �������";
break;
case 4207:
ls_ret_4 = "������ ��� ������ � ��������";
break;
default:
ls_ret_4 = "����������� ������";
}
return (ls_ret_4);
}