ademola.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ademola.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Ademola — торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник работает в режиме обработки событий start и размещает отложенные ордера BUYSTOP и SELLSTOP на основе уровней, рассчитываемых из дневного бара открытия. Включена временная фильтрация, позволяющая запускать торговлю только в заданный час.
Настройки программы
| Настройка | Описание |
|---|---|
| ExpertID | Идентификатор эксперта — Целое число, используемое как основа для формирования уникального идентификатора ордеров (magic number) в сочетании с кодом символа. |
| TakeProfit | Тейк-профит — Числовой параметр, задающий уровень фиксации прибыли для размещаемых ордеров. |
| useStopLoss | Использовать стоп-лосс — Переключатель, включающий или отключающий установку стоп-лосса по размещаемым ордерам. |
| StopLoss | Стоп-лосс — Числовой параметр, задающий уровень стоп-лосса для размещаемых ордеров. |
| Lots | Объём — Числовой параметр, определяющий базовый размер торгового объёма в лотах. |
| Slippage | Проскальзывание — Целое число, задающее максимально допустимое отклонение цены при открытии ордера в пунктах. |
| useTimeFilter | Использовать фильтр времени — Переключатель, включающий или отключающий временное ограничение для запуска торговых операций. |
| startTradeTime | Время начала торговли — Целое число, задающее час суток, в который советник активирует размещение ордеров при включённом фильтре времени. |
| UseMoneyManagement | Использовать управление денежными средствами — Переключатель, включающий автоматический пересчёт размера лота на основе свободного маржи и заданного риска. |
| risk in percentage % (10% of risk in this case) (Risk) | Риск — Целое число, определяющее процент риска от свободного маржи, используемый при автоматическом расчёте размера лота. |
Поиск по коду файла
#include <stderror.mqh>
#include <stdlib.mqh>
extern int ExpertID = 108888;
extern double TakeProfit=40;
extern bool useStopLoss = true;
extern double StopLoss=20;
extern double Lots=0.01;
extern int Slippage = 3;
extern bool useTimeFilter = true;
extern int startTradeTime = 1;
extern bool UseMoneyManagement = true;
extern bool AccountIsMicro = true;
extern int Risk = 10; // risk in percentage % (10% of risk in this case)
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int MagicNumber = MakeMagicNumber();
if(UseMoneyManagement==true) {
Lots = DefineLotSize(); //Adjust the lot size total
}
int order_type = -1;
double tp, sl, price = 0.0;
if (TimeHour(TimeCurrent()) == startTradeTime) {
datetime time = StrToTime(+Year()+"."+Month()+"."+Day()+" 00:00");
for(int i=1; i<=Bars; i++) {
if (Time[i] == time) {
double day_O = Open[i];
double day_H = High[i];
double day_L = Low[i];
double day_C = Close[i];
break;
}
}
ObjectDelete("Day open");
ObjectDelete("X");
ObjectDelete("X1");
ObjectDelete("X2");
ObjectDelete("X3");
ObjectDelete("X4");
if(!ObjectCreate("Day open", OBJ_VLINE, 0, time, Ask)) {
Alert("Error: Day open #",ErrorDescription(GetLastError()));
} else {
ObjectSet("Day open", OBJPROP_STYLE, STYLE_DASH);
ObjectSet("Day open", OBJPROP_COLOR, Red);
double x_line=NormalizeDouble((day_H+day_L)/2, Digits);
if(!ObjectCreate("X", OBJ_HLINE, 0, time, x_line)) {
Alert("Error: LINE X #",ErrorDescription(GetLastError()));
} else {
ObjectSet("X", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("X", OBJPROP_COLOR, Green);
}
double x1_line=NormalizeDouble(((day_H+day_L)/2)+40*Point, Digits);
if(!ObjectCreate("X1", OBJ_HLINE, 0, time, x1_line)) {
Alert("Error: LINE X1 #",ErrorDescription(GetLastError()));
} else {
ObjectSet("X1", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("X1", OBJPROP_COLOR, Purple);
}
double x2_line=NormalizeDouble(((day_H+day_L)/2)+80*Point, Digits);
if(!ObjectCreate("X2", OBJ_HLINE, 0, time, x2_line)) {
Alert("Error: LINE X2 #",ErrorDescription(GetLastError()));
} else {
ObjectSet("X2", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("X2", OBJPROP_COLOR, Purple);
}
double x3_line=NormalizeDouble(((day_H+day_L)/2)-40*Point, Digits);
if(!ObjectCreate("X3", OBJ_HLINE, 0, time, x3_line)) {
Alert("Error: LINE X3 #",ErrorDescription(GetLastError()));
} else {
ObjectSet("X3", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("X3", OBJPROP_COLOR, Red);
}
double x4_line=NormalizeDouble(((day_H+day_L)/2)-80*Point, Digits);
if(!ObjectCreate("X4", OBJ_HLINE, 0, time, x4_line)) {
Alert("Error: LINE X4 #",ErrorDescription(GetLastError()));
} else {
ObjectSet("X4", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("X4", OBJPROP_COLOR, Red);
}
}
if (CountLongs(MagicNumber) == 0 || CountShorts(MagicNumber) == 0) {
price = x1_line;
tp = x2_line;
if (useStopLoss) {
sl = x4_line;
} else {
sl = 0;
}
int ticket_buy = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,Slippage,sl,tp,"Ademola",MagicNumber,0,CLR_NONE);
if(ticket_buy>0)
{
if(OrderSelect(ticket_buy,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
} else {
Alert("Ademola Error opening order : ",ErrorDescription(GetLastError()));
return(0);
} // fim ticket_buy
price = x3_line;
tp = x4_line;
if (useStopLoss) {
sl = x2_line;
} else {
sl = 0;
}
int ticket_sell = OrderSend(Symbol(),OP_SELLSTOP,Lots,price,Slippage,sl,tp,"Ademola",MagicNumber,0,CLR_NONE);
if(ticket_sell>0)
{
Показано первые 50% кода (символов: 6340)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.