Блог им. roma095

Кто программирует Альфа директ API, отзовитесь!

    • 07 февраля 2014, 11:54
    • |
    • roma095
  • Еще
У кого нить получается на C# отправить заявку в терминал? Хоть режьте, не уходят у меня заявки. Подтверждение пишется что все ок, но заявка не появляется.  Где ошибка?

DateTime datetoday = DateTime.Today; // Сегодняшняя дата
AD.CreateLimitOrder(«111111-000», «FORTS», «USD-3.14», datetoday, «BUY ORDER», «RUR», «B», 1, 34848, null, null, null,null, null, null, null, null, null, null, null, null, null, null, null, null, 10);

★2
10 комментариев
Пишу для Квика.
Думаю, смогу помочь, если сбросите спецификацию заявки из документации.
Подозреваю, там и примеры есть.
Если есть, тоже давайте сюда.
Сильно сомневаюсь, что символ фьюча надо передавать как текст: «USD-3.14».

Если это так, то это просто пздц.

Приведите здесь выдержку из хелпа в отношении CreateLimitOrder
avatar
gib, да, так передается.
avatar
AlexeyT, жесть конечно.
avatar
Навскидку:
1. как-то не так дата передается
2. заменить кавычки на одинарные (вряд ли)
avatar
Попробуй вместо DateTime datetoday = DateTime.Today;
написать
DateTime datetoday = DateTime.Now + TimeSpan.FromSeconds(60)
avatar
Програмирую на Delphi

// Лимитированная заявка на покупку инструмента X-12.13
OrdNo := FAD.CreateLimitOrder(Portfel, 'FORTS', instrument_kr, Now + 1, '', 'RUR', 'B', Kolich, Prise1, Null, Null, Null, Null, Null, 'Y', Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, 0);

т.е вместо DateTime datetoday = DateTime.Today; // Сегодняшняя дата просто пишу Now + 1 (если надо чтобы заявка отменилась через сутки от выставления) или Now + 0,5 (отменится через 12 часов) или Now + 0.004 (через примерно 6 минут )
avatar
у вас проблема в том, что
DateTime datetoday = DateTime.Today;
возвращает дату с временем 00:00:00.000 и в момент приема ее сервером она уже не активна
Прибавьте один день и все будет ок
например так
DateTime orderdate = DateTime.Today.AddDays(1); // Сегодняшняя дата + 1 день
Всем большое спасибо за ответы.Действительно проблема была в дате.
Может кто то подскажет, почему в c# ругается на строчку подключения к терминалу?
AD.Connected = «TRUE»;
AD.Connected = TRUE;

Ошибка 1 Элемент «TRUE» не существует в текущем контексте.
avatar
Програмирую на Delphi.

Если прочитать руководство от Альфабанка то там вот что пишут
:
СВОЙСТВО «CONNECTED» — СОСТОЯНИЕ СОЕДИНЕНИЯ
Установка и получение состояния соединения с сервером «Альфа-Директ».
СИНТАКСИС

[VB]
ADObj.Connected

[C++]
HRESULT get_Connected(VARIANT_BOOL *Value);
HRESULT put_Connected(VARIANT_BOOL Value);

Некоторые ответы ты можеш найти на свободной требуне: www.alfadirect.ru/common/?page=forum&f=AD

На делфи я так подключаюсь: FAD := CoAlfaDirect.Create;

например:
private
FAD: IAlfaDirect;

procedure TFormTorg.btnPerMICEXClick(Sender: TObject);
begin
try
FAD := CoAlfaDirect.Create;
mResult.Lines.Add('Подключение установлено');
except
mResult.Lines.Add(Exception(ExceptObject).Message);
end;

end;

В потоках незабываем прописывать Application.Initialize;

например

begin
Application.Initialize;
try
FAD := CoAlfaDirect.Create;
mResult.Lines.Add('Подключение установлено');
except
mResult.Lines.Add(Exception(ExceptObject).Message);
end;

end;
avatar

теги блога roma095

....все тэги



UPDONW
Новый дизайн