j_ea_test9_sh.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «j_ea_test9_sh.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный файл представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник использует два технических индикатора — Stochastic и MACD — для формирования торговых сигналов на покупку и продажу.
Открытие позиции происходит при совпадении сигналов: для покупки индикатор MACD должен быть выше нуля, а Stochastic — пересекать сигнальную линию снизу вверх. Для продажи условия зеркальны. Размер лота рассчитывается на основе собственного капитала аккаунта и параметра риска.
Советник включает механизм управления рисками: стоп-лосс задаётся в пунктах от цены входа, а также проверка минимального уровня собственного капитала. При недостаточном капитале и отсутствии открытых позиций торговля приостанавливается. Также реализована временная фильтрация, ограничивающая количество сделок в рамках одного таймфрейма.
Внутренняя логика советника отслеживает открытые ордера по магическому числу и комментарию, позволяет закрывать позиции при выполнении условий разворота индикаторов и при необходимости корректировать параметры текущих позиций.
Настройки программы
| Настройка | Описание |
|---|---|
| Author_QQ | Автор QQ — Текстовый параметр, задающий авторский QQ-идентификатор, используемый в качестве маркировки торговых операций. |
| Author_email | Автор Email — Текстовый параметр, задающий авторский адрес электронной почты, используемый в качестве маркировки торговых операций. |
| MIN_EQ | Минимальный капитал — Числовой параметр, задающий минимальный уровень собственного капитала аккаунта. При значении ниже этого порога и отсутствии открытых позиций торговля приостанавливается. |
| STOPLOST | Стоп-лосс в пунктах — Целочисленный параметр, задающий расстояние стоп-лосса от цены входа в пунктах. |
| Lots | Размер лота — Числовой параметр, задающий начальный размер лота. Может быть пересчитан автоматически на основе собственного капитала и параметра риска. |
Поиск по коду файла
#include <stdlib.mqh>
#define COMM "EA_Test"
extern string Author_QQ = "10144229";
extern string Author_email = "**************";
extern string Author_blog = "";
extern double MIN_EQ = 300;
extern int STOPLOST = 30;
double RISK = 1;
int MAGIC = 19003;
int last_trade_period = 0;
int last_trade_type = -100;
double last_lots=0;
int MIN_TRADE_TIME=0;
extern double Lots = 0;
bool buy_close() {
double k = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 1);
double kp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 2);
double d = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 1);
double dp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 2);
return ( k<d );
}
bool sell_close() {
double k = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 1);
double kp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 2);
double d = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 1);
double dp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 2);
return ( k>d );
}
bool buy_add() {
return (false);
}
bool sell_add() {
return (false);
}
bool buy_ready() {
return ( iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1)>0 );
}
bool sell_ready() {
return ( iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1)<0 );
}
bool buy_ok() {
double k = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 1);
double kp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 2);
double d = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 1);
double dp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 2);
return (kp<dp && k>d);
}
bool sell_ok() {
double k = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 1);
double kp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_MAIN, 2);
double d = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 1);
double dp = iStochastic(Symbol(), 0, 9, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 2);
return (kp>dp && k<d);
}
int init() {
// код доступен только после оплаты
}
int deinit() {
return (0);
}
int start() {
// код доступен только после оплаты
}
if ( AccountEquity()<MIN_EQ && ea_orders(COMM, MAGIC)==0 ) {
Print("[", COMM, "]BUSINESS STOP.");
return(0);
}
double p;
int next, cnt, action=0;
if ( buy_ready() && buy_ok() ) {
action = 10;
} else if ( sell_ready() && sell_ok() ) {
action = -10;
}
if (RISK>0) Lots = NormalizeDouble(AccountEquity()/(20000*RISK), 1);
if (Lots<0.1) Lots = 0.1;
cnt = CurTime() / MIN_TRADE_TIME;
if (ea_orders(COMM, MAGIC)==0 && cnt!=last_trade_period ) {
if ( action == 10 ) {
p = MathMin(Low[0], Low[1])-STOPLOST*Point;
if (ea_order_send(COMM, OP_BUY, Lots, Ask, 1, p, 0, MAGIC)) {
Print("??????");
last_trade_period = CurTime() / MIN_TRADE_TIME;
last_trade_type = OP_BUY;
last_lots = LПоказано первые 50% кода (символов: 4927)
Что вы получите после оплаты
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? Адрес передаётся вместе с заказом в магазин и сохраняется для связи заказа с оплатой. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.