Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от serqww



Индикатор для МТ4 Комментариев 12
2023-01-16 16:08:58Рейтинг 0

Добавить функцию в Мультивалютный советник

Добрый день! Прошу добавить в настройки следующий функционал в мультивалютный советник. Надо чтобы в работе было ограниченное количество пар (из списка валютных пар) указанное в настройках. Появился сигнал по EURUSD и AUDUSD (в настройках указано что кол-во пар -2шт всего пар 9шт. в настройках.) сова открыла ордера по этим валютным парам и больше не открывает ордера по остальным валютным парам из списка пока не закроется одна из пар в работе. Спасибо!
MULT Sovetnik.mq 4 (0 Kb)
  • 0
  • Просмотров: 1127
  • 11 сентября 2024, 17:58
  • serqww
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Индикатор
Следующая запись в группе  
Индикатор корреляции универсальный для МТ5
07 сентября 2024
11 сентября 2024

Брокер для ваших роботов, 15 лет на рынке

Комментарии (18)

+
0
0 кб
avatar

  23  igrun Сообщений: 1639 - igrun

  • 11 сентября 2024, 17:59
+
0
//+------------------------------------------------------------------+
//| Mult.mq4 |
//| Copyright 2015, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2015, AM2»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict

extern string s=«Выбор валютной пары»;

extern string Symbol1 = «EURUSD»;
extern string Symbol2 = «GBPUSD»;
extern string Symbol3 = «AUDUSD»;
extern string Symbol4 = «NZDUSD»;
extern string Symbol5 = «AUDCAD»;
extern string Symbol6 = «EURAUD»;
extern string Symbol7 = «EURCAD»;
extern string Symbol8 = «EURGBP»;
extern string Symbol9 = «EURJPY»;

extern string ss=«Настройки советника»;

extern double Lots = 0.01; // лот
extern int TakeProfit = 200; // Тейк
extern int StopLoss = 100; // Лосс
extern int Slip = 30; // Проскальзывание
extern int Shift = 1; // бар индикатора
extern int Magic = 123; // Магик

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(Symbol1!=""){OpenPos(Symbol1); }
if(Symbol2!=""){OpenPos(Symbol2); }
if(Symbol3!=""){OpenPos(Symbol3); }
if(Symbol4!=""){OpenPos(Symbol4); }
if(Symbol5!=""){OpenPos(Symbol5); }
if(Symbol6!=""){OpenPos(Symbol6); }
if(Symbol7!=""){OpenPos(Symbol7); }
if(Symbol8!=""){OpenPos(Symbol8); }
if(Symbol9!=""){OpenPos(Symbol9); }
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,string symb)
{
int r=0,d=0;
color clr=Green;
double sl=0,tp=0, pp=0;
pp= MarketInfo(symb,MODE_POINT);
d =(int)MarketInfo(symb,MODE_DIGITS);

if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*pp,d);
if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*pp,d);
}

if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*pp,d);
if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*pp,d);
}

r=OrderSend(symb,type,Lots,NormalizeDouble(price,d),Slip,sl,tp,«Машки»,Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenPos(string symb)
{
double bid=0,ask=0;

if(CountTrades(symb)<1)
{
bid = MarketInfo(symb,MODE_BID);
ask = MarketInfo(symb,MODE_ASK);

//buy
if(iClose(symb,0,1)<iOpen(symb,0,1))
{
PutOrder(0,ask,symb);
}
//sell
if(iClose(symb,0,1)>iOpen(symb,0,1))
{
PutOrder(1,bid,symb);
}
}
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades(string symb)
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symb && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
avatar

  11  serqww Автор Сообщений: 63

  • 11 сентября 2024, 18:18
+
0
Добавил код советника. В предпросмотре пишет что файл весит 9кб. При опубликовании почему-то 0кб.
avatar

  11  serqww Автор Сообщений: 63

  • 11 сентября 2024, 18:20
+
0
скиньте в базу и сюда ссылку
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 12 сентября 2024, 08:23
+
0
avatar

  11  serqww Автор Сообщений: 63

  • 12 сентября 2024, 11:13
+
0
Появился сигнал по EURUSD и AUDUSD (в настройках указано что кол-во пар -2шт всего пар 9шт. в настройках.) сова открыла ордера по этим валютным парам и больше не открывает ордера по остальным валютным парам из списка


не совсем понятно чего вы хотите. чтобы торговал только по двум парам, уберите остальные в настройках
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 12 сентября 2024, 08:30
+
0
Я хочу чтобы в настройках была настройка по ограничению пар в работе. Руками конечно можно убрать, но это неудобно. Хотелось бы чтобы это было на автомате.
Еще раз В настройках указано 9 пар в Доп. функции что хочу (В настройках советника — «ограничение кол-во пар в работе» — 2(Указываем число пар))появился сигнал по EURUSD сова открыла ордер потом появился сигнал по AUDUSD сова открыла ордер и все после этого сова не открывает ордера по другим парам указанных в настройках. Далее по EURUSD ордер закрылся в работе осталась пара AUDUSD значит сове разрешено открыть ордер по любой из пар из списка как появится сигнал. Спасибо!
Редактирован: 12 сентября 2024, 11:59
avatar

  11  serqww Автор Сообщений: 63

  • 12 сентября 2024, 10:54
+
0
не ко мне. искусственный интеллект какой то
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 12 сентября 2024, 12:23
+
0
Эта возможность есть во многих сторонних советниках. Разве нет универсальной кодировки по кол-во символов в работе из указанного списка? Типа функции count для ограничения кол-во ордеров в работе.
avatar

  11  serqww Автор Сообщений: 63

  • 12 сентября 2024, 12:49
+
0
Нашел подобное может это Вам подскажет как встроить в советник

//+------------------------------------------------------------------+
//| Определение количества валютных пар из открытых ордеров |
//+------------------------------------------------------------------+
int SymbolsCount()
{
int count = 0;
string symbols[];
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() <= OP_SELL)
{
bool is_elem = false;
for(int j = 0; j < ArraySize(symbols); j++)
{
if(OrderSymbol() == symbols[j])
{
is_elem = true;
}
}
if(!is_elem || ArraySize(symbols) == 0)
{
ArrayResize(symbols,i + 1);
symbols[i] = OrderSymbol();
count++;
}
}
}
}
return(count);
}
avatar

  11  serqww Автор Сообщений: 63

  • 12 сентября 2024, 15:17
+
0
если выставлено 2 ордера возврат
если выставлено меньше двух ордеров узнать символ выставленного ордера, исключить из списка, по списку рекурсивно проверять сигнал
повторять до опупения *crazy* 
avatar

  6  srt Сообщений: 43

  • 12 сентября 2024, 13:47
+
0
Вот здесь тоже подобное обсуждается что хотел бы видеть в советнике
www.mql5.com/ru/forum/213667?ysclid=m0z9ib6j42695705929
avatar

  11  serqww Автор Сообщений: 63

  • 12 сентября 2024, 15:26
+
+1
попытался встроить функцию: www.opentraders.ru/downloads/3901/

avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 17 сентября 2024, 17:24
+
0
Спасибо! Тоже сам встроил данный код. Все работает! Можно чуть поправить чтобы по Magic проверял кол-во пар по которым открыты ордера?
Редактирован: 18 сентября 2024, 09:24
avatar

  11  serqww Автор Сообщений: 63

  • 18 сентября 2024, 09:19
+
0
если выставлено 2 ордера возврат
если выставлено меньше двух ордеров узнать символ выставленного ордера, исключить из списка, по списку рекурсивно проверять сигнал
повторять до опупения



ну вот это все подробно нужно описать, весь круг. а что значит повторять до опупения? что значит рекурсивно повторять сигнал? тоже подробно опишите
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 17 сентября 2024, 17:27
+
0
«что значит рекурсивно повторять сигнал?» — не повторять, а проверять <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 

Редактирован: 17 сентября 2024, 19:40
avatar

  6  srt Сообщений: 43

  • 17 сентября 2024, 19:39
+
0
попытался подробно описать:
MultVariant
avatar

  6  srt Сообщений: 43

  • 18 сентября 2024, 10:19
+
0
Можно чуть поправить чтобы по Magic проверял кол-во пар по которым открыты ордера?
avatar

  11  serqww Автор Сообщений: 63

  • 18 сентября 2024, 09:46

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий