free_money_robot_bot_hiding_sl_tp_from_broker_for_live_and_demo.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.