ea2.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это торговый советник для MetaTrader 4, который отслеживает ценовые движения на текущем символе и таймфрейме. Он сравнивает текущую цену закрытия с ранее зафиксированной и при достижении заданного минимального ценового сдвига в указанном временном окне открывает позицию в направлении движения. Советник автоматически рассчитывает размер лота на основе баланса счёта и заданного процента риска, а также поддерживает установку TakeProfit, StopLoss и работу трейлинг-стопа.
Настройки программы
| Настройка | Описание |
|---|---|
| cSeconds | cSeconds — Временное окно в секундах, в течение которого проверяется достижение минимального ценового движения для открытия позиции. |
| MinPriceShot | MinPriceShot — Минимальное ценовое движение в пунктах, необходимое для срабатывания открытия позиции. |
| MaxOrdersCount | MaxOrdersCount — Максимальное количество одновременно открытых позиций советника. |
| RiskPercent | RiskPercent — Процент от текущего баланса, используемый для расчёта размера лота при открытии позиции. |
| TakeProfit | TakeProfit — Уровень фиксации прибыли в пунктах для каждой открытой позиции. |
| StopLoss | StopLoss — Уровень стоп-лосса в пунктах для каждой открытой позиции. |
| TrailingStop | TrailingStop — Расстояние трейлинг-стопа в пунктах, которое перемещает стоп-лосс вслед за движением цены в пользу позиции. |
| Slippage | Slippage — Максимально допустимое проскальзывание цены в пунктах при исполнении ордера. |
| BuyMagic | BuyMagic — Магический номер, присваиваемый покупательским позициям для их идентификации среди ордеров на счёте. |
| SellMagic | 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 = "";
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% кода (символов: 7992)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.