Some code siriusprosystems. I bought it at the official site. I do not publish all of the code because it is stealing. I do not see what that says Jarora. Expert works well.
nt start() {
double ld_0;
double ld_8;
double ld_16;
double ld_24;
double ld_32;
double ld_40;
double ld_48;
double ld_56;
double ld_64;
double ld_72;
double ld_80;
if (AccountNumber() != 2481721 && (!IsDemo())) {
Comment("Советник может работать только на счёте " + gi_76 + ", для бесплатного подключения к другому счёту перейдите на сайт spreadcash.com");
return;
}
if (((!IsOptimization()) && !IsTesting() && (!IsVisualMode())) || (ShowTableOnTesting && IsTesting() && (!IsOptimization()))) {
DrawStats();
DrawLogo();
}
gi_124 = AccountBalance() / 100.0 * gd_116 / (MarketInfo(Symbol(), MODE_TICKVALUE) * LotsOptimized());
if (gi_124 > 5000) gi_124 = 5000;
if (AccountBalance() - AccountEquity() > AccountBalance() / 100.0 * gd_116) {
CloseAllBuy();
CloseAllSell();
}
int li_88 = TotalBuy(gi_148);
int li_92 = TotalSell(gi_148);
int li_96 = BuyStopsTotal(gi_148);
int li_100 = SellStopsTotal(gi_148);
int li_104 = BuyLimitsTotal(gi_148);
int li_108 = SellLimitsTotal(gi_148);
int li_112 = TotalBuy(gi_152);
int li_116 = TotalSell(gi_152);
int li_120 = BuyStopsTotal(gi_152);
int li_124 = SellStopsTotal(gi_152);
int li_128 = BuyLimitsTotal(gi_152);
int li_132 = SellLimitsTotal(gi_152);
if (li_88 == 0 && li_92 == 0 && li_96 == 0 && li_100 == 0 && li_104 == 0 && li_108 == 0 && li_112 == 0 && li_116 == 0 && li_120 == 0 && li_124 == 0 && li_128 == 0 &&
li_132 == 0) {
ld_0 = LotsOptimized();
OpenBuy(ld_0, TakeProfit, gi_148);
OpenSell(ld_0, TakeProfit, gi_148);
} else {
if (li_88 == 0 && li_92 == 0 && (li_112 == 0 && li_116 == 0)) {
DeleteAllPending(gi_148);
DeleteAllPending(gi_152);
} else {
if (li_88 == 0 && li_92 == 0 && (li_112 == 1 && li_116 == 1) && li_96 != 0 || li_100 != 0 || li_104 != 0 || li_108 != 0) DeleteAllPending(gi_148);
else {
if (li_112 == 0 && li_116 == 0 && (li_88 == 1 && li_92 == 1) && li_120 != 0 || li_124 != 0 || li_128 != 0 || li_132 != 0) DeleteAllPending(gi_152);
else {
if (li_88 > 0 && li_116 == 0 || li_116 == 1) {
if (li_96 == 0 && li_108 == 0) {
GetHighestBuyParameters(ld_16, ld_24, ld_32, ld_40, gi_148);
gi_124 = AccountBalance() / 100.0 * gd_116 / (MarketInfo(Symbol(), MODE_TICKVALUE) * ld_40 * LotMultiplicator);
if (gi_124 > 5000) gi_124 = 5000;
SetBuyStop(ld_32 + TakeProfit * Point + gd_128, NormalizeDouble(ld_40 * LotMultiplicator, gi_156), TakeProfit, gi_124 - gi_136, gi_148);
SetSellLimit(ld_32 + TakeProfit * Point, NormalizeDouble(ld_40 * LotMultiplicator, gi_156), 0, gi_124, gi_148);
ld_48 = GetWeightedBELevel(gi_148);
if (ld_48 != -1.0) {
ld_8 = ld_48 - ProtectionTP * Point;
TrailBuySl(ld_8, gi_148);
TrailSellTp(ld_8 + gd_128, gi_148);
}
}
if ((li_96 == 0 && li_108 == 0) || (gi_176 != FALSE && gi_180 != FALSE && li_112 == 0 && li_116 == 0)) {
if (li_92 > 1) {
GetHighestBuyParameters(ld_16, ld_24, ld_32, ld_40, gi_148);
if (li_112 == 0 && li_116 == 0 && li_124 == 0 && li_128 == 0) {
ld_0 = LotsOptimized();
SetSellStop(ld_32 - TakeProfit * Point - gd_128, ld_0, TakeProfit, TakeProfit + gi_136 * 2, gi_152);
SetBuyLimit(ld_32 - TakeProfit * Point, ld_0, TakeProfit, 0, gi_152);
} else {
if (li_112 == 0 && li_116 == 0 && li_124 != 0 && li_128 != 0) {
DeleteAllPending(gi_152);
ld_0 = LotsOptimized();
SetSellStop(ld_32 - TakeProfit * Point - gd_128, ld_0, TakeProfit, TakeProfit + gi_136 * 2, gi_152);
SetBuyLimit(ld_32 - TakeProfit * Point, ld_0, TakeProfit, 0, gi_152);
}
}
}
}
}
li_88 = TotalBuy(gi_148);
li_92 = TotalSell(gi_148);
li_96 = BuyStopsTotal(gi_148);
li_100 = SellStopsTotal(gi_148);
li_104 = BuyLimitsTotal(gi_148);
li_108 = SellLimitsTotal(gi_148);
li_112 = TotalBuy(gi_152);
li_116 = TotalSell(gi_152);
li_120 = BuyStopsTotal(gi_152);
li_124 = SellStopsTotal(gi_152);
li_128 = BuyLimitsTotal(gi_152);
li_132 = SellLimitsTotal(gi_152);
if (li_92 > 0 && li_112 == 0 || li_112 == 1) {
if (li_100 == 0 && li_104 == 0) {
GetLowestSellParameters(ld_56, ld_64, ld_72, ld_80, gi_148);
gi_124 = AccountBalance() / 100.0 * gd_116 / (MarketInfo(Symbol(), MODE_TICKVALUE) * ld_80 * LotMultiplicator);
if (gi_124 > 5000) gi_124 = 5000;
SetSellStop(ld_72 - TakeProfit * Point - gd_128, NormalizeDouble(ld_80 * LotMultiplicator, gi_156), TakeProfit, gi_124 + gi_136, gi_148);
SetBuyLimit(ld_72 - TakeProfit * Point, NormalizeDouble(ld_80 * LotMultiplicator, gi_156), 0, gi_124, gi_148);
ld_48 = GetWeightedBELevel(gi_148);
if (ld_48 != -1.0) {
ld_8 = ld_48 + ProtectionTP * Point;
TrailBuyTp(ld_8, gi_148);
TrailSellSl(ld_8 + gd_128, gi_148);
}
}
if ((li_100 == 0 && li_104 == 0) || (gi_176 != FALSE && gi_180 != FALSE && li_112 == 0 && li_116 == 0)) {
if (li_88 > 1) {
GetLowestSellParameters(ld_56, ld_64, ld_72, ld_80, gi_148);
if (li_112 == 0 && li_116 == 0 && li_120 == 0 && li_132 == 0) {
ld_0 = LotsOptimized();
SetBuyStop(ld_72 + TakeProfit * Point + gd_128, ld_0, TakeProfit - gi_136, TakeProfit + gi_136 * 2, gi_152);
SetSellLimit(ld_72 + TakeProfit * Point, ld_0, TakeProfit, 0, gi_152);
} else {
if (li_112 == 0 && li_116 == 0 && li_120 != 0 && li_132 != 0) {
DeleteAllPending(gi_152);
ld_0 = LotsOptimized();
SetBuyStop(ld_72 + TakeProfit * Point + gd_128, ld_0, TakeProfit - gi_136, TakeProfit + gi_136 * 2, gi_152);
SetSellLimit(ld_72 + TakeProfit * Point, ld_0, TakeProfit, 0, gi_152);
}
}
}
}
}
li_88 = TotalBuy(gi_148);
li_92 = TotalSell(gi_148);
li_96 = BuyStopsTotal(gi_148);
li_100 = SellStopsTotal(gi_148);
li_104 = BuyLimitsTotal(gi_148);
li_108 = SellLimitsTotal(gi_148);
li_112 = TotalBuy(gi_152);
li_116 = TotalSell(gi_152);
li_120 = BuyStopsTotal(gi_152);
li_124 = SellStopsTotal(gi_152);
li_128 = BuyLimitsTotal(gi_152);
li_132 = SellLimitsTotal(gi_152);
if (li_112 > 0 && li_92 == 0 || li_92 == 1) {
if (li_120 == 0 && li_132 == 0) {
GetHighestBuyParameters(ld_16, ld_24, ld_32, ld_40, gi_152);
gi_124 = AccountBalance() / 100.0 * gd_116 / (MarketInfo(Symbol(), MODE_TICKVALUE) * ld_40 * LotMultiplicator);
if (gi_124 > 5000) gi_124 = 5000;
SetBuyStop(ld_32 + TakeProfit * Point + gd_128, NormalizeDouble(ld_40 * LotMultiplicator, gi_156), TakeProfit, gi_124 - gi_136, gi_152);
SetSellLimit(ld_32 + TakeProfit * Point, NormalizeDouble(ld_40 * LotMultiplicator, gi_156), 0, gi_124, gi_152);
ld_48 = GetWeightedBELevel(gi_152);
if (ld_48 != -1.0) {
ld_8 = ld_48 - ProtectionTP * Point;
TrailBuySl(ld_8, gi_152);
TrailSellTp(ld_8 + gd_128, gi_152);
}
}
if ((li_120 == 0 && li_132 == 0) || (gi_168 != FALSE && gi_172 != FALSE && li_88 == 0 && li_92 == 0)) {
if (li_116 > 1) {
GetHighestBuyParameters(ld_16, ld_24, ld_32, ld_40, gi_152);
if (li_88 == 0 && li_92 == 0 && li_100 == 0 && li_104 == 0) {
ld_0 = LotsOptimized();
SetSellStop(ld_32 - TakeProfit * Point - gd_128, ld_0, TakeProfit, TakeProfit + gi_136 * 2, gi_148);
SetBuyLimit(ld_32 - TakeProfit * Point, ld_0, TakeProfit, 0, gi_148);
} else {
if (li_88 == 0 && li_92 == 0 && li_100 != 0 && li_104 != 0) {
DeleteAllPending(gi_148);
ld_0 = LotsOptimized();
SetSellStop(ld_32 - TakeProfit * Point - gd_128, ld_0, TakeProfit, TakeProfit + gi_136 * 2, gi_148);
SetBuyLimit(ld_32 - TakeProfit * Point, ld_0, TakeProfit, 0, gi_148);
}
}
}
}
}
li_88 = TotalBuy(gi_148);
li_92 = TotalSell(gi_148);
li_96 = BuyStopsTotal(gi_148);
li_100 = SellStopsTotal(gi_148);
li_104 = BuyLimitsTotal(gi_148);
li_108 = SellLimitsTotal(gi_148);
li_112 = TotalBuy(gi_152);
li_116 = TotalSell(gi_152);
li_120 = BuyStopsTotal(gi_152);
li_124 = SellStopsTotal(gi_152);
li_128 = BuyLimitsTotal(gi_152);
li_132 = SellLimitsTotal(gi_152);
if (li_116 > 0 && li_88 == 0 || li_88 == 1) {
if (li_124 == 0 && li_128 == 0) {
GetLowestSellParameters(ld_56, ld_64, ld_72, ld_80, gi_152);
gi_124 = AccountBalance() / 100.0 * gd_116 / (MarketInfo(Symbol(), MODE_TICKVALUE) * ld_80 * LotMultiplicator);
if (gi_124 > 5000) gi_124 = 5000;
SetSellStop(ld_72 - TakeProfit * Point - gd_128, NormalizeDouble(ld_80 * LotMultiplicator, gi_156), TakeProfit, gi_124 + gi_136, gi_152);
SetBuyLimit(ld_72 - TakeProfit * Point, NormalizeDouble(ld_80 * LotMultiplicator, gi_156), 0, gi_124, gi_152);
ld_48 = GetWeightedBELevel(gi_152);
if (ld_48 != -1.0) {
ld_8 = ld_48 + ProtectionTP * Point;
TrailBuyTp(ld_8, gi_152);
TrailSellSl(ld_8 + gd_128, gi_152);
}
}
if ((li_124 == 0 && li_128 == 0) || (gi_168 != FALSE && gi_172 != FALSE && li_88 == 0 && li_92 == 0)) {
if (li_112 > 1) {
GetLowestSellParameters(ld_56, ld_64, ld_72, ld_80, gi_152);
if (li_88 == 0 && li_92 == 0 && li_96 == 0 && li_108 == 0) {
ld_0 = LotsOptimized();
SetBuyStop(ld_72 + TakeProfit * Point + gd_128, ld_0, TakeProfit - gi_136, TakeProfit + gi_136 * 2, gi_148);
SetSellLimit(ld_72 + TakeProfit * Point, ld_0, TakeProfit, 0, gi_148);
} else {
if (li_88 == 0 && li_92 == 0 && li_96 != 0 && li_108 != 0) {
DeleteAllPending(gi_148);
ld_0 = LotsOptimized();
SetBuyStop(ld_72 + TakeProfit * Point + gd_128, ld_0, TakeProfit - gi_136, TakeProfit + gi_136 * 2, gi_148);
SetSellLimit(ld_72 + TakeProfit * Point, ld_0, TakeProfit, 0, gi_148);
}
}
}
}
}
}
}
}
}
gi_168 = li_88;
gi_172 = li_92;
gi_176 = li_112;
gi_180 = li_116;
return (0);
}
int TotalBuy(int ai_0) {
int li_4 = 0;
for (int li_8 = 0; li_8 < OrdersTotal(); li_8++) {
if (!(OrderSelect(li_8, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_BUY) li_4++;
}
return (li_4);
}
int TotalSell(int ai_0) {
int li_4 = 0;
for (int li_8 = 0; li_8 < OrdersTotal(); li_8++) {
if (!(OrderSelect(li_8, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_SELL) li_4++;
}
return (li_4);
}
int BuyStopsTotal(int ai_0) {
int li_4 = 0;
for (int li_8 = 0; li_8 < OrdersTotal(); li_8++) {
if (!(OrderSelect(li_8, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_BUYSTOP) li_4++;
}
return (li_4);
}
int SellStopsTotal(int ai_0) {
int li_4 = 0;
for (int li_8 = 0; li_8 < OrdersTotal(); li_8++) {
if (!(OrderSelect(li_8, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_SELLSTOP) li_4++;
}
return (li_4);
}
int BuyLimitsTotal(int ai_0) {
int li_4 = 0;
for (int li_8 = 0; li_8 < OrdersTotal(); li_8++) {
if (!(OrderSelect(li_8, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_BUYLIMIT) li_4++;
}
return (li_4);
}
int SellLimitsTotal(int ai_0) {
int li_4 = 0;
for (int li_8 = 0; li_8 < OrdersTotal(); li_8++) {
if (!(OrderSelect(li_8, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_SELLLIMIT) li_4++;
}
return (li_4);
}
void DeleteAllPending(int ai_0) {
for (int li_4 = OrdersTotal() - 1; li_4 >= 0; li_4--) {
if (!(OrderSelect(li_4, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_0 && OrderType() == OP_SELLSTOP || OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT) {
while (IsTradeContextBusy()) Sleep(500);
Print("Удаляем ордер #" + OrderTicket() + ".");
if (!OrderDelete(OrderTicket())) Print("Не удалось удалить ордер #" + OrderTicket() + ". Ошибка: ");
}
}
}
void SetSellStop(double ad_0, double ad_8, int ai_16, int ai_20, int ai_24) {
double ld_28;
double ld_36;
int li_44;
if (ai_20 != 0) ld_28 = ad_0 + ai_20 * Point;
if (ai_16 != 0) ld_36 = ad_0 - ai_16 * Point;
int li_48 = OrderSend(Symbol(), OP_SELLSTOP, ad_8, ad_0, Slippage, ld_28, ld_36, "", ai_24, 0, Red);
if (li_48 < 1) {
li_44 = GetLastError();
Print("Не удалось установить отложенный ордер SELLSTOP объемом ");
Print(Bid + " " + ad_0 + " " + ld_28 + " " + ld_36);
}
}
void SetBuyStop(double ad_0, double ad_8, int ai_16, int ai_20, int ai_24) {
double ld_28;
double ld_36;
int li_44;
if (ai_20 != 0) ld_28 = ad_0 - ai_20 * Point;
if (ai_16 != 0) ld_36 = ad_0 + ai_16 * Point;
int li_48 = OrderSend(Symbol(), OP_BUYSTOP, ad_8, ad_0, Slippage, ld_28, ld_36, "", ai_24, 0, Blue);
if (li_48 < 1) {
li_44 = GetLastError();
Print("Не удалось установить отложенный ордер BUYSTOP объемом " + ad_8 + ". Ошибка #");
Print(Bid + " " + ad_0 + " " + ld_28 + " " + ld_36);
}
}
void SetSellLimit(double ad_0, double ad_8, int ai_16, int ai_20, int ai_24) {
double ld_28;
int li_36;
double ld_40 = 0;
if (ai_20 != 0) ld_40 = ad_0 + ai_20 * Point;
if (ai_16 != 0) ld_28 = ad_0 - ai_16 * Point;
int li_48 = OrderSend(Symbol(), OP_SELLLIMIT, ad_8, ad_0, Slippage, ld_40, ld_28, "", ai_24, 0, CLR_NONE);
if (li_48 < 1) {
li_36 = GetLastError();
Print("Не удалось установить отложенный ордер SELLLIMIT объемом " + ad_8 + ". Ошибка #");
Print(Bid + " " + ad_0 + " " + ld_40 + " " + ld_28);
}
}
void SetBuyLimit(double ad_0, double ad_8, int ai_16, int ai_20, int ai_24) {
double ld_28;
int li_36;
double ld_40 = 0;
if (ai_20 != 0) ld_40 = ad_0 - ai_20 * Point;
if (ai_16 != 0) ld_28 = ad_0 + ai_16 * Point;
int li_48 = OrderSend(Symbol(), OP_BUYLIMIT, ad_8, ad_0, Slippage, ld_40, ld_28, "", ai_24, 0, CLR_NONE);
if (li_48 < 1) {
li_36 = GetLastError();
Print("Не удалось установить отложенный ордер BUYLIMIT объемом " + ad_8 + ". Ошибка #");
Print(Bid + " " + ad_0 + " " + ld_40 + " " + ld_28);
}
}
void OpenBuy(double ad_0, int ai_8, int ai_12) {
int li_16;
int li_20 = OrdersTotal();
double ld_24 = 0;
double ld_32 = 0;
RefreshRates();
double ld_40 = Ask;
if (ai_8 != 0) ld_24 = ld_40 + ai_8 * Point;
if (gi_124 != 0) ld_32 = ld_40 - gi_124 * Point;
int li_48 = TimeCurrent();
int li_52 = OrderSend(Symbol(), OP_BUY, ad_0, ld_40, Slippage, ld_32, ld_24, "", ai_12, 0, Blue);
if (li_52 == -1) {
while (li_52 == -1 && TimeCurrent() - li_48 < 40 && !IsTesting()) {
li_16 = GetLastError();
Print("Ошибка открытия ордера BUY. ");
Sleep(100);
Print("Повтор");
RefreshRates();
ld_40 = Ask;
if (ai_8 != 0) ld_24 = ld_40 + ai_8 * Point;
if (gi_124 != 0) ld_32 = ld_40 - gi_124 * Point;
li_52 = OrderSend(Symbol(), OP_BUY, ad_0, ld_40, Slippage, ld_32, ld_24, "", ai_12, 0, Blue);
}
if (li_52 == -1) {
li_16 = GetLastError();
Print("Ошибка открытия ордера BUY. ");
}
}
if (li_52 != -1) Print("Открыто BUY на " + Symbol() + " " + Period() + " объемом " + ad_0 + "!");
}
void OpenSell(double ad_0, int ai_8, int ai_12) {
int li_16;
int li_20 = OrdersTotal();
double ld_24 = 0;
double ld_32 = 0;
RefreshRates();
double ld_40 = Bid;
if (ai_8 != 0) ld_24 = ld_40 - ai_8 * Point;
if (gi_124 != 0) ld_32 = ld_40 + gi_124 * Point;
int li_48 = TimeCurrent();
int li_52 = OrderSend(Symbol(), OP_SELL, ad_0, ld_40, Slippage, ld_32, ld_24, "", ai_12, 0, Red);
if (li_52 == -1) {
while (li_52 == -1 && TimeCurrent() - li_48 < 40 && !IsTesting()) {
li_16 = GetLastError();
Print("Ошибка открытия ордера SELL. ");
Sleep(100);
Print("Повтор");
RefreshRates();
ld_40 = Bid;
if (ai_8 != 0) ld_24 = ld_40 - ai_8 * Point;
if (gi_124 != 0) ld_32 = ld_40 + gi_124 * Point;
li_52 = OrderSend(Symbol(), OP_SELL, ad_0, ld_40, Slippage, ld_32, ld_24, "", ai_12, 0, Red);
}
if (li_52 == -1) {
li_16 = GetLastError();
Print("Ошибка открытия ордера SELL. ");
}
}
if (li_52 != -1) Print("Открыто SELL на " + Symbol() + " " + Period() + " объемом " + ad_0 + "!");
}
void TrailBuyTp(double ad_0, int ai_8) {
for (int li_12 = 0; li_12 < OrdersTotal(); li_12++) {
if (!(OrderSelect(li_12, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_8 && OrderType() == OP_BUY) {
if (!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), ad_0, OrderExpiration(), HotPink)) {
Print("Не удалось модифицировать ордер #" + OrderTicket() + ". Ошибка:");
Print("SL=" + OrderStopLoss() + " TP=" + ad_0);
}
}
}
}
void TrailBuySl(double ad_0, int ai_8) {
for (int li_12 = 0; li_12 < OrdersTotal(); li_12++) {
if (!(OrderSelect(li_12, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ai_8 && OrderType() == OP_BUY) {
if (!OrderModify(OrderTicket(), OrderOpenPrice(), ad_0, OrderTakeProfit(), OrderExpiration(), HotPink)) {
Print("Не удалось модифицировать ордер #" + OrderTicket() + ". Ошибка:");
Print("SL=" + ad_0 + " TP=" + OrderTakeProfit());
}
}