10pipsonceadayoppositelastnhourtrend.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «10pipsonceadayoppositelastnhourtrend.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой советник для платформы MetaTrader 4, написанный на языке MQL4. Он открывает одну торговую позицию в день в заданный пользователем час, выбирая направление противоположное тренду, наблюдаемому на часовом графике H1 за последние N часов.
Советник поддерживает как фиксированный размер лота, так и расчёт лота на основе риска. Настраиваются стоп-лосс, тейк-профит и трейлинг-стоп. Доступны множители лота для последовательных убыточных сделок, позволяющие корректировать объём позиции на основе результатов последних пяти исторических ордеров.
Также реализованы функции управления жизненным циклом позиций: автоматическое закрытие ордеров старше заданного возраста, закрытие всех открытых позиций и модификация существующих ордеров через трейлинг-стоп. Торговля выполняется один раз на каждом новом баре.
Настройки программы
| Настройка | Описание |
|---|---|
| if 0, uses maximumrisk, else uses only this while trading (FIXLOT) | Фиксированный лот — Фиксированный лот для торговли; если равен 0, используется расчёт на основе максимального риска |
| minimum lot (MINLOTS) | Минимальный лот — Минимально допустимый размер лота |
| maximum lot (MAXLOTS) | Максимальный лот — Максимально допустимый размер лота |
| maximum risk, if FIXLOT = 0 (MAXIMUMRISK) | Максимальный риск — Максимальный риск в процентах от свободного маржа, используется при FIXLOT = 0 |
| max slippage alowed (SLIPPAGE) | Проскальзывание — Максимально допустимое проскальзывание цены при исполнении ордера |
| time when position should be oppened (TRADINGHOUR) | Торговый час — Час суток, в который советник открывает позицию |
| amount of hours to check price difference to see a "trend" (HOURSTOCHECKTREND) | Часы для проверки тренда — Количество часов для проверки разницы цен и определения тренда на графике H1 |
| max age of position - closes older positions (ORDERMAXAGE) | Максимальный возраст ордера — Максимальный возраст позиции в секундах; позиции старше этого значения закрываются автоматически |
| multiply lots when position -1 was loss (FIRSTMULTIPLICATOR) | Первый множитель — Множитель лота, применяемый, если последний исторический ордер был убыточным |
| multiply lots when position -2 was loss (SECONDMULTIPLICATOR) | Второй множитель — Множитель лота, применяемый, если второй последний исторический ордер был убыточным |
| multiply lots when position -3 was loss (THIRDMULTIPLICATOR) | Третий множитель — Множитель лота, применяемый, если третий последний исторический ордер был убыточным |
| multiply lots when position -4 was loss (FOURTHMULTIPLICATOR) | Четвёртый множитель — Множитель лота, применяемый, если четвёртый последний исторический ордер был убыточным |
| multiply lots when position -5 was loss (FIFTHMULTIPLICATOR) | Пятый множитель — Множитель лота, применяемый, если пятый последний исторический ордер был убыточным |
| SL (STOPLOSS) | Стоп-лосс — Уровень стоп-лосса в пунктах |
| TRAILINGSTOP | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах для автоматической модификации позиции |
| TP (TAKEPROFIT) | Тейк-профит — Уровень тейк-профита в пунктах |
Поиск по коду файла
#define MAGICMA 0
string SYMBOL = "EURUSD";
int TIMEFRAME = 0;
int MAXORDERS = 1;
int TRADINGDAYHOURS[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
extern double FIXLOT = 0.1; //if 0, uses maximumrisk, else uses only this while trading
extern double MINLOTS = 0.1; //minimum lot
extern double MAXLOTS = 5; //maximum lot
extern double MAXIMUMRISK = 0.05; //maximum risk, if FIXLOT = 0
extern int SLIPPAGE = 3; //max slippage alowed
extern int TRADINGHOUR = 7; //time when position should be oppened
extern int HOURSTOCHECKTREND = 30; //amount of hours to check price difference to see a "trend"
extern int ORDERMAXAGE = 75600; //max age of position - closes older positions
extern int FIRSTMULTIPLICATOR = 4; //multiply lots when position -1 was loss
extern int SECONDMULTIPLICATOR = 2; //multiply lots when position -2 was loss
extern int THIRDMULTIPLICATOR = 5; //multiply lots when position -3 was loss
extern int FOURTHMULTIPLICATOR = 5; //multiply lots when position -4 was loss
extern int FIFTHMULTIPLICATOR = 1; //multiply lots when position -5 was loss
extern double STOPLOSS = 50; //SL
extern double TRAILINGSTOP = 0; //
extern double TAKEPROFIT = 10; //TP
datetime LastBarTraded = 0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
void start()
{
// код доступен только после оплаты
}
bool TradeAllowed()
{
if(LastBarTraded == Time[0])
return(false);
if(iVolume(SYMBOL, PERIOD_H1, 0) > 1)
return(false);
if(!IsTradeAllowed())
return(false);
if(OrdersTotal() >= MAXORDERS)
return(false);
if(!IsTradingHour())
{
CloseAllPositions();
return(false);
}
return(true);
}
bool IsTradingHour()
{
int i;
bool istradinghour = false;
for(i = 0; i < ArraySize(TRADINGDAYHOURS); i++)
{
if(TRADINGDAYHOURS[i] == Hour())
{
istradinghour = true;
break;
}
}
return(istradinghour);
}
double GetLots()
{
double lot, result;
if(FIXLOT == 0)
lot = NormalizeDouble(AccountFreeMargin() * MAXIMUMRISK / 1000.0, 1);
else
lot = FIXLOT;
OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit() < 0)
lot = lot * FIRSTMULTIPLICATOR;
else
{
OrderSelect(OrdersHistoryTotal() - 2, SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit() < 0)
lot = lot * SECONDMULTIPLICATOR;
else
{
OrderSelect(OrdersHistoryTotal() - 3, SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit() < 0)
lot = lot * THIRDMULTIPLICATOR;
else
{
OrderSelect(OrdersHistoryTotal() - 4, SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit() < 0)
lot = lot * FOURTHMULTIPLICATOR;
else
{
OrderSelect(OrdersHistoryTotal() - 5, SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit() < 0)
lot = lot * FIFTHMULTIPLICATOR;
}
}
}
}
if(lot > NormalizeDouble(AccountFreeMargin() / 1000.0, 1))
lot = NormalizeDouble(AccountFreeMargПоказано первые 50% кода (символов: 4900)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.