Автор |
Сообщение |
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
Всем привет!
Прошу помощи, коллеги. Пытаюсь реализовать следующую мысль:
есть пара десятков инструментов для торговли. В определенный момент времени (предположим в 18:30) нужно проверить все 20 инструментов на условие (например С > O) затем запомнить число сигналов и имена всех инструментов, которые удовлетворены условию, что бы далее можно было бы из этого списка их подставлять (например для робота уже сразу после прогона прямо в 18:30 или в 18:31).
п.с. пытался делать через вотчлист, но как то не пошло да и в анатации предостережение, что будет медленно, были мысли через запись в файл, но тоже как то громоздко получалось и в итого зашел в тупик. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну в общем я не вижу других способов кроме как через вотчлист (или фавориты) или запись в файл.
На счет медленно. Не замечал чтобы с листами медленно работало.
А запись в файл удобно делать плагином |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
000 писал(а): |
Ну в общем я не вижу других способов кроме как через вотчлист (или фавориты) или запись в файл.
На счет медленно. Не замечал чтобы с листами медленно работало.
А запись в файл удобно делать плагином |
мммм.... Олег, для подсчета сигналов в моменте я тут своими мозгами набил пару заготовок, хоть и медленновато, но считают. Вот первый вариант:
Код: |
TickerList = "SBER,GMKN,VTBR,MGNT,LKOH,GAZP";
a = 0;
for ( i = 0; ( symbol = StrExtract( TickerList, i ) ) != ""; i++ )
{
SetForeign( symbol, True, True );
for ( e = 1; e < BarCount; e++ )
{
if ( C[e] > C[e-1] )
{
a[e] = a[e] + 1;
}
}
RestorePriceArrays( True );
}
Plot( a, "a", colorLightOrange , stylehistogram | stylethick ); |
, а вот второй вариант:
Код: |
t1 = foreign( "SBER", "C" );
t2 = foreign( "GMKN", "C" );
t3 = foreign( "VTBR", "C" );
t4 = foreign( "MGNT", "C" );
t5 = foreign( "LKOH", "C" );
t6 = foreign( "GAZP", "C" );
p1 = t1 > Ref( t1, -1 );
p2 = t2 > Ref( t2, -1 );
p3 = t3 > Ref( t3, -1 );
p4 = t4 > Ref( t4, -1 );
p5 = t5 > Ref( t5, -1 );
p6 = t6 > Ref( t6, -1 );
PP = p1 + p2 + p3 + p4 + p5 + p6;
Plot( PP, "PP", colorYellow, styleHistogram | styleThick );
|
Подскажи, я в верном иду направлении и как тут прикрутить запись в вотчлист/фаворт списка инструментов с сигналом? Я пробовал, но вотчлист у меня не обновлялся на новом баре при промотке графика (что то недопонимаю), а мне нужно это в реалтайме формировать. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Надо написать примерно вот такой код
Код: |
Filter = C > Ref(C, -1);
if(LastValue(Filter))
CategoryAddSymbol(Name(), categoryWatchlist, 1);
|
Запихать его в аналайзер, установить range - 1 recent bars и нажать Explore.
Нужные тикеры запихаются во второй вачлист. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
Такое очень хорошо для рисерчя, но мне нужно на графике, т.к. робот будет работать в графическом виде.
В идеале я пытаюсь реализовать вот такую конструкцию: в определенное время проверяется условие и формируется вотчлист, затем дальше через определенное время робот считывает по одному инструменту из вотчлиста и формирует заявки. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А что мешает прогнать один раз код в аналайзере а потом по результатам пользоваться роботом на графике? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
000 писал(а): |
А что мешает прогнать один раз код в аналайзере а потом по результатам пользоваться роботом на графике? |
А это можно сделать в автономном режиме без человека? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм.
А если в автономном режиме,то почему робот на грфике?
Ты в курсе, что если график тикера не виден на экране, то этот тикер не обрабатывается? В него даже данные не поступают. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
Сорри... забыл сказать, что автоторговля у меня через TraderAssistent. Там вроде всяко можно, через анализер не пробовал( |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
С TraderAssistent я не разбирался. Не знаю как он работает.
Одно могу сказать точно. Графики работают только с тем символом который сейчас открыт. Правда можно подставлять через SetForeign.
В принципе такая схем как у тебя первый вариант может формировать вачлист с помощью CategoryAddSymbol(). Кончно это не быстро.
А можно запустить код в АА, включить там авторепид. И он будет постоянно работать с заданной переодичностью и, например, формировать вачлист. Можно в коде задать чтобы он по жизни ничего не делал, а в определенное время (функция Now()) сделал нужный вачлист. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
Понял. Рассматриваю сейчас вариант на одном графике с Forigen() (второй вариант кода, который приводил выше). Пока ковырялся - придумал как реализовать и без вотчлиста на основе второго куска кода. С автоанализером тоже понял, наверно попробую после начатой попытки.
Есть вопрос. Например, если ко второй части кода поставить вот такое:
Код: |
Title = StrFormat("%g,%g,%g,%g,%g,%g, AllSig: %g", p1, p2, p3, p4, p5, p6, PP); |
то можно формировать строку с данными типа: 1,0,0,1,0,1, AllSig: 3.
Как в коде можно задать подстановку символьных значений, т.е. вместо первой единицы - "SBER", затем ноль, ноль, "MGNT" и т.д.? Тогда получится своего рода подобие вотчлиста из которого можно выдернуть все кроме нолей |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Про StrFormat ничего не знаю. И знать не хочу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
000 писал(а): |
Про StrFormat ничего не знаю. И знать не хочу. |
Эхххх.... и на том спасибо те))) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
genom
Зарегистрирован: 09.11.2010
Сообщения: 53
|
000 писал(а): |
Хм.
А если в автономном режиме,то почему робот на грфике?
Ты в курсе, что если график тикера не виден на экране, то этот тикер не обрабатывается? В него даже данные не поступают. |
Сейчас сел за кодинг и вспомнил, что можно передергивать весь график даже в свернутом виде Ami при помощи:
RequestTimedRefresh(0.1, False), где: 0,1 интервал обновления (не кратен часам системы), False - дает возможность исполнять код в свернутом окне |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да, действительно. Всегда забываю что появилась такая возможность. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|