ea stec avg backup v5.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea stec avg backup v5.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для MetaTrader 4, реализующий стратегию усреднения позиций с возможностью автоматического управления лотами, стоп-лоссами и тейк-профитами. Поддерживает два временных окна фильтрации торговли, режим пирамидирования и накопления прибыли по покупкам и продажам. Работает с обычными и ECN-брокерами, отображает информационную панель на графике с текущими показателями баланса, прибыли и статистикой сделок.
Настройки программы
| Настройка | Описание |
|---|---|
| Setting_______________0 | Разделитель группы 0 — Текстовый разделитель, обозначающий начало списка настроек. |
| EA_OFF_AfterClear | Отключение после очистки — Переключатель: при включении советник автоматически прекращает работу после закрытия всех текущих ордеров. |
| BrokerIsECN | Брокер ECN — Переключатель для корректной работы с ECN-брокерами через дополнительную модификацию ордеров после размещения. |
| MagicNumber | Магический номер — Целочисленный идентификатор, используемый для фильтрации и управления собственными ордерами советника. |
| Setting_______________1 | Разделитель группы 1 — Текстовый разделитель, обозначающий начало группы настроек управления лотами. |
| Use_Compound | Использовать сложный расчёт лота — Переключатель: при включении размер лота рассчитывается на основе свободного маржи и параметра Ketahanan; при выключении используется фиксированный Manual_LotSize. |
| Ketahanan | Параметр устойчивости — Числовой параметр, участвующий в расчёте размера лота при включённом режиме сложного управления. |
| Manual_LotSize | Ручной размер лота — Фиксированный размер лота, используемый при отключённом режиме сложного расчёта. |
| Setting_______________2a | Разделитель группы 2a — Текстовый разделитель, обозначающий начало группы настроек PipStep и фильтра по времени. |
| UsePipStepWithCandle | Использовать PipStep со свечами — Переключатель выбора метода расчёта шага усреднения: с привязкой к текущей свече или к текущей цене. |
| PipStepTime1 | PipStep первого окна — Значение pipstep, применяемое в первом временном окне торговли. |
| Start1 | Начало первого окна — Время начала первого торгового окна фильтрации. |
| End1 | Конец первого окна — Время окончания первого торгового окна фильтрации. |
| PipStepTime2 | PipStep второго окна — Значение pipstep, применяемое во втором временном окне торговли. |
| Start2 | Начало второго окна — Время начала второго торгового окна фильтрации. |
| End2 | Конец второго окна — Время окончания второго торгового окна фильтрации. |
| Setting_______________2b | Разделитель группы 2b — Текстовый разделитель, обозначающий начало группы настроек усреднения. |
| UsePyramiding | Использовать пирамидирование — Переключатель режима усреднения: при включении советник добавляет позиции при движении против открытой сделки. |
| Multiply | Множитель лота — Множитель, определяющий увеличение размера лота при каждом последующем уровне усреднения. |
| MaxLevels | Максимум уровней — Максимальное допустимое количество уровней усреднения. |
| Setting_______________3 | Разделитель группы 3 — Текстовый разделитель, обозначающий начало группы настроек управления стоп-лосс и тейк-профит. |
| Accumulative_BuySell_Profit | Накопление прибыли BUY/SELL — Переключатель: при включении целевая прибыль накапливается по совокупной прибыли покупок и продаж, а не по каждой стороне отдельно. |
| TakeProfit_in_Pips | Тейк-профит в пунктах — Размер тейк-профита, заданный в пунктах цены. |
| TargetPercent_PerTrade | Целевой процент на сделку — Целевой процент прибыли от баланса, достижение которого инициирует закрытие сделок. |
| TargetPercent_PerDay | Целевой процент за день — Целевой процент прибыли за торговый день, достижение которого приводит к остановке советника. |
Поиск по коду файла
/*
*/
#import "stdlib.ex4"
string ErrorDescription(int a0); // DA69CBAFF4D38B87377667EEC549DE5A
#import
string Gs_76 = "EA STEC AVERAGING BACKUP v5";
extern string Setting_______________0 = "--------------------------";
extern bool EA_OFF_AfterClear = FALSE;
extern bool BrokerIsECN = FALSE;
extern int MagicNumber = 123123123;
string Gs_104 = "avg backup v5";
extern string Setting_______________1 = "---------- Lot Management";
extern bool Use_Compound = TRUE;
extern double Ketahanan = 50000.0;
extern double Manual_LotSize = 0.01;
extern string Setting_______________2a = "---------- PipStep + TimeFilter";
extern bool UsePipStepWithCandle = TRUE;
extern double PipStepTime1 = 20.0;
extern string Start1 = "00:00";
extern string End1 = "12:00";
extern double PipStepTime2 = 20.0;
extern string Start2 = "12:00";
extern string End2 = "23:59";
extern string Setting_______________2b = "---------- Averaging";
extern bool UsePyramiding = TRUE;
extern double Multiply = 1.6;
extern int MaxLevels = 20;
extern string Setting_______________3 = "---------- SL & TP Management";
extern bool Accumulative_BuySell_Profit = FALSE;
extern int TakeProfit_in_Pips = 1000;
extern double TargetPercent_PerTrade = 0.5;
extern double TargetPercent_PerDay = 3.0;
int Gi_256 = 0;
int Gi_260 = 2;
int Gi_264 = 10;
double Gd_268 = 0.0;
double Gd_276;
double Gd_284;
double Gd_292;
double Gd_300;
string Gs_308;
string Gs_316;
string Gs_324;
string Gs_332;
int Gi_344;
int Gi_372;
int Gi_380;
string Gs_384;
double Gd_392;
double Gd_400;
string Gs_416;
string Gs_424;
string Gs_432;
string Gs_440;
string Gs_448;
string Gs_456;
double Gd_464;
double Gd_472;
double Gd_480;
bool Gi_488;
bool Gi_492;
int Gi_496;
int Gi_500;
int Gi_504;
int init() {
// код доступен только после оплаты
}
int deinit() {
return (0);
}
int start() {
// код доступен только после оплаты
}
int f0_4(int Ai_0, string As_4, double Ad_12, double Ad_20, double Ad_28, double Ad_36, int Ai_44, color Ai_48) {
int Li_56;
bool Li_60;
int Li_64;
string Ls_68;
int Li_52 = 0;
if (!BrokerIsECN) Li_56 = OrderSend(Symbol(), Ai_0, Ad_12, Ad_20, Gi_264, Ad_28, Ad_36, As_4, Ai_44, Li_52, Ai_48);
if (BrokerIsECN) {
Li_56 = OrderSend(Symbol(), Ai_0, Ad_12, Ad_20, Gi_264, 0, 0, As_4, Ai_44, Li_52, Ai_48);
if (Li_56 > 0) {
if (Ad_36 > 0.0 && Ad_28 > 0.0) {
while (IsTradeContextBusy()) Sleep(100);
Li_60 = OrderModify(Li_56, OrderOpenPrice(), Ad_28, Ad_36, OrderExpiration(), CLR_NONE);
if (!Li_60) {
Li_64 = GetLastError();
Print(Symbol(), " ||=========================> ECN SL/TP order modify failed with error(", Li_64, "): ", ErrorDescription(Li_64));
}
}
if (Ad_36 != 0.0 && Ad_28 == 0.0) {
while (IsTradeContextBusy()) Sleep(100);
Li_60 = OrderModify(Li_56, OrderOpenPrice(), OrderStopLoss(), Ad_36, OrderExpiration(), CLR_NONE);
if (!Li_60) {
Li_64 = GetLastError();
Print(Symbol(), " ||=========================> ECN TP order modify failed with error(", Li_64, "): ", ErrorDescription(Li_64));
}
}
if (Ad_36 == 0.0 && Ad_28 != 0.0) {
while (IsTradeContextBusy()) Sleep(100);
Li_60 = OrderModify(Li_56, OrderOpenPrice(), Ad_28, OrderTakeProfit(), OrderExpiration(), CLR_NONE);
if (!Li_60) {
Li_64 = GetLastError();
Print(Symbol(), " ||=========================> ECN SL order modify failed with error(", Li_64, "): ", ErrorDescription(Li_64));
}
}
}
}
if (Li_56 < 0) {
if (Ai_0 == OP_BUY) Ls_68 = "OP_BUY 1";
if (Ai_0 == OP_SELL) Ls_68 = "OP_SELL 1";
Li_64 = GetLastError();
Print(Symbol(), " ||=========================> ", Ls_68, " order send error(", Li_64, "): ", ErrorDescription(Li_64));
return (0);
}
return (1);
}
int f0_7() {
Gi_344 = -1;
if (OrdersTotal() == 0) return (0);
for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
if (OrderSelect(Li_0, SELECT_BY_POS)) {
if (OrderSymbol() == Symbol()) {
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber) {
Gi_344 = OrderTicket();
return (1);
}
}
}
}
return (0);
}
int f0_8() {
Gi_344 = -1;
if (OrdersTotal() == 0) return (0);
for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
if (OrderSelect(Li_0, SELECT_BY_POS)) {
if (OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) {
Gi_344 = OrderTicket();
return (1);
}
}
}
return (0);
}
int f0_21() {
Gi_344 = -1;
if (OrdersTotal() == 0) return (0);
for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
if (OrderSelect(Li_0, SELECT_BY_POS)) {
if (OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber) {
Gi_344 = OrderTicket();
return (1);
}
}
}
return (0);
}
int f0_28() {
Gi_344 = -1;
if (OrdersTotal() == 0) return (0);
for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
if (OrderSelect(Li_0, SELECT_BY_POS)) {
if (OrderSymbol() == Symbol() && OrderType() == OP_BUYLIMIT && OrderMagicNumber() == MagicNumber) {
Gi_344 = OrderTicket();
return (1);
}
}
}
return (0);
}
int f0_24() {
Gi_344 = -1;
if (OrdersTotal() == 0) return (0);
for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
if (OrderSelect(Li_0, SELECT_BY_POS)) {
if (OrderSymbol() == Symbol() && OrderType() == OP_SELLLIMIT && OrderMagicNumber() == MagicNumber) {
Gi_344 = OrderTicket();
return (1);
}
}
}
return (0);
}
double f0_1(double Ad_0) {
double Ld_8 = MarketInfo(Symbol(), MODE_MAXLOT);
double Ld_16 = MarketInfo(Symbol(), MODE_MINLOT);
double Ld_24 = MarketInfo(Symbol(), MODE_LOTSTEP);
double Ld_32 = Ld_24 * NormalizeDouble(Ad_0 / Ld_24, 0);
Ld_32 = MathMax(MathMin(Ld_8, Ld_32), Ld_16);
return (Ld_32);
}
int f0_26() {
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket());
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket());
}
}
return (0);
}
int f0_0() {
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
return (0);
}
int f0_13() {
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
return (0);
}
int f0_10() {
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
return (0);
}
int f0_9() {
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
return (0);
}
void f0_17() {
int Li_12;
double Ld_20;
double Ld_28;
int Li_36;
double Ld_40;
double Ld_60;
int Li_68;
int Li_0 = 0;
int Li_4 = 0;
int Li_8 = 0;
for (Li_0 = 0; Li_0 < OrdersTotal(); Li_0++) {
OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
Ld_20 = OrderOpenPrice();
Ld_28 = OrderLots();
Li_36 = OrderOpenTime();
Gs_384 = OrderComment();
Li_12 = OrderMagicNumber();
Li_4++;
}
}
}
for (Li_0 = 0; Li_0 < OrdersTotal(); Li_0++) {
OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
Ld_40 += OrderProfit();
Li_8++;
}
}
}
string Ls_48 = Gs_104;
int Li_56 = (Ld_20 - Close[1]) / Gd_268;
if ((!Accumulative_BuySell_Profit) && Li_4 > 0 && Li_36 < Time[0] && Li_56 >= f0_5() && Li_4 < MaxLevels) {
ObjectCreate("textpo1" + Time[0], OBJ_TEXT, 0, Time[0] - 60 * (1 * Period()), Low[1] - 5.0 * Gd_268);
ObjectSetText("textpo1" + Time[0], "" + Li_56 + "p", 7, "Arial", Red);
Ld_60 = Ask;
if (TakeProfit_in_Pips > 0) Gd_392 = NormalizeDouble(Ld_60 + TakeProfit_in_Pips * Gd_268, Digits);
else Gd_392 = 0;
if (Gi_256 > 0) Gd_400 = NormalizeDouble(Ld_60 - Gi_256 * Gd_268, Digits);
else Gd_400 = 0;
Gi_372 = f0_4(OP_BUY, Ls_48, f0_1(Multiply * Ld_28), Ld_60, Gd_400, Gd_392, Li_12, Blue);
for (Li_0 = 0; Li_0 < OrdersTotal(); Li_0++) {
OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Li_68++;
}
if (Li_8 < Li_68 && Ld_40 > 0.0) f0_13();
} else {
if (Accumulative_BuySell_Profit && Li_4 > 0 && Li_8 <= Li_4 && Li_36 < Time[0] && Li_56 >= f0_5() && Li_4 < MaxLevels) {
ObjectCreate("textpo1" + Time[0], OBJ_TEXT, 0, Time[0] - 60 * (1 * Period()), Low[1] - 5.0 * Gd_268);
ObjectSetText("textpo1" + Time[0], "" + Li_56 + "p", 7, "Arial", Red);
Ld_60 = Ask;
if (TaПоказано первые 50% кода (символов: 34181)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.