× Ссылка на скачивание архива: www.bot4sale.ru/download-categories/2012...6/item/amisharp.html (архив под паролем)

Вопросы по AmiSharp

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #31 от AlexLan
AlexLan создал тему: Вопросы по AmiSharp
Михаил, здравствуйте.
Подскажите пожалуйста.
Пытаюсь получить значение из таблицы. Создаю фильтр
amisharp.ApplyFilterName(TabParametr,"CODE",Seccode, "vasa");
Создается все правильно таблица vasa. Как и задумано с одной строкой. "Текущая таблица параметров" по одному инструменту. Все отлично.))) Код возврата 1 все правильно, одна строка.
Затем пытаюсь прочитать значение.
result = amispread.GetCellName("vasa","bid",1);
Ami ругается
Error 18. COM object variable is not initialized or has invalid type (valid COM object handle required)
странно
amisharp.ApplyFilterName(TabParametr,"CODE",Seccode, "vasa"); // здесь создает все нормально
result = amispread.GetCellName("vasa","bid",1); // здесь уже не существует
Как так?? Подскажите где ошибка?
В начале я как в примере писал _tabParamFilter1 = TabParametr + "~1"; и подставлял эту переменную.
И в последней версии AmiSharp функция Tables_List = amisharp.ListOfTables(); не работает.
С уважением, Александр.
Последнее редактирование: 9 года 11 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад #32 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
А вот так работает, но то же со странностями ((((
TabParametr="[TABparam]-";
error(TabParametr); // печатаю имя таблицы

if (mutant.IsTableExists(TabParametr) == "0") // здесь программа ругается код ошибки 1 ей не нравится переменная . // ТabParametr НО РАБОТАЕТ ДАЛЬШЕ
{ error("Отсутствует экспорт таблицы " + TabParametr+ " по DDE");
StartDDE();
}
// Но данный код работает правильно
_kod_bumagi=StrToNum(amisharp.SearchValueName(TabParametr,"CODE",Seccode,0));
MaxPrice = AmiSharp.GetCellName(TabParametr,"bid",_kod_bumagi);
MinPrice = AmiSharp.GetCellName(TabParametr,"offer",_kod_bumagi);
Error(" Значение MaxPrice "+MaxPrice );
Error(" Значение MinPrice "+MinPrice );

Михаил, подскажите ?????
Ошибки но работает.??? Таким способом значения считываются, предыдущим нет.
Если фильтры работают не надежно, то тогда без них придется делать. А с ними получается красивее))))
Как быть?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад #34 от admin
admin ответил в теме Вопросы по AmiSharp
result = amispread.GetCellName("vasa","bid",1)

amispread - нет такого объекта. Я так понимаю, объект Вы назвали как amisharp.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #35 от admin
admin ответил в теме Вопросы по AmiSharp
Здесь у вас опять чехарда с именем объекта.

Сначала Вы создали объект посредством CreateStaticObject и присвоили ссылку на него какой-то переменной. Вот именно эту переменную нужно указывать перед именем метода.

у Вас же mutant.istableexists и amisahrp.GetCellName - в одной куче
Последнее редактирование: 9 года 11 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #36 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
Михаил, спасибо.
Подчистил мутантов с амишарпами
Все заработало.
С уважением, Александр.
Последнее редактирование: 9 года 11 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #37 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
МИХАИЛ, ОГРОМНОЕ СПАСИБО)))))
ПОБЕДИЛ МУТАНТОВ)))))))))) :blink: :sick: :woohoo: :) :) :) :) :) :) :)
Писал и еще раз повторюсь.
У Вас отличный подход !!! работая с таблицами через DDE!!!!!!!!
Но есть и грустные моменты (((
Таблицы типа "Таблица параметров", "Позиция по клиентским счетам (фьюч) ", "Ограничение по клиентским счетам (фьюч)" обновляются в AmiSharpe быстро и регулярно. А вот к примеру из Ami снимаю стоп заявку в квике. Снимает махом, но проблема в AmiSharp не обновляется (((. Когда выставляешь все обновляется. А при снятии нет. И висит она в AmiSharp ...
Как быть в такой ситуации?
С уважением, Александр.
Спасибо за помощь, спасибо что не бросили)))))
Последнее редактирование: 9 года 11 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #38 от admin
admin ответил в теме Вопросы по AmiSharp

AlexLan пишет: У Вас отличный подход !!! работая с таблицами через DDE!!!!!!!!

Спасибо на добром слове :)

Но есть и грустные моменты (((

Таблицы типа "Таблица параметров", "Позиция по клиентским счетам (фьюч) ", "Ограничение по клиентским счетам (фьюч)" обновляются в AmiSharpe быстро и регулярно. А вот к примеру из Ami снимаю стоп заявку в квике. Снимает махом, но проблема в AmiSharp не обновляется (((. Когда выставляешь все обновляется. А при снятии нет. И висит она в AmiSharp ...
Как быть в такой ситуации?

Александр, Амишарп не имеет представления, что за таблицу он получает через протокол DDE. Все что ему посылает терминал, то он и получает.

Возможно, Ваша проблема состоит в том, что с момента посылки транзакции на снятие заявки до момента обновления таблицы стоп-заявок квика (и соответствующей таблицы AmiSharp) проходит какое-то время. Электрончикам по проводам ведь нужно добежать до биржи и назад ;) ). Поэтому проверять сразу таблицу стоп-заявок сразу же после транзакции снятия бессмысленно - электрончики назад еще не добежали :P .

Это не вопрос амишарпа, это глобальное природное свойство :whistle:
Последнее редактирование: 9 года 11 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #39 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
Михаил. С добрым утром! )))
Вы писали.
Возможно, Ваша проблема состоит в том, что с момента посылки транзакции на снятие заявки до момента обновления таблицы стоп-заявок квика (и соответствующей таблицы AmiSharp) проходит какое-то время. Электрончикам по проводам ведь нужно добежать до биржи и назад ;) ). Поэтому проверять сразу таблицу стоп-заявок сразу же после транзакции снятия бессмысленно - электрончики назад еще не добежали.

:) :) :) :) :) :)
Какая интересная мысль. Теперь мне понятна физика процесса :) . То есть есть быстрые электроны которые отвечают за какую то часть таблиц. Они молодцы ))) сразу отрабатывают изменение таблиц))))). А есть их собратья назовем их "Ленивые электроны" которые отвечают за обновление значений в таблицах с ордерами и со стоп приказами. После команды удалить прошодит больше 40 мин, а они так и не смогли добежать. :sick: :silly: Уж очень ленивые электроны. ))))
И все было бы хорошо и логично )))) но я по первому образованию физик (с большим курсом ядерной физики), и нам много рассказывали про электроны )))
Извините ответ не за считывается))). Может можно как то в AmiSharpe дать команду на вывод (обновление) именно этих таблиц. Получается однобоко, когда ставишь заявку отражается сразу, при удалении не отражается.
:) :) :) :) :) Спасибо за объяснение с электронами )))))) супер)))
С уважением, Александр.
Последнее редактирование: 9 года 11 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #40 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
Может Вы меня не правильно поняли.
Команда удалить ордер или стоп-заявку проходит. В квике все что нужно удаляет. В AmiSharpe не отображается.
Проведите такой эксперимент, работайте только в квике и смотрите, что отражается в ASh
Создайте ордер в квике, смотрите как он отображается в передаваемой таблице ASh . - все отлично.
Переместите ордер. В таблице значение обновилось!!!!!
Но стоит его удалить в квике, из таблице не удаляется. это плохо.
Я опрашиваю таблицу, вижу ордер, пытаюсь сделать над ним действие, и не могу (((
Как выйти из такой ситуации?
С уважением, Александр.
Последнее редактирование: 9 года 11 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #41 от admin
admin ответил в теме Вопросы по AmiSharp
Кажется догадался, о чем речь. В таблице квика включены фильтры, скрывающие снятые заявки?

Но стоит его удалить в квике, из таблице не удаляется. это плохо.

В терминале квик удалить (стоп)-заявку нельзя. Ее можно сделать снятой, а в таблице квика установить фильтр, не показывающий снятые заявки. Вот этот режим не нужно использовать. Не мешайте бегать электронам, одним словом.

Дело в том, что не существует легального способа узнать размеры транслируемой из квика таблицы. Поэтому при увеличении таблицы мы это тривиально видим, а про уменьшение мы узнать не можем никак.
Последнее редактирование: 9 года 11 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #42 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
Михаил! :)
С Вашей помощью победили "мутантов" ))))) и заставил бегать ленивые электроны))))
Да все как сказал
1. В квике поставил все ордера
2. Сделал фильтр 1 по инструменту
3. Фильтр 2 из Фильтра 1 по "STATUS","ACTIVE" - получил таблицу в одну строчку ))) и считал номер заявки затем удалил.
4. Всякая обвязка на отсутствие таблицы+ если она не создалась. ...
Все работает быстро)))
но функция Tables_List = amisharp.ListOfTables();
так и не работает.
Спасибо за помощь.
Последнее редактирование: 9 года 11 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад #45 от admin
admin ответил в теме Вопросы по AmiSharp

AlexLan пишет: Спасибо за помощь.


М/ф "Жил-был Пес". Голос Джигарханяна: "Ну ты, если шо...... заходи..."

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад - 9 года 10 мес. назад #73 от Mr. Foggs
Mr. Foggs ответил в теме Вопросы по AmiSharp
Экспериментирую с AmiSharp... Скопировал код из примера, запустил валидацию и мне сразу ругается Амиброкер 5.50:
"Error 503 ... CreateStaticObject is not multi-threading friendly"

Предлагается использовать какие-то "родные функции AFL" - что можно поделать тут? Пожалуйста, подскажите.

Также ругается на:
return ParameterString + ParameterName + " = " + ParameterValue + ";" ;

P.S.
Я закомментировал следующее:
/* Включаем AmiSharp
amisharp = CreateStaticObject("AmiSharp.Mutant");
amisharp.QuikConnect(QUIK_Path);
*/
Ругаться перестал. Я включил AmiSharp вручную.
Последнее редактирование: 9 года 10 мес. назад пользователем Mr. Foggs.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад - 9 года 10 мес. назад #80 от admin
admin ответил в теме Вопросы по AmiSharp
Mr. Foggs,
как-то мы с Вами уже обсуждали, что более новое не всегда более лучшее (для наших целей)

Я пользуюсь версией амиброкера 5.4
Версия 5.5 полностью поддерживает многопоточность (5.4 имеет многопоточность на уровне индикатора - нам этого вполне достаточно)

Соответственно, Tomasz Janeczko максимально рекомендует пользователям избавляться от технологии OLE, которая рушит ему всю картину. (все-таки 1990 год разработки OLE технологии): Efficient use of multithreading
Все это, очевидно, верно, да только нет иного (надежного) способа получить таблицы квика и отправить в него транзакции.

К тому же. Насколько я понимаю, Описываемое сообщение представляет собой ворнинг 503 , а не еррор, соответственно, выполнение скрипта должно продолжаться (если не указано обратное в настройках амиброкера)
Последнее редактирование: 9 года 10 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 9 мес. назад - 9 года 9 мес. назад #102 от admin
admin ответил в теме Вопросы по AmiSharp

AlexLan пишет: функция Tables_List = amisharp.ListOfTables();
так и не работает.


Александр, я так вижу, что Вы вызвали ее без параметров и Амиброкер возражает? :whistle:
Я с ним согласен.
Последнее редактирование: 9 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 9 мес. назад - 9 года 9 мес. назад #103 от AlexLan
AlexLan ответил в теме Вопросы по AmiSharp
Михаил, добрый день.
1. А какие там должны быть параметры.
(Tables_List = amisharp.ListOfTables(",") ;) - раньше такого не было )))
2. АмиSharp работает на Intel 64 разряда?
Последнее редактирование: 9 года 9 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 9 мес. назад - 8 года 7 мес. назад #104 от admin
admin ответил в теме Вопросы по AmiSharp

AlexLan пишет: Михаил, добрый день.
1. А какие там должны быть параметры.
(Tables_List = amisharp.ListOfTables(",") ;) - раньше такого не было )))
2. АмиSharp работает на Intel 64 разряда?


1. www.bot4sale.ru/faq/amisharp-docs/tables...em/listoftables.html Все течет, все изменяется )))

2. Еще как (если версия 0.147 и выше) ....
Последнее редактирование: 8 года 7 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 4 мес. назад - 9 года 4 мес. назад #245 от slava8519
slava8519 ответил в теме Вопросы по AmiSharp
У меня все равно не получается полностью отладить :( Не пойму почему робот берет откуда то несуществующие сигналы на вход и на выход. Логика самой торговли в принципе не сложная. Может есть какие-то ньюансы при построении робота который торгует в лонг и шорт? Использую ExRem - но это вроде бы должно работать корректно. Т е точно такой же робот но на другом приводе (Олеговском) работает корректно. Очень бы хотелось ваш допилить.
P S На графике все сигналы отображаются правильно.
Последнее редактирование: 9 года 4 мес. назад пользователем slava8519.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 4 мес. назад - 8 года 7 мес. назад #246 от admin
admin ответил в теме Вопросы по AmiSharp
Вячеслав, видимо, в чем-то алгоритмы разные. Вероятно, у вас появляются и пропадают сигналы в процессе развития свечи. Вы их отрабатываете (посылаете заявку в квик), после чего сигнал пропадает. А заявка уже исполнена.

А может все и не так, без текстов можно только гадать.

Другое дело, что амишарп здесь просто не при чем. Он про Ваши сигналы (да и вообще про какие-то ни было сигналы) знать ничего не знает. Сигналы - это Ваша забота. Скажете исполнить транзакцию - исполнит...
Последнее редактирование: 8 года 7 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 11 мес. назад #448 от genius-1978
genius-1978 ответил в теме Вопросы по AmiSharp
Михаил, здравствуйте! Скажите, не планируется ли переделка амишарпа в плагин dll ?? И если такое возможно, то цена вопроса?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 7 мес. назад #508 от admin
admin ответил в теме Вопросы по AmiSharp
Нет, не планируется.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 5 мес. назад #581 от Su27
Su27 ответил в теме Вопросы по AmiSharp
Михаил, добрый день!
Со вчерашней проблемой благополучно разобрался, не хватало строчки Amisharp.Mutant. А сейчас вижу вот такую проблему по логам:
07.03.2014 12:30:44 Generate_TransID() = 396
07.03.2014 12:30:44 GetCellName("Tab","offer",1) = 36306
07.03.2014 12:30:44 QuikSendSyncTransaction("ACTION=NEW_ORDER;TRANS_ID=396;SECCODE=SiH4;QUANTITY=1;OPERATION=B;CLASSCODE=SPBFUT;ACCOUNT=SPBFUT00875;TYPE=L;PRICE=36306;") = 0,0,,0,
07.03.2014 12:30:44 TraceLog("c:\z.log") = c:\z.log

В чем может быть проблема?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 5 мес. назад - 8 года 5 мес. назад #582 от admin
admin ответил в теме Вопросы по AmiSharp
Иван, насколько я понимаю, вопрос в том, что не проходит транзакция?

Судя по логу, амишарп не возвращает никакой диагностики. Такое бывает, если нет возможности передать в квик транзакцию (не говоря уже о возможности получить на нее ответ): не запущен квик, не включены внешние транзакции и т.п.
Последнее редактирование: 8 года 5 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 5 мес. назад #583 от Su27
Su27 ответил в теме Вопросы по AmiSharp
Научился пользоваться функцией Quik.Connect, все заработало. Михаил, спасибо за терпение и консультации!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 4 мес. назад - 8 года 4 мес. назад #619 от Su27
Su27 ответил в теме Вопросы по AmiSharp

Здравствуйте! Все работало, но теперь возникла ошибка при открытии позиции, которая показана на приложенном рисунке. В логах ничего не отображается. Подскажите, что может быть не так.
Вложения:
Последнее редактирование: 8 года 4 мес. назад пользователем Su27.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 4 мес. назад #621 от Su27
Su27 ответил в теме Вопросы по AmiSharp
Да, анализатору не нравиться переменная trans_result, возвращаемая функцией выставления синхронной заявки. Не могу понять, создавал по Вашему коду, работало, оставляло отметки в логах, а тут не работает и в логах соответственно пусто.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 4 мес. назад - 8 года 4 мес. назад #622 от admin
admin ответил в теме Вопросы по AmiSharp
Выведите trans_result и посмотрите значение. Наверняка строка trans_result девственно пуста. Значит, амишарп не смог передать транзакцию терминалу. Включены внешние транзакции в терминале?
Последнее редактирование: 8 года 4 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 4 мес. назад #624 от Su27
Su27 ответил в теме Вопросы по AmiSharp
Здравствуйте! Вижу причину в некоторых разрывах связи с терминалом. Пытаюсь сделать контроль, но не наблюдаю отчетов в логах. Такой вариант работоспособен?

if (StrRight(NumToStr(TimeNum()),2) == "50")
{
test = amisharp.QuikIsConnected();
if ( test == "0") amisharp.QuikConnect(QUIK_Path);
}

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 4 мес. назад - 8 года 4 мес. назад #625 от admin
admin ответил в теме Вопросы по AmiSharp
В принципе что-то типа такого делать можно.

- Сестра! Больной перед смертью потел?
- Потел....
- Это хорошо!

Как я понимаю, Вы подключаетесь к терминалу при старте скрипта сразу же. В таком случае лучше установить причину отсоединения амишарпа (trans2quik) от терминала. Самовольных отключений быть не должно.

Можно подключаться к терминалу непосредственно перед посылкой транзакции и отключаться после этого. В принципе это более правильный подход - мало ли кому захочется тоже поговорить с терминалом....
Последнее редактирование: 8 года 4 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
8 года 4 мес. назад #626 от Su27
Su27 ответил в теме Вопросы по AmiSharp
Вы имеете ввиду, такой вариант:

amisharp.QuikConnect(QUIK_Path);
trans_result = amisharp.QuikSendSyncTransaction(str);
amisharp.QuikDisconnect();

У меня ощущение, что это подключение не всегда осуществляется корректно, вследствии чего заявка не отправляется, и получается проблема, "девственно чистой заявки".

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin