daily 95 pips ibfx version.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «daily 95 pips ibfx version.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот советник для платформы MetaTrader 4 (язык MQL4) предназначен для автоматической торговли на рынке Forex. Он определяет уровни предыдущего дня на основе данных H1-таймфрейма и размещает отложенные и рыночные ордера с заданными параметрами стоп-лосса, тейк-профита и проскальзывания. Советник поддерживает управление размером позиции через фиксированный лот или расчёт по свободной марже, а также функции обновления стоп-лосса в безубыток и трейлинг-стопа для последних ордеров.
Настройки программы
| Настройка | Описание |
|---|---|
| if > 0.0 fixed lots used (FixedLots) | Фиксированный лот — Если значение больше 0.0, используется фиксированный размер лота; иначе размер рассчитывается автоматически. |
| per cent of free margin of a single offer (Risk) | Риск — Процент свободной маржи, используемый для расчёта размера позиции при динамическом лоте. |
| value to add/substract to previous day high/low (Margin) | Отступ от экстремумов — Значение в пунктах, добавляемое или вычитаемое из уровня предыдущего дня высока или низа для формирования цен входа. |
| StopLoss | Стоп-лосс — Расстояние в пунктах от цены входа до уровня стоп-лосса. |
| if 0, no b/e update is made (UpdateToBE) | Безубыток — Расстояние в пунктах в прибыль, при достижении которого стоп-лосс перемещается в точку входа; если 0, обновление не выполняется. |
| TakeProfit1 | Тейк-профит 1 — Первый уровень фиксации прибыли в пунктах от цены входа. |
| TakeProfit2 | Тейк-профит 2 — Второй уровень фиксации прибыли в пунктах от цены входа. |
| TakeProfit3 | Тейк-профит 3 — Третий уровень фиксации прибыли в пунктах от цены входа. |
| UseTrailingStopOnLastOrder | Трейлинг-стоп на последнем ордере — Включает или отключает использование трейлинг-стопа для последних ордеров. |
| TrailingStop | Трейлинг-стоп — Расстояние в пунктах от текущей цены для трейлинг-стопа. |
| 5pm EST in your time zone (DayStartHour) | Час начала торгового дня — Час локального времени, в который советник определяет уровни предыдущего дня и открывает позиции. |
| LookBackHours | Часов анализа — Количество часов для определения максимума и минимума предыдущего торгового дня. |
| OrderExpirationHours | Срок действия ордера — Количество часов, через которое размещённые ордера аннулируются. |
| CloseOrdersNextDay | Закрытие ордеров на следующий день — Если включено, открытые позиции закрываются перед размещением новых ордеров в начале следующего дня. |
| Slippage | Проскальзывание — Допустимое отклонение цены исполнения от запрошенной в пунктах. |
| EAMagicNo | Магический номер — Уникальный идентификатор ордеров, размещённых данным советником, для их фильтрации и управления. |
Поиск по коду файла
/*
* Daily95pips strategy - IBFX Changes Made By PipHunter196
*
* Created by Pr1mer
*/
#include <stdlib.mqh>
#include <stderror.mqh>
extern double FixedLots = 0.0; // if > 0.0 fixed lots used
extern double Risk = 0.01; // per cent of free margin of a single offer
extern int Margin = 5; // value to add/substract to previous day high/low
extern int StopLoss = 30;
extern int UpdateToBE = 15; // if 0, no b/e update is made
extern int TakeProfit1 = 15;
extern int TakeProfit2 = 30;
extern int TakeProfit3 = 50;
extern bool UseTrailingStopOnLastOrder = false;
extern int TrailingStop = 20;
extern int DayStartHour = 21; // 5pm EST in your time zone
extern int LookBackHours = 17;
extern int OrderExpirationHours = 18;
extern bool CloseOrdersNextDay = true;
extern int Slippage = 3;
extern int EAMagicNo = 156909;
bool extremsSet = false;
bool extremsSet2 = false;
double dayHigh = 0.0;
double dayLow = 0.0;
datetime lastOrderTime = 0;
void init()
{
// код доступен только после оплаты
}
int HandleLastError(bool printInfo = true)
{
int error = GetLastError();
if(error > 0 && printInfo)
Print("Error #", error, ": ", ErrorDescription(error));
return (error);
}
int OrderSendSafe(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
{
int ticket;
bool cont = true;
int sleepMin = 2;
int sleepMax = 10;
MathSrand(TimeLocal());
while(cont)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);
if(ticket < 0)
{
if(HandleLastError() == ERR_TRADE_CONTEXT_BUSY)
{
Print("Retrying...");
int randomSeconds = MathRand() % (sleepMax - sleepMin) + sleepMin;
Sleep(randomSeconds * 1000);
}
else
cont = false;
}
else
cont = false;
}
return (ticket);
}
void OrderModifySafe(int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
{
bool cont = true;
int sleepMin = 2;
int sleepMax = 10;
MathSrand(TimeLocal());
while(cont)
{
bool result = OrderModify(ticket, price, stoploss, takeprofit, expiration, arrow_color);
if(!result)
{
if(HandleLastError() == ERR_TRADE_CONTEXT_BUSY)
{
Print("Retrying...");
int randomSeconds = MathRand() % (sleepMax - sleepMin) + sleepMin;
Sleep(randomSeconds * 1000);
}
else
cont = false;
}
else
cont = false;
}
}
double CalculateLotSize()
{
if(FixedLots > 0.0)
return (FixedLots);
double pipValue = MarketInfo(Symbol(), MODE_TICKVALUE);
double lots = AccountFreeMargin() * Risk / (StopLoss * pipValue);
double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
int digits = 0;
if(lotStep <= 0.01)
digits = 2;
else if(lotStep <= 0.1)
digits = 1;
lots = NormalizeDouble(lots, digits);
double minLots = MarketInfo(Symbol(), MODE_MINLOT);
if(lots < minLots)
lots = minLots;
double maxLots = MarketInfo(Symbol(), MODE_MAXLOT);
if(lots > maxLots)
lots = maxLots;
return (lots);
}
void CloseOpenPositions()
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(!IsThisChartOrder())
continue;
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
double price = Ask;
if(OrderType() == OP_BUY)
price = Bid;
OrderClose(OrderTicket(), OrderLots(), price, Slippage);
}
}
}
}
void SetPositions()
{
if(CloseOrdersNextDay)
CloseOpenPositions();
double lots = CalculateLotSize();
lastOrderTime = TimeCurrent();
double price = Ask;
int operation = OP_BUY;
if(Ask < dayHigh)
{
operation = OP_BUYSTOP;
price = dayHigh + Margin * Point;
}
double tp3 = 0.0;
if(!UseTrailingStopOnLastOrder)
tp3 = price + TakeProfit3 * Point;
OrderSendSafe(Symbol(), operation, lots, price, Slippage, price - StopLoss * Point, price + TakeProfit1 * Point, NULL, EAMagicNo, TimeCurrent() + D'1970.01.01 1' * OrderExpirationHours, Green);
OrderSendSafe(Symbol(), operation, lots, price, Slippage, price - StopLoss * Point, price + TakeProfit2 * Point, NULL, EAMagicNo, TimeCurrПоказано первые 50% кода (символов: 6686)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.