Как то делал эксперт мультивалютный. Работает как часики. До сих пор.
Мож пригодится код? Вот так открывался :
static int prevtime=0;// в глобальные if(Time[0]==prevtime) return(0);//ждём появления нового бара prevtime = Time[0]; //если появился новый бар - //------------- .. ... if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)>0 && AccountFreeMarginCheck(Symbol(),OP_SELL,Lots)>0 && IsTradeAllowed()==true ) {//если размер депозита позволяет нам открыть позицию и торговый поток свободен //===================ПОКУПКА=================================================== if ( условие покупки ) { //ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ if (NumberOfPositions("AUDJPY", OP_BUY, Magic)==0 && AUDJPY) ticket=OrderSend("AUDJPY",OP_BUY, Lots, MarketInfo("AUDJPY",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY AUDJPY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("AUDCAD", OP_BUY, Magic)==0 && AUDCAD) ticket=OrderSend("AUDCAD",OP_BUY, Lots, MarketInfo("AUDCAD",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY AUDCAD #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("AUDUSD", OP_BUY, Magic)==0 && AUDUSD) ticket=OrderSend("AUDUSD",OP_BUY, Lots, MarketInfo("AUDUSD",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY AUDUSD #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("CADJPY", OP_BUY, Magic)==0 && CADJPY) ticket=OrderSend("CADJPY",OP_BUY, Lots, MarketInfo("CADJPY",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY CADJPY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("NZDJPY", OP_BUY, Magic)==0 && NZDJPY) ticket=OrderSend("NZDJPY",OP_BUY, Lots, MarketInfo("NZDJPY",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY NZDJPY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("GBPUSD", OP_BUY, Magic)==0 && GBPUSD) ticket=OrderSend("GBPUSD",OP_BUY, Lots, MarketInfo("GBPUSD",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY GBPUSD #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("EURUSD", OP_BUY, Magic)==0 && EURUSD) ticket=OrderSend("EURUSD",OP_BUY, Lots, MarketInfo("EURUSD",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY EURUSD #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("NZDUSD", OP_BUY, Magic)==0 && NZDUSD) ticket=OrderSend("NZDUSD",OP_BUY, Lots, MarketInfo("NZDUSD",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY NZDUSD #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("EURCHF", OP_BUY, Magic)==0 && EURCHF) ticket=OrderSend("EURCHF",OP_BUY, Lots, MarketInfo("EURCHF",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY EURCHF #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } if (NumberOfPositions("GBPCHF", OP_BUY, Magic)==0 && GBPCHF) ticket=OrderSend("GBPCHF",OP_BUY, Lots, MarketInfo("GBPCHF",MODE_ASK), 3, 0, 0, "EXPERT", Magic, 0, Violet); if(ticket < 0) {Print("Ошибка открытия ордера BUY GBPCHF #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } }//if (УСЛОВИЯ ПОКУПКИ) ...
Использовал при задании условия функцию И.Кима -
(вставляется вне ф-и СТАРТ)
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru/ | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает количество позиций. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfPositions(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), kp=0; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) kp++; }}}}} return(kp); }
О, нашел свою ошибку, надо было цены Ask Bid запрашивать с тех валют ))).
Всем спасибо.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Написал советника, который должен выставлять множество ордеров по разным валютам. Кинул на график AUDUSD, советник открыл один ордер по этой валюте и больше ни одного не открыл, по другим валютам. Это демо-счет в Альпари. Билд МТ 220. Что интересно, функция Print() в лог ничего не пишет.
Подскажите, что я неправильно сделал?
Вот код советника (код целиком не вставляется, говорит текс больше допустимого размера):
Вот что в логе:
13:30:38 '1456798': login
13:31:22 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully
13:31:34 '1456798': instant order sell 0.10 AUDUSD at 0.64106 sl: 0.00000 tp: 0.00000
13:31:34 '1456798': request was accepted by server
13:31:34 '1456798': requote 0.64085 / 0.64115 for open sell 0.10 AUDUSD at 0.64106 sl: 0.00000 tp: 0.00000
13:31:40 '1456798': instant order sell 0.10 AUDUSD at 0.64095 sl: 0.00000 tp: 0.00000
13:31:40 '1456798': request was accepted by server
13:31:40 '1456798': request in process
13:31:40 '1456798': order was opened : #39719819 sell 0.10 AUDUSD at 0.64095 sl: 0.00000 tp: 0.00000
13:40:54 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully
13:42:01 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully
13:46:00 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully
13:47:12 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully
13:49:54 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully
13:51:21 Expert Open_Sell_multi_v1 AUDUSD,H1: loaded successfully