[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 33

 

Я уже не новичёк, но давно не писал под четвёрку, поэтому парюсь.

Как узнать уровень заморозки если MarketInfo(Symbol(),MODE_FREEZELEVEL)) всегда равен нулю,

а реквоты (о заморозке ордера) при этом регулярно идут?

Опытным путём установил, что ошибка модификации ТП иногда появляется на уровне 8пп иногда 11пп, но проскакивает и 5пп (но очень редко).

в результате не ясно как сделать проверку чтоб не нарываться на реквот.

 
Urain:

Я уже не новичёк, но давно не писал под четвёрку, поэтому парюсь.

Как узнать уровень заморозки если MarketInfo(Symbol(),MODE_FREEZELEVEL)) всегда равен нулю,

а реквоты (о заморозке ордера) при этом регулярно идут?

Опытным путём установил, что ошибка модификации ТП иногда появляется на уровне 8пп иногда 11пп, но проскакивает и 5пп (но очень редко).

в результате не ясно как сделать проверку чтоб не нарываться на реквот.

Именно о заморозке? Может быть всё-таки СтопЛевел? Сейчас у многих ДЦ заморозка не используется (=0)

Ошибка именно эта?

ERR_TRADE_MODIFY_DENIED 145 Модификация запрещена, так как ордер слишком близок к рынку
 
artmedia70:

Именно о заморозке? Может быть всё-таки СтопЛевел? Сейчас у многих ДЦ заморозка не используется (=0)

Ошибка именно эта?

ERR_TRADE_MODIFY_DENIED 145 Модификация запрещена, так как ордер слишком близок к рынку
Да заморозка, хотя СтопЛевел маркетинфо тоже возвращает 0.
 
Urain:
Да заморозка, хотя СтопЛевел маркетинфо тоже возвращает 0.
ERR_TRADE_MODIFY_DENIED145Модификация запрещена, так как ордер слишком близок к рынку и заблокирован из-за возможного скорого исполнения. Можно не ранее, чем через 15 секунд, обновить данные при помощи функцииRefreshRates и повторить попытку.

См. здесь.

 

Народ, я уже почти до белого колена дошел.... Как переименовать файл через shell32.dll????

Так:

#import  "shell32.dll"                                                       //Подключим dll (входит в состав windows)       
  int ShellExecuteA(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd); 
#import

.....

rename = ShellExecuteA(0,"Open","ren","\""+FullPathFile+"\" \""+FullPathFile2+"\" ","",3);

не работает. Хотя вручную через cmd проходит.

Делаю по аналогии, где

copyini = ShellExecuteA(0,"Open","xcopy","\""+TerminalPath()+ PuthHistory+"\" \""+PuthTester+PuthHistory+"\" /y/c/k/r/d","",3);
проходит на ура.
 
charter:
ERR_TRADE_MODIFY_DENIED145Модификация запрещена, так как ордер слишком близок к рынку и заблокирован из-за возможного скорого исполнения. Можно не ранее, чем через 15 секунд, обновить данные при помощи функцииRefreshRates и повторить попытку.

См. здесь.

Ну так это если уже ошибку получил, а как избежать ошибки?, как описать проверку чтоб не вляпаться в реквот?
 
Urain:
Ну так это если уже ошибку получил, а как избежать ошибки?, как описать проверку чтоб не вляпаться в реквот?

Такая ошибка возникает с отложенниками. Их нельзя модифицировать в зоне FREEZE. Ждите 15 секунд и пробуйте снова.

Если ошибка идет от рыночного ордера (что маловероятно), то это только из-за нарушения условия StopLevel.

 
kiimar:

Народ, я уже почти до белого колена дошел.... Как переименовать файл через shell32.dll????

Вначале сформируйте строку, принтом посмотрите что копируете, потом передавайте, скорее всего проблема с путями. Если нет опять сюда.

Возможно проблема в бэкслешах. \ -- управляющий символ, поэтому надо записывать так -- "C:\\Program Files\\..."

Если что есть еще такой вариант -- MoveFileA

 
charter:

Такая ошибка возникает с отложенниками. Их нельзя модифицировать в зоне FREEZE. Ждите 15 секунд и пробуйте снова.

Если ошибка идет от рыночного ордера, то это только из-за нарушения условия StopLevel.


Тут, как я понял, другой вопрос - то, что нули возвращаются после запроса уровня заморозки, и как следствие, неправильная модификация и снова реквота или ошибка.

2Urain - А вообще были случаи, что возвращаются не нули после запроса значений этих уровней?

 
TheXpert:

Вначале сформируйте строку, принтом посмотрите что копируете, потом передавайте, скорее всего проблема с путями. Если нет опять сюда.

Возможно проблема в бэкслешах. \ -- управляющий символ, поэтому надо записывать так -- "C:\\Program Files\\..."

Если что есть еще такой вариант -- MoveFileA

Да, так и делал. Проверял строку через принт и потом ещё руками через cmd. Через cmd все проходит, а через терминал почему-то нет. И сейчас смотрю, что работает почему-то только одна команда - xcopy, что странно. К сожалению, не могу найти подробную информацию по синтаксису и функционалу shell32.dll. Сейчас попробую через MoveFileA.