ТОлько один ордер

 
Написал вот эксперта! торгует хорошо, но вот проблема одна большая! работает он по 12 валютным парам а торгует всегда только одним ордером...если открывается на одной паре, на другой уже не открывает. ..ктонибуть знает в чем проблема?
 
А торгует на той паре на которую график повешен ?

еще может быть в коде стоит анализ НА РАЗМЕР MM
либо количество ордеров ограничено

вот пример кода - тестовый - учебный! требует переосмысления
ставит СРАЗУ ПО всем парам
работает!

static string sCurrency [5]; static int OP; static int Order_ID; static double mAsk; static double mBid; static string sSymbol; static int ErrCod; void init() { sCurrency [ 1] = "EURUSD"; sCurrency [ 2] = "USDCHF"; sCurrency [ 3] = "USDJPY"; sCurrency [ 4] = "GBPUSD"; sCurrency [ 5] = "AUDUSD"; OP = 0; } void start() { if (OP <= 3) { OP = OP + 1; ОткрытьПозицию( OP_SELL , 1 ,""); ОткрытьПозицию( OP_BUY , 2 ,""); ОткрытьПозицию( OP_BUY , 3 ,""); ОткрытьПозицию( OP_SELL , 4 ,""); } } int ОткрытьПозицию( int pTypeOper,int pCur ,string psComment) { sSymbol = sCurrency [ pCur ]; ErrCod = GetLastError(); // проверим ВДРУГ КОД НЕ ПУСТ! ErrCod = 0; // пока количество 1 начиная с 1 элемента ! в 0 сидит кол ордеров по валюте // mPoint = sCurrency_POINT [pCur]; // и т д mAsk = MarketInfo( sSymbol, MODE_ASK); // получаем курс этой самой ВАЛЮТЫ /* ErrCod = GetLastError(); if (ErrCod != 0) { Print( "ASK "+sSymbol+" "+mAsk+" "+msgErrors(ErrCod)) ; return(-1); } */ mBid = MarketInfo( sSymbol, MODE_BID ); // получаем курс этой самой ВАЛЮТЫ /* ErrCod = GetLastError(); { Print( "BID "+sSymbol+" "+mBid+" "+msgErrors(ErrCod)) ; return(-1); } */ // SLIPPAGE допусти 10 - 20 !!! для гарантии :)) if ( pTypeOper == OP_SELL ) { Order_ID = OrderSend(sSymbol, pTypeOper , 0.1 , mBid, 20 , 0,0, psComment, 0 , 0 ,Red); ErrCod = GetLastError(); if (ErrCod != 0) { Print("SELL "+ msgErrors(ErrCod)) ; return(-1); } } if ( pTypeOper == OP_BUY ) { Order_ID = OrderSend(sSymbol, pTypeOper , 0.1 , mAsk, 20 , 0,0, psComment, 0 , 0 ,Red); ErrCod = GetLastError(); if (ErrCod != 0) { Print("BUY "+ msgErrors(ErrCod)) ; return(-1); } } ErrCod = 0; return( Order_ID); } string msgErrors(int error_code) { string strError; switch(error_code) { case 0: strError=error_code+" Нет ошибки "; break; case 1: strError=error_code+" Нет ошибки, но результат неизвестен "; break; case 2: strError=error_code+" Общая ошибка "; break; case 3: strError=error_code+" Неправильные параметры "; break; case 4: strError=error_code+" Торговый сервер занят "; break; case 5: strError=error_code+" Старая версия клиентского терминала "; break; case 6: strError=error_code+" Нет связи с торговым сервером "; break; case 7: strError=error_code+" Недостаточно прав "; break; case 8: strError=error_code+" Слишком частые запросы "; break; case 9: strError=error_code+" Недопустимая операция нарушающая функционирование сервера "; break; case 64: strError=error_code+" Счет заблокирован "; break; case 65: strError=error_code+" Неправильный номер счета "; break; case 128: strError=error_code+" Истек срок ожидания совершения сделки "; break; case 129: strError=error_code+" Неправильная цена "; break; case 130: strError=error_code+" Неправильные стопы "; break; case 131: strError=error_code+" Неправильный объем "; break; case 132: strError=error_code+" Рынок закрыт "; break; case 133: strError=error_code+" Торговля запрещена "; break; case 134: strError=error_code+" Недостаточно денег для совершения операции "; break; case 135: strError=error_code+" Цена изменилась "; break; case 136: strError=error_code+" Нет цен "; break; case 137: strError=error_code+" Брокер занят "; break; case 138: strError=error_code+" Новые цены "; break; case 139: strError=error_code+" Ордер заблокирован и уже обрабатывается "; break; case 140: strError=error_code+" Разрешена только покупка "; break; case 141: strError=error_code+" Слишком много запросов "; break; case 145: strError=error_code+" Модификация запрещена, так как ордер слишком близок к рынку "; break; case 146: strError=error_code+" Подсистема торговли занята "; break; case 147: strError=error_code+" Использование даты истечения ордера запрещено брокером "; break; case 4000: strError=error_code+" Нет ошибки "; break; case 4001: strError=error_code+" Неправильный указатель функции "; break; case 4002: strError=error_code+" Индекс массива - вне диапазона "; break; case 4003: strError=error_code+" Нет памяти для стека функций "; break; case 4004: strError=error_code+" Переполнение стека после рекурсивного вызова "; break; case 4005: strError=error_code+" На стеке нет памяти для передачи параметров "; break; case 4006: strError=error_code+" Нет памяти для строкового параметра "; break; case 4007: strError=error_code+" Нет памяти для временной строки "; break; case 4008: strError=error_code+" Неинициализированная строка "; break; case 4009: strError=error_code+" Неинициализированная строка в массиве "; break; case 4010: strError=error_code+" Нет памяти для строкового массива "; break; case 4011: strError=error_code+" Слишком длинная строка "; break; case 4012: strError=error_code+" Остаток от деления на ноль "; break; case 4013: strError=error_code+" Деление на ноль "; break; case 4014: strError=error_code+" Неизвестная команда "; break; case 4015: strError=error_code+" Неправильный переход "; break; case 4016: strError=error_code+" Неинициализированный массив "; break; case 4017: strError=error_code+" Вызовы DLL не разрешены "; break; case 4018: strError=error_code+" Невозможно загрузить библиотеку "; break; case 4019: strError=error_code+" Невозможно вызвать функцию "; break; case 4020: strError=error_code+" Вызовы внешних библиотечных функций не разрешены "; break; case 4021: strError=error_code+" Недостаточно памяти для строки, возвращаемой из функции "; break; case 4022: strError=error_code+" Система занята "; break; case 4050: strError=error_code+" Неправильное количество параметров функции "; break; case 4051: strError=error_code+" Недопустимое значение параметра функции "; break; case 4052: strError=error_code+" Внутренняя ошибка строковой функции "; break; case 4053: strError=error_code+" Ошибка массива "; break; case 4054: strError=error_code+" Неправильное использование массива-таймсерии "; break; case 4055: strError=error_code+" Ошибка пользовательского индикатора "; break; case 4056: strError=error_code+" Массивы несовместимы "; break; case 4057: strError=error_code+" Ошибка обработки глобальныех переменных "; break; case 4058: strError=error_code+" Глобальная переменная не обнаружена "; break; case 4059: strError=error_code+" Функция не разрешена в тестовом режиме "; break; case 4060: strError=error_code+" Функция не подтверждена "; break; case 4061: strError=error_code+" Ошибка отправки почты "; break; case 4062: strError=error_code+" Ожидается параметр типа string "; break; case 4063: strError=error_code+" Ожидается параметр типа integer "; break; case 4064: strError=error_code+" Ожидается параметр типа double "; break; case 4065: strError=error_code+" В качестве параметра ожидается массив "; break; case 4066: strError=error_code+" Запрошенные исторические данные в состоянии обновления "; break; case 4067: strError=error_code+" Ошибка при выполнении торговой операции "; break; case 4099: strError=error_code+" Конец файла "; break; case 4100: strError=error_code+" Ошибка при работе с файлом "; break; case 4101: strError=error_code+" Неправильное имя файла "; break; case 4102: strError=error_code+" Слишком много открытых файлов "; break; case 4103: strError=error_code+" Невозможно открыть файл "; break; case 4104: strError=error_code+" Несовместимый режим доступа к файлу "; break; case 4105: strError=error_code+" Ни один ордер не выбран "; break; case 4106: strError=error_code+" Неизвестный символ "; break; case 4107: strError=error_code+" Неправильный параметр цены для торговой функции "; break; case 4108: strError=error_code+" Неверный номер тикета "; break; case 4109: strError=error_code+" Торговля не разрешена "; break; case 4110: strError=error_code+" Длинные позиции не разрешены "; break; case 4111: strError=error_code+" Короткие позиции не разрешены "; break; case 4200: strError=error_code+" Объект уже существует "; break;
 
tutmas, все наверняка гораздо проще, возможно открываешься если OrdersTotal()==0, а надо проверять наличие ордера именно по тому инструменту по которому собираешься отрываться.