Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Доступ к параметрам пользователя из AFL Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
MadNike



Зарегистрирован: 29.12.2008
Сообщения: 21

СообщениеДобавлено: Пн Авг 09, 2010 10:12 pm Ответить с цитатой Вернуться к началу

Здравствуйте.
Подскажите пожалуйста, реален ли сабж в разрезе не только чтения но и записи?
Т.е. я создал параметр типа RoboMode = Param("Mode", 0, 0, 2, 1, 1 ); по этому параметру при выполнении определенных условий должен запуститься некий робот. Т.е. по сути это - триггер, если он стоит в положении 0, амиброкер ничего не делает, переключая его в положение 1 руками, я заставляю амиброкера ждать выполнения некоего условия и при выполнении этого записать в файл транзакцию для квика.
Вопрос Можно ли после отработки моего робота вернуть значение параметра "Mode" в исходное состояние непосредственно из AFL?
Или придется это как-то реализовывать через мягкое место? Целый день сегодня протупил, прошерстил хелпы, но никаких идей в голову не пришло. Sad
Буду очень признателен за идеи по этому поводу. Спасибо, заранее.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Авг 09, 2010 10:22 pm Ответить с цитатой Вернуться к началу

В общем по коду должно быть все понятно
Код:

Filter = 1;

Trigger = ParamTrigger("RoboMode", "Run");
q = 0;
if(Trigger)
{
  q = 1;
  Trigger = 0;
}
AddColumn(q, "Mode");

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
MadNike



Зарегистрирован: 29.12.2008
Сообщения: 21

СообщениеДобавлено: Пн Авг 09, 2010 11:10 pm Ответить с цитатой Вернуться к началу

Олег.. Я наверное плохо разобрался со справкой. Причем тут AddColumn? Эта функция для WatchList, а мой робот работает в режиме реалтайм и к бэктестингу никакого отношения не имеет. Объясни, плз, может я что-то не так понял?
Заранее спасибо.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Авг 09, 2010 11:42 pm Ответить с цитатой Вернуться к началу

Ну мне же неизвестно какой у тебя робот....
Этот код для AA подойдет и для робота код которого тут http://www.amisite.ru/afl/exp/0001.htm

Собственно разницы то и нет. AddColumn() это вывод результата...
Должно подойти и для "индикаторного" робота.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
MadNike



Зарегистрирован: 29.12.2008
Сообщения: 21

СообщениеДобавлено: Вт Авг 10, 2010 7:01 am Ответить с цитатой Вернуться к началу

Всё. Спасибо! Теперь я понял!
Только мой робот висит не на АА с параметром (run every 1 sec), а прямо на графике как индикатор, т.е. исполняется каждый тик(фактически).
Я так понял AddColumn тут вообще ни причем. Фишка в строке Trigger = 0. Но ведь каждый тик будет исполняться и Trigger = ParamTrigger("RoboMode", "Run"); А он далеко не равен 0. У меня же стоит задача: если юзер включил 1, то выжидать условие каждый тик, и как только оно выполнится, послать транзакцию в квик и сбросить все в исходное состояние, чтобы пользователь сам решал что делать дальше.
Вот в чем идея. Будут ли мысли по этому поводу?
Заранее спасибо.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Авг 10, 2010 8:37 am Ответить с цитатой Вернуться к началу

Код:

RequestTimedRefresh(1);

Trigger = ParamTrigger("RoboMode", "Run");

if(Trigger)
{
  StaticVarSet("p", 1);
}

w = ceil(frac(Now(4)/100)*100);

if(StaticVarGet("p") == 1 AND w > 30)
{
  StaticVarSet("p", 0);
}

if(StaticVarGet("p") == 1)
{
// после нажатия Run в параметрах выполняется то, что тут
// до тех пор пока секунд не станет больше 30
  Plot(1, "11", colorRed, styleArea|styleOwnScale, MinValue = 0, Maxvalue = 1);
}
else
{
  Plot(1, "11", colorBlue, styleArea|styleOwnScale, MinValue = 0, Maxvalue = 1);
}


_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
MadNike



Зарегистрирован: 29.12.2008
Сообщения: 21

СообщениеДобавлено: Вт Авг 10, 2010 9:19 am Ответить с цитатой Вернуться к началу

Вполне изящно. Спасибо большое.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen