ea8.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea8.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный файл представляет собой торговый советник для платформы MetaTrader 4 (MQL4). Советник отслеживает изменение цены текущего инструмента и при достижении заданного минимального движения цены в указанный промежуток времени времени открывает сделки в направлении движения — покупку или продажу. Количество одновременно открытых ордеров ограничивается настраиваемым параметром.
Советник поддерживает фиксированный тейк-профит и стоп-лосс, а также функцию трейлинг-стопа для управления открытыми позициями. Объём сделки рассчитывается на основе баланса счёта и заданного процента риска. Для ордеров используются отдельные магические числа, позволяющие различать направления сделок.
Верхняя панель индикатора отображает информацию о прибыли за текущий и предыдущие два дня, а также текущий баланс счёта. В случае ошибок открытия ордера выводятся сообщения в журнал. Для описания ошибок используется внешняя библиотека stdlib.ex4.
Настройки программы
| Настройка | Описание |
|---|---|
| cSeconds | Временной интервал в секундах, в течение которого оценивается движение цены для принятия решения об открытии ордера. |
| MinPriceShot | Минимальное движение цены в пунктах, при достижении которого советник открывает новый ордер. |
| MaxOrdersCount | Максимальное количество одновременно открытых ордеров, управляемых советником. |
| RiskPercent | Процент риска от баланса счёта, используемый для расчёта объёма сделки. |
| TakeProfit | Значение тейк-профита в пунктах для открытых ордеров. При значении 0 тейк-профит не устанавливается. |
| StopLoss | Значение стоп-лосса в пунктах для открытых ордеров. При значении 0 стоп-лосс не устанавливается. |
| TrailingStop | Расстояние трейлинг-стопа в пунктах для автоматического перемещения стоп-лосса по ходу движения цены. |
| Slippage | Допустимое отклонение цены исполнения от запрашиваемой цены при открытии ордера. |
| BuyMagic | Магический номер для ордеров на покупку, используемый для идентификации и фильтрации сделок советника. |
| SellMagic | Магический номер для ордеров на продажу, используемый для идентификации и фильтрации сделок советника. |
Поиск по коду файла
#import "stdlib.ex4"
string ErrorDescription(int a0);
#import
extern int cSeconds = 14;
extern int MinPriceShot = 6;
extern int MaxOrdersCount = 1;
extern double RiskPercent = 10.0;
double Gd_104 = 0.1;
extern int TakeProfit = 20;
extern int StopLoss = 15;
extern int TrailingStop = 3;
extern int Slippage = 3;
extern int BuyMagic = 25;
extern int SellMagic = 65;
int G_datetime_136 = 0;
double G_close_140 = -1.0;
string Gs_148 = "TT scalper ea";
double Gd_156;
int init() {
// код доступен только после оплаты
}
int deinit() {
return (0);
}
int start() {
// код доступен только после оплаты
}
int f0_9(int A_cmd_0, int A_magic_4) {
int count_8 = 0;
for (int pos_12 = OrdersTotal() - 1; pos_12 >= 0; pos_12--) {
if (!OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES)) Print("OrderSelect error : " + ErrorDescription(GetLastError()));
else {
if (OrderSymbol() == Symbol()) {
if (OrderType() == A_cmd_0)
if (OrderMagicNumber() == A_magic_4) count_8++;
}
}
}
return (count_8);
}
void f0_3(double A_lots_0) {
int error_8;
double price_16 = 0;
double price_24 = 0;
RefreshRates();
while (IsTradeContextBusy()) Sleep(1000);
int datetime_32 = TimeCurrent();
int ticket_12 = OrderSend(Symbol(), OP_BUY, A_lots_0, Ask, Slippage, 0, 0, "", BuyMagic, 0, Blue);
if (ticket_12 == -1) {
while (ticket_12 == -1 && TimeCurrent() - datetime_32 < 60 && !IsTesting()) {
error_8 = GetLastError();
Print("Error Opening BUY. (" + error_8 + ")" + ErrorDescription(error_8));
if (error_8 == 148/* TRADE_TOO_MANY_ORDERS */) return;
Sleep(1000);
while (IsTradeContextBusy()) Sleep(1000);
Print("??????");
RefreshRates();
ticket_12 = OrderSend(Symbol(), OP_BUY, A_lots_0, Ask, Slippage, 0, 0, "", BuyMagic, 0, Blue);
}
if (ticket_12 == -1) {
error_8 = GetLastError();
Print("Error opening BUY. (" + error_8 + ")" + ErrorDescription(error_8));
}
}
if (ticket_12 != -1) {
Print("Opened BUY for " + Symbol() + " " + Period() + " Lots " + DoubleToStr(A_lots_0, 2) + "!");
if (OrderSelect(ticket_12, SELECT_BY_TICKET, MODE_TRADES)) {
if (StopLoss != 0 || TakeProfit != 0) {
if (TakeProfit > 0) price_16 = f0_8(0);
if (StopLoss > 0) price_24 = Ask - StopLoss * Gd_156 - (Ask - Bid);
price_16 = f0_2(price_16);
price_24 = f0_2(price_24);
int status=OrderModify(ticket_12, OrderOpenPrice(), price_24, price_16, 0, Green);
}
}
}
}
void f0_5(double A_lots_0) {
int error_8;
double price_16 = 0;
double price_24 = 0;
RefreshRates();
while (IsTradeContextBusy()) Sleep(1000);
int datetime_32 = TimeCurrent();
int ticket_12 = OrderSend(Symbol(), OP_SELL, A_lots_0, Bid, Slippage, 0, 0, "", SellMagic, 0, Red);
if (ticket_12 == -1) {
while (ticket_12 == -1 && TimeCurrent() - datetime_32 < 60 && !IsTesting()) {
error_8 = GetLastError();
Print("Error opening SELL. (" + error_8 + ")" + ErrorDescription(error_8));
if (error_8 == 148/* TRADE_TOO_MANY_ORDERS */) return;
Sleep(1000);
while (IsTradeContextBusy()) Sleep(1000);
Print("??????");
RefreshRates();
ticket_12 = OrderSend(Symbol(), OP_SELL, A_lots_0, Bid, Slippage, 0, 0, "", SellMagic, 0, Red);
}
if (ticket_12 == -1) {
error_8 = GetLastError();
Print("Error opening SELL. (" + error_8 + ")" + ErrorDescription(error_8));
}
}
if (ticket_12 != -1) {
Print("Opened SELL for " + Symbol() + " " + Period() + " Lots " + DoubleToStr(A_lots_0, 2) + "!");
if (OrderSelect(ticket_12, SELECT_BY_TICKET, MODE_TRADES)) {
if (StopLoss != 0 || TakeProfit != 0) {
Показано первые 50% кода (символов: 8003)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.