OrderSend открывает позицию и возвращает -1? - страница 3

 

Убери инициализацию в начало программы. Эта переменная из цикла выходит с нулем.

??
Не понимаю я Ваших ответов :(
 
А переменную positions, ты где инициализируешь?


в начале старта. Всю торговую логику я, естественно, убрал. Инициализация попала под метлу случайно.
Добавил инициализацию в пример

Переставь инициализацию в начало программы. Эта переменная из цикла выходит нулевая.
 
Не надо ничего инициализировать, все правильно в коде. В таком виде ошибок нет.
 
Ну, тогда я, пас.
 
Очень не хочется все списывать на МТ.... остановлюсь на некомпетентности:)
Могу предложить альтернативную схему:
запоминать тикет при открытии..... опять же получится избежать смешения, если два разных эксперта будут работать с одной валютой.....
 
Очень не хочется все списывать на МТ.... остановлюсь на некомпетентности:)
Могу предложить альтернативную схему:
запоминать тикет при открытии..... опять же получится избежать смешения, если два разных эксперта будут работать с одной валютой.....


То переставить что-то в начало чего-то, то запоминать что-то когда-то.
Не понимаю я эти малозначащие фразы.
Програмирование - точная наука, господа. (к вопросу о некомпетентности)

Что значит фраза "запоминать тикет при открытии"?
Он запоминается в переменной ticket. Переменная ticket равна -1. Ордер при этом оказывается открыт. Такое поведение идет вразрез с документацией, поставляемой разработчиком МТ. Это - проблема, которую я пытаюсь здесь озвучить.

Собственно, чему Вы хотите предложить альтернативу?
 
Irtron, а GetLastError молчит?
Это, конечно, не решение, и проблему я тоже вижу (признаю).
Но проверку стоит сделать.
 
Irtron, а GetLastError молчит?
Это, конечно, не решение, и проблему я тоже вижу (признаю).
Но проверку стоит сделать.


Конечно, стоит. И разбор ошибки тоже нужен, реквоты там всякие, и пр. Сырой код, надо доработать.
А пока сливаю все ошибки, в цикле в том числе, в лог. Остается ждать, вдруг повторится.
 
Если бы ticket был равен -1, то отработал бы Слип , а его судя по вашим словам не было.... значит баг где то не здесь....
по поводу альтернативы:

int ticket=-1;
datetime t;

int start()
{
if (ticket не активен) ticket=-1;
t=CurTime();

for (j=0;j<10 && ticket==-1;j++)
if (CurTime>t+TRADE_TIMEOUT*j) ticket=SendOrder(...);

return(0);
}
 
в цикле ошибка..... его тоже надо по времени делать...