Смотрю вы каждый год спрашиваете про 133 Trade is disabled :))
...это такой стёб? или всё не можете поправить советник для реагирования на ошибки?
пс. если вас намеренно блокирует брокер, значит вы совершаете (пытаетесь совершить) операции не по регламенту — изучайте как вам разрешено торговать.
Отвечаю по существу:
Это не стеб, когда возникает проблема - захожу сюда, потому что здесь помогают искать и находить решения. Мои советники на ошибки реагировать умеют. Задача - не реагировать, а не допускать.
пс. Совершаю операции не по регламенту? - Подскажите, где нарушение.
Что меня намеренно блокирует брокер - такой мысли не допускал, потому что ни параноей ни манией величия не страдаю. Тексистекатль - это бог Луны? Крутой ник!
Блокировать могут на автомате из-за частых запросов или попыток установить близко сделку или еще чего... (никакой паранойи)
Если советники реагируют на ошибки, то не вижу проблем — при разрешенной торговле, отправлять запросы раз в 1-2 секунды, пока не пропустят. Ну и брокеру написать в поддержку чтобы разъяснили что к чему.
Кстати, в моем примере есть проверка счета на блокировку автоторговли брокером.
Блокировать могут на автомате из-за частых запросов или попыток установить близко сделку или еще чего... (никакой паранойи)
Если советники реагируют на ошибки, то не вижу проблем — при разрешенной торговле, отправлять запросы раз в 1-2 секунды, пока не пропустят. Ну и брокеру написать в поддержку чтобы разъяснили что к чему.
Кстати, в моем примере есть проверка счета на блокировку автоторговли брокером.
Проблема не на всех инструментах, а только на некоторых, не постоянно, а иногда. Ордера открываю рыночные, а НЕ отложенные, без тейкпрофит и стоплосс, то есть ничего "слишком близкого" быть не может. В проверку вставил ВСЕ, что упоминалось в данной ветке+ еще что только придумать мог. То есть проверка, очевидно, даже избыточная, но обойти сообщение про ошибки 133 и 136 не могу. Что за хрень! :(
if(Allowance(TName))
{//пытаюсь торговать, но получаю ошибки 133, 136
...
}else
{//должен бы попасть сюда, если торговля не разрешена, НО НЕ ПОПАДАЮ!
//должен бы попасть сюда, если торговля не разрешена, НО НЕ ПОПАДАЮ!
Вы так ничего и не сказали о частоте запросов. И не понятно, когда вызываетсяAllowance(TName), если один раз в самом начале, то конечно не попадете. Торговля ведь еще разрешена, а вот когда начинаете грузить сервер частыми запросами он в ответ банит вас по конкретномуу инструменту. (это всё мысли вслух, алгоритма программы нету)
Tecuciztecatl: Вы так ничего и не сказали о частоте запросов. И не понятно, когда вызываетсяAllowance(TName), если один раз в самом начале, то конечно не попадете. Торговля ведь еще разрешена, а вот когда начинаете грузить сервер частыми запросами он в ответ банит вас по конкретномуу инструменту. (это всё мысли вслух, алгоритма программы нету)
Как это алогоритма нет и частоты запросов? Алгоритм см. в скрипте: Когда Allowance==true, то пытаюсь торговать. Функция проверки Allowance приведена. Частота запросов к Allowance: Вызывается каждый, когда хочу открыть|закрыть ордер. Если бы было нельзя по конкретному инструменту, т.е, " забанили меня по конкретному инструменту", то и не сунулся бы туда, если бы Allowance показал, что нельзя. Бывает, что ордер открыт, а через несколько часов или дней закрыть нельзя из-за 133 или 136, а потому, вдруг, опять начинает торговаться. Как видите, засунул в Аллованс даже все то, что Вы советовали, хотя это, ИМХО, к моим ошибкам отношения не имет. Итак, вопрос:
Как программно определить, что конкрентный инструмент в настоящий момент торговать можно|нельзя? Чего для этого не хватает в моей функции Allowance?
Если это весь ваш код (что приведен выше), то явно не хватает сброса ошибки перед вызовом (ResetLastError) и цикла, в котором будет выполняться попытка открыть ордер и проверка ошибок 133/136.
Выше я давал примерный код обработки реквот:
ResetLastError(); /// сброс ошибки
err=0;
TradeAllowed(); if (err>0) return; /// проверка разрешения торговать
n=-1;
while (n<0) /// цикл отправки запроса на открытие ордера
{
err=0;
if (opType==OP_BUY) {OrdColor=Green;Price=MarketInfo(symb,MODE_ASK);} /// узнаем текущий аск или бид в зависимости от opType,else {OrdColor=Red;Price=MarketInfo(symb,MODE_BID);}
n=OrderSend(TName,opType,V,Price,slip,0,0,IntegerToString(DsT[i][j]),magic,OrdColor);
if (n>0) {break;} /// если открылся прерываем циклif (IsStopped()) {break;} /// если принудительное завершение, прерываем цикл
err=GetLastError(); /// получаем текущую ошибку (так же нужно и другие коды ошибок обрабатывать)if (err==136) /// если реквота, то..
{
Comment("Off quotes. Waiting..");
Sleep(1000); /// ..ждём секунду
RefreshRates(); /// ..обновляем котировки и повторяем цикл, пока не выйдем по прерыванию или исполнениюcontinue;
}
}
Можно задавать количество повторов, после которых перываем цикл...
Смотрю вы каждый год спрашиваете про 133 Trade is disabled :))
...это такой стёб? или всё не можете поправить советник для реагирования на ошибки?
пс. если вас намеренно блокирует брокер, значит вы совершаете (пытаетесь совершить) операции не по регламенту — изучайте как вам разрешено торговать.
Смотрю вы каждый год спрашиваете про 133 Trade is disabled :))
...это такой стёб? или всё не можете поправить советник для реагирования на ошибки?
пс. если вас намеренно блокирует брокер, значит вы совершаете (пытаетесь совершить) операции не по регламенту — изучайте как вам разрешено торговать.
Отвечаю по существу:
Это не стеб, когда возникает проблема - захожу сюда, потому что здесь помогают искать и находить решения. Мои советники на ошибки реагировать умеют. Задача - не реагировать, а не допускать.
пс. Совершаю операции не по регламенту? - Подскажите, где нарушение.
Что меня намеренно блокирует брокер - такой мысли не допускал, потому что ни параноей ни манией величия не страдаю. Тексистекатль - это бог Луны? Крутой ник!
Блокировать могут на автомате из-за частых запросов или попыток установить близко сделку или еще чего... (никакой паранойи)
Если советники реагируют на ошибки, то не вижу проблем — при разрешенной торговле, отправлять запросы раз в 1-2 секунды, пока не пропустят. Ну и брокеру написать в поддержку чтобы разъяснили что к чему.
Кстати, в моем примере есть проверка счета на блокировку автоторговли брокером.
Блокировать могут на автомате из-за частых запросов или попыток установить близко сделку или еще чего... (никакой паранойи)
Если советники реагируют на ошибки, то не вижу проблем — при разрешенной торговле, отправлять запросы раз в 1-2 секунды, пока не пропустят. Ну и брокеру написать в поддержку чтобы разъяснили что к чему.
Кстати, в моем примере есть проверка счета на блокировку автоторговли брокером.
Проблема не на всех инструментах, а только на некоторых, не постоянно, а иногда. Ордера открываю рыночные, а НЕ отложенные, без тейкпрофит и стоплосс, то есть ничего "слишком близкого" быть не может. В проверку вставил ВСЕ, что упоминалось в данной ветке+ еще что только придумать мог. То есть проверка, очевидно, даже избыточная, но обойти сообщение про ошибки 133 и 136 не могу. Что за хрень! :(
if(Allowance(TName)) {//пытаюсь торговать, но получаю ошибки 133, 136 ... }else{//должен бы попасть сюда, если торговля не разрешена, НО НЕ ПОПАДАЮ!И не понятно, когда вызывается Allowance(TName), если один раз в самом начале, то конечно не попадете. Торговля ведь еще разрешена, а вот когда начинаете грузить сервер частыми запросами он в ответ банит вас по конкретномуу инструменту. (это всё мысли вслух, алгоритма программы нету)
Вы так ничего и не сказали о частоте запросов.
И не понятно, когда вызывается Allowance(TName), если один раз в самом начале, то конечно не попадете. Торговля ведь еще разрешена, а вот когда начинаете грузить сервер частыми запросами он в ответ банит вас по конкретномуу инструменту. (это всё мысли вслух, алгоритма программы нету)
Как это алогоритма нет и частоты запросов? Алгоритм см. в скрипте: Когда Allowance==true, то пытаюсь торговать. Функция проверки Allowance приведена. Частота запросов к Allowance: Вызывается каждый, когда хочу открыть|закрыть ордер. Если бы было нельзя по конкретному инструменту, т.е, " забанили меня по конкретному инструменту", то и не сунулся бы туда, если бы Allowance показал, что нельзя. Бывает, что ордер открыт, а через несколько часов или дней закрыть нельзя из-за 133 или 136, а потому, вдруг, опять начинает торговаться. Как видите, засунул в Аллованс даже все то, что Вы советовали, хотя это, ИМХО, к моим ошибкам отношения не имет. Итак, вопрос:
Как программно определить, что конкрентный инструмент в настоящий момент торговать можно|нельзя? Чего для этого не хватает в моей функции Allowance?
Если это весь ваш код (что приведен выше), то явно не хватает сброса ошибки перед вызовом (ResetLastError) и цикла, в котором будет выполняться попытка открыть ордер и проверка ошибок 133/136.
Выше я давал примерный код обработки реквот:
Можно задавать количество повторов, после которых перываем цикл...