← К каталогу
Исходный код · ID 3424

free_money_robot_bot_hiding_sl_tp_from_broker_for_live_and_demo.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Советник для MetaTrader 4, реализующий торговлю исключительно в направлении BUY. При открытии позиции реальный тейк-профит и стоп-лосс не устанавливаются — вместо этого эксперт на каждом тике проверяет текущую цену и вручную закрывает ордер при достижении заданных уровней, что скрывает эти уровни от брокера.

После закрытия убыточной сделки размер лота следующей позиции увеличивается в MartingaleFactor раз (с ограничением MaxLotSize). При прибыльной сделке лот сбрасывается до исходного значения LotSize. Состояние последней сделки сохраняется в файл для корректной работы между перезапусками.

Эксперт фильтрует вход по таймфрейму (TradeStartHour–TradeEndHour) и по спреду (MaxSpread), отправляет push-уведомления и email-алерты при открытии сделок. Торговые операции выполняются через OrderSend и OrderClose с настройкой проскальзывания Slippage.

Настройки программы

НастройкаОписание
LotSize Размер лота — Начальный размер лота для открытия позиции.
points (hidden from broker) (TakeProfit) Тейк-профит — Уровень тейк-профита в пунктах. Закрытие ордера происходит при достижении цены уровня, но реальный тейк-профит на ордере не устанавливается.
points (hidden from broker) (StopLoss) Стоп-лосс — Уровень стоп-лосса в пунктах. Закрытие ордера происходит при достижении цены уровня, но реальный стоп-лосс на ордере не устанавливается.
Slippage Проскальзывание — Допустимое проскальзывание цены при выполнении ордера.
MartingaleFactor Множитель Мартингейла — Множитель увеличения лота после убыточной сделки.
MaxLotSize Максимальный лот — Максимально допустимый размер лота.
Maximum spread allowed (in points) (MaxSpread) Максимальный спред — Максимально допустимый спред в пунктах. При превышении вход в сделку блокируется.
Unique Magic Number for this EA (MagicNumber) Магический номер — Уникальный идентификатор для фильтрации ордеров данного советника.
TradeStartHour Час начала торговли — Час начала торгового окна (по серверному времени).
TradeEndHour Час окончания торговли — Час окончания торгового окна (по серверному времени).
CommentText Текст комментария — Текст комментария, присваиваемый открытым ордерам и используемый в уведомлениях.
PushNotifications Push-уведомления — Включает или отключает отправку push-уведомлений при открытии сделки.
EmailAlerts Email-уведомления — Включает или отключает отправку email-алертов при открытии сделки.
Получить полный код

Поиск по коду файла

#property strict

input double  LotSize           = 0.01;
input double  TakeProfit        = 100;         // points (hidden from broker)
input double  StopLoss          = 50;          // points (hidden from broker)
input int     Slippage          = 1;
input double  MartingaleFactor  = 2.0;
input double  MaxLotSize        = 10.0;
input double  MaxSpread         = 20.0;        // Maximum spread allowed (in points)
input int     MagicNumber       = 1;           // Unique Magic Number for this EA
input int     TradeStartHour    = 0;
input int     TradeEndHour      = 23;
input string  CommentText       = "Buy-Only EA";
input bool    PushNotifications = true;
input bool    EmailAlerts       = true;

string lossTradeFile = "last_trade_loss.dat";
double LastLot = 0;
datetime LastClosedTime = 0;
bool LastTradeWasLoss = false;

int OnInit() {
      // код доступен только после оплаты
   }

void SaveTradeState() {
   int fileHandle = FileOpen(lossTradeFile, FILE_BIN | FILE_WRITE);
   if (fileHandle != INVALID_HANDLE) {
      FileWriteInteger(fileHandle, (LastTradeWasLoss ? 1 : 0), CHAR_VALUE);
      FileClose(fileHandle);
   }
}

void OnTick() {
      // код доступен только после оплаты
   }
   int currentHour = TimeHour(TimeCurrent());
   if (currentHour < TradeStartHour || currentHour > TradeEndHour) return;

   double spread = MarketInfo(Symbol(), MODE_SPREAD);
   if (spread > MaxSpread) {
      Print("Spread too high: ", spread, " points. Trade skipped.");
      return;
   }

   for (int i = 0; i < OrdersTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
            double entryPrice = OrderOp

Показано первые 50% кода (символов: 2625)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
262,50₽ ≈ $3.21