Автор |
Сообщение |
MadNike
Зарегистрирован: 29.12.2008
Сообщения: 21
|
Здравствуйте.
Подскажите пожалуйста, реален ли сабж в разрезе не только чтения но и записи?
Т.е. я создал параметр типа RoboMode = Param("Mode", 0, 0, 2, 1, 1 ); по этому параметру при выполнении определенных условий должен запуститься некий робот. Т.е. по сути это - триггер, если он стоит в положении 0, амиброкер ничего не делает, переключая его в положение 1 руками, я заставляю амиброкера ждать выполнения некоего условия и при выполнении этого записать в файл транзакцию для квика.
Вопрос Можно ли после отработки моего робота вернуть значение параметра "Mode" в исходное состояние непосредственно из AFL?
Или придется это как-то реализовывать через мягкое место? Целый день сегодня протупил, прошерстил хелпы, но никаких идей в голову не пришло.
Буду очень признателен за идеи по этому поводу. Спасибо, заранее. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В общем по коду должно быть все понятно
Код: |
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
|
Олег.. Я наверное плохо разобрался со справкой. Причем тут AddColumn? Эта функция для WatchList, а мой робот работает в режиме реалтайм и к бэктестингу никакого отношения не имеет. Объясни, плз, может я что-то не так понял?
Заранее спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну мне же неизвестно какой у тебя робот....
Этот код для AA подойдет и для робота код которого тут http://www.amisite.ru/afl/exp/0001.htm
Собственно разницы то и нет. AddColumn() это вывод результата...
Должно подойти и для "индикаторного" робота. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MadNike
Зарегистрирован: 29.12.2008
Сообщения: 21
|
Всё. Спасибо! Теперь я понял!
Только мой робот висит не на АА с параметром (run every 1 sec), а прямо на графике как индикатор, т.е. исполняется каждый тик(фактически).
Я так понял AddColumn тут вообще ни причем. Фишка в строке Trigger = 0. Но ведь каждый тик будет исполняться и Trigger = ParamTrigger("RoboMode", "Run"); А он далеко не равен 0. У меня же стоит задача: если юзер включил 1, то выжидать условие каждый тик, и как только оно выполнится, послать транзакцию в квик и сбросить все в исходное состояние, чтобы пользователь сам решал что делать дальше.
Вот в чем идея. Будут ли мысли по этому поводу?
Заранее спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
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
|
Вполне изящно. Спасибо большое. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|