easytrendsys.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «easytrendsys.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный скрипт представляет собой торгового робота (Expert Advisor) для платформы MetaTrader 4. Он использует сигналы внешнего индикатора "Signals" на двух таймфреймах — 60 минут и 5 минут — для принятия решений об открытии сделок. При совпадении первого и второго сигналов робот открывает ордера на покупку или продажу.
Робот поддерживает два магических номера для идентификации ордеров и реализует несколько защитных механизмов: трейлинг-стоп, безубыточность (break even), фиксацию прибыли (тейкпрофит) и стоп-лосс. Также доступен режим управления рисками с автоматическим расчётом размера лота на основе процента от свободного маржинального баланса.
Функция CalculateCurrentOrders отслеживает текущие открытые позиции, а функции MoveTrailingStop и MoveBreakEven корректируют параметры активных ордеров. Закрытие позиций выполняется по сигналам индикатора "Signals" при подтверждении на втором таймфрейме.
Настройки программы
| Настройка | Описание |
|---|---|
| S1 | Разделитель Magic Number — Текстовый разделитель секции магических номеров. |
| MAGICMA1 | Магический номер 1 — Первый магический номер для идентификации ордеров, открытых роботом. |
| MAGICMA2 | Магический номер 2 — Второй магический номер для идентификации ордеров, открытых роботом. |
| S2 | Разделитель настроек сигналов — Текстовый разделитель секции настроек сигналов. |
| RISK | Параметр риска — Параметр риска, передаваемый во внешний индикатор Signals для расчёта сигналов. |
| S3 | Разделитель настроек лота — Текстовый разделитель секции настроек лота. |
| lot size (Lot) | Размер лота — Размер лота для открытия ордеров. |
| risk management (RiskMM) | Управление риском — Переключатель управления рисками — при включении размер лота рассчитывается автоматически на основе процента от свободного маржинального баланса. |
| risk percentage (RiskPercent) | Процент риска — Процент риска от свободного маржинального баланса для автоматического расчёта размера лота. |
| S4 | Разделитель настроек TP/SL/BE — Текстовый разделитель секции настроек TP, SL и BE. |
| takeprofit (TP) | Тейкпрофит — Тейкпрофит в пунктах для открытых ордеров. |
| stoploss (SL) | Стоп-лосс — Стоп-лосс в пунктах для открытых ордеров. |
| break even (BreakEven) | Безубыточность — Уровень безубыточности — при достижении указанной прибыли в пунктах стоп-лосс перемещается в точку безубыточности. |
| S5 | Разделитель настроек трейлинга — Текстовый разделитель секции настроек трейлинга. |
| trailing stop (TrailingStop) | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах — дистанция от цены до стоп-лосса при активном трейлинге. |
| trailing step (TrailingStep) | Шаг трейлинга — Шаг трейлинг-стопа в пунктах — интервал перемещения стоп-лосса. |
Поиск по коду файла
extern string S1="---------------- Magic Number";
extern int MAGICMA1=34268732;
extern int MAGICMA2=32685632;
extern string S2="---------------- Signals Settings";
extern int RISK=4;
extern string S3="---------------- Lot Settings";
extern double Lot = 0.1; //---------------------lot size
extern bool RiskMM=false; //---------------------risk management
extern double RiskPercent=1; //------------------risk percentage
extern string S4="---------------- TP&SL&BE Settings";
extern double TP = 100; //----------------------takeprofit
extern double SL = 50; //---------------------stoploss
extern int BreakEven=60;//-----------------------break even
extern string S5="---------------- Trailing Settings";
extern int TrailingStop=60;//--------------------trailing stop
extern int TrailingStep=20;//--------------------trailing step
bool BuySignal=false, SellSignal=false;
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGICMA1 || OrderMagicNumber()==MAGICMA2))
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
if(buys>0) return(buys);
else return(-sells);
}
double Signals(int TF, int mode, int shift)
{
return (iCustom(Symbol(), TF, "Signals", RISK, mode, shift));
}
int FirstSignal()
{
double SignalsBuy_1 = Signals(60,0,1);
double SignalsBuy_2 = Signals(60,0,2);
double SignalsSell_1 = Signals(60,1,1);
double SignalsSell_2 = Signals(60,1,2);
if (SignalsBuy_2==0 && SignalsBuy_1!=0) return(1);
if (SignalsSell_2==0 && SignalsSell_1!=0) return(-1);
}
int SecondSignal()
{
double SignalsBuy5_1 = Signals(5,0,1);
double SignalsBuy5_2 = Signals(5,0,2);
double SignalsSell5_1 = Signals(5,1,1);
double SignalsSell5_2 = Signals(5,1,2);
if (SignalsBuy5_2==0 && SignalsBuy5_1!=0) return (1);
if (SignalsSell5_2==0 && SignalsSell5_1!=0) return (-1);
}
void start()
{
// код доступен только после оплаты
}
void CheckForClose()
{
for( int i = 0; i < OrdersTotal(); i++ )
{
if( OrderSelect(i, SELECT_BY_POS) == -1 ) { continue; }
if( OrderMagicNumber() != MAGICMA2 || OrderSymbol() != Symbol() ) { continue; }
if( OrderType() == OP_BUY )
{
OrderClose(OrderTicket(), OrderLots(), Bid, 2, Blue);
}
else if( OrderType() == OP_SELL )
{
OrderClose(OrderTicket(), OrderLots(), Ask, 2, Red);
}
}
}
void MoПоказано первые 50% кода (символов: 5337)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.