Автор |
Сообщение |
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
000 писал(а): |
скажи что надо записать в файл? |
У меня есть индикатор, который дает сигнал, или система индикаторов. ЧТо одно и тоже. Короче есть сигнал. Например, РСИ >70 или < 30. Этот индикатор стоит на Дневных ТФ. В момент, когда выполняется условие, идет запись в файл: "Дата, параметр сигнала, например = 8".
Кстати, желательно предусмотреть, чтобы запись шла с интервалом, не чаще чем ххх, а не записывалась неприрывно.
На 4Н ТФ этот файл читается. Если выполняетмся условие;
1. Дата и время отличаюютсяя от текущего не более чем 1 час.
2. Есть параметр сигнала со значением = 8
Тогда на 4Н ввыполняется некое условие. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В общем понятно. Только тогда придется дневки гонять в АА и оттуда писать в файл, а на индикатор графике будет его читать.
Только вот зачем весь этот геморой? Можно сделать все это в одном коде и совсем не использовать никаких внешних файлов. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
000 писал(а): |
В общем понятно. Только тогда придется дневки гонять в АА и оттуда писать в файл, а на индикатор графике будет его читать.
Только вот зачем весь этот геморой? Можно сделать все это в одном коде и совсем не использовать никаких внешних файлов. |
Олежка! мы с тобой уже решали те задачи. И решить у нас в итоге не получилось. Учитывая сложность моей ТС, а также то, что уже добрых 5 лет я застрял на простой синхронизации ТФ, я согласен на геморой!
Смотри в чем идея.
На одном ТФ сложный набор всеякого хлама дает сигнал. И от хлама не избавишься! Сигнал пишем в файл. Это сложно? Просто!
На втором ТФ набор всякого хлама принимает сигнал и использует в своем назначении. Это сложно? Просто!
Ну не придумал Томас нормального и простого решения для этой задачи. Поэтому приходится использовать этот путь. Я не могу потратить еще 5-10 лет просто на исследования. Хватит! Так и жизнь проходит! Пусть это гемморное, однако простое решения. И я тебя прошу мне в этом помочь!
Если не трудно! помоги мне в этом!
Я даже хотел пойти на курсы Си#, чтобы написать нечто подобное тому, что ты сделал. Так что для меня это очень важно. Мне сейчас важно завершить мои исследования. ... Но пока что с моей стороны - это сплошной энтузиазизм и глупые инвестиции...
У меня есть цель! Я должен к ней дойти! Иневажно, самолетом или телегой! Главное двигаться, а не сидеть в рабстве годами, не имея даже дня на исследования в биржах, которые кстати, мне очень по душе!
Помоги мне, пожалуйста! И прости за мою глупость, которая со стороны кажется таковой. Только время рассудит, прав я или нет! |
Последний раз редактировалось: X-Story (Пт Янв 10, 2014 1:11 am), всего редактировалось 2 раз(а) |
|
Посмотреть профиль Отправить личное сообщение |
|
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
000 писал(а): |
В общем понятно. Только тогда придется дневки гонять в АА и оттуда писать в файл, а на индикатор графике будет его читать.
Только вот зачем весь этот геморой? Можно сделать все это в одном коде и совсем не использовать никаких внешних файлов. |
Кстати, а что такое АА? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
X-Story писал(а): |
Кстати, а что такое АА? |
ЫЫы, за 5 лет мог бы и запомнить)) Automatic Analysis, бектестер типа |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
spitfire писал(а): |
X-Story писал(а): |
Кстати, а что такое АА? |
ЫЫы, за 5 лет мог бы и запомнить)) Automatic Analysis, бектестер типа |
Легко смеяться, когда в теме сидишь! У меня нет такой возможности. ... Но все равно, спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А сигнал который на дневках он на последней не закрытой свечке формируется и меняется в течении дня? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
000 писал(а): |
А сигнал который на дневках он на последней не закрытой свечке формируется и меняется в течении дня? |
Именно так! Таким образом получится не упустить актуальную ситуацию, которую на закрытых свечках можно и не увидеть ( в 50-70% случаев). Если понадобится закрытая, то как я понимаю, решается через (... , ref-1)? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
nightcarrier
Зарегистрирован: 24.02.2010
Сообщения: 67
|
Не так уж и трудно, на самом деле, торговать хоть кучу бумаг с одного тайм фрейма на других. Заморачиваетесь, дорогие ветераны ) И порочите Св. Томаса, кстати ) Spitfire тоже молодец: ну очень помог )
ОК, лец ду ит. Принципиальный подход:
1. ИЗ ВСЕХ ИСПОЛЬЗУЕМЫХ ТАЙМ ФРЕЙМОВ ВЫБИРАЕМ В КАЧЕСТВЕ РАБОЧЕГО НАИМЕНЬШИЙ. В нем и гоняем робот-сканер.
2. ПРОВЕРЯЕМ СИГНАЛ ПО ПОЛОЖЕНИЮ ВРЕМЕНИ ЕГО ОБНАРУЖЕНИЯ ОТНОСИТЕЛЬНО ВРЕМЕНИ КОМПА. Старье бракуем.
3. СИГНАЛ ПИШЕМ, НАПРИМЕР, В СТАТИЧЕСКУЮ ПЕРЕМЕННУЮ. Имя переменной, например, слово "BUY" + имя тикера.
4. На базе набора стат переменных организуем передачу в торговый терминал, ну или что там нам требуется.
Пусть Ваши мечты таки реализуются |
|
|
Посмотреть профиль Отправить личное сообщение |
|
nightcarrier
Зарегистрирован: 24.02.2010
Сообщения: 67
|
Возможный вид блока контроля времени
Код: |
//БЛОК АНАЛИЗА СИСТЕМНОГО ВРЕМЕНИ
////////////////////////////////////////////////////////////////////////////////////////////////////
Cur_date = int(Now(6)+0.1);//текущий DAY(день) (1...31)
Cur_time = Now(4)+0.1;//TIMENUM текущего времени
//ПОДБЛОК ДОПОЛНИТЕЛЬНОЙ ПРОВЕРКИ ВРЕМЕНИ ТЕКУЩЕЙ ТРАНСЛЯЦИИ ДАННЫХ
BarsTime = TimeNum();//массив "время баров"
BarsDate = Day();//массив "даты баров"
bi = BarIndex();//массив номеров баров
arrayitem = SelectedValue(bi) - bi[0];//номер текущего (последнего в данном случае) бара
CurBarTime = LastValue(BarsTime)+0.1;//[arrayitem];//время текущего транслируемого бара
CurBarDate = int(LastValue(BarsDate)+0.1);//[arrayitem];//дата текущего транслируемого бара
//расчет времени, оставшегося до конца свечи
sec_Cur_time = int(Cur_time/10000)*3600 + int(frac(Cur_time/10000)*100)*60 + int(frac(Cur_time/100)*100);//количество секунд, прошедшее с начала суток
sec_CurBarTime = int(CurBarTime/10000)*3600 + int(frac(CurBarTime/10000)*100)*60;// + int(frac(CurBarTime/100)*100);//то же для формального времени начала текущей свечи
time_remain = abs ( sec_CurBarTime + 15*60 - sec_Cur_time );//оставшееся до конца свечи время, в секундах
DeltaBarToReal = abs ( sec_Cur_time - sec_CurBarTime );//абсолютная разница между временем ЭВМ и временем текущего транслируемого бара, в секундах
CorrectDataFeed = 0;//постулируем отсутствие корректной трансляции данных
//корректная трансляция - если даты совпадают, а разница по времени - не свыше размера базисного тайм-фрейма (с небольшим запасом)
if ( (Cur_date==CurBarDate) AND (DeltaBarToReal<=20*60) ) CorrectDataFeed = 1;//подтверждение корректной трансляции данных
////////////////////////////////////////////////////////////////////////////////////////////////////
//КОНЕЦ БЛОКА АНАЛИЗА СИСТЕМНОГО ВРЕМЕНИ
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
nightcarrier
Зарегистрирован: 24.02.2010
Сообщения: 67
|
Возможный вид функции контроля сигналов по Вашим правилам
Код: |
/*Функция для получения предварительных сигналов на открытие позиции - по любой бумаге и тайм фрейму*/
function RULES(Security)
{//начало функции
btm = Staticvarget("btm"+Security);//из статической переменной передаем тайм-фрейм в минутах
SetForeign(Security, fixup=True, tradeprices=True);//устанавливаем в качестве текущего нужный символ, с устранением пропусков, с полной заменой всех данных
TimeFrameSet(btm*60);//переключение на новый рабочий тайм-фрейм, в секундах
Buy_1 = 0;//инициализация
Short_1 = 0;//переменные с цифрами, чтобы не портить картину дальнейшей работы программы
Sell_1 = 0;
Cover_1 = 0;
P = Close;//параметр - массив цен
//ДРУГИЕ ЦЕНЫ ТОЖЕ ЖЕЛАТЕЛЬНО ПРОПИСАТЬ ЗАНОВО, ЧТОБЫ МОЖНО БЫЛО ВСТАВИТЬ В ЦИКЛ ПО КАЖДОЙ ИЗ БУМАГ ПОРТФЕЛЯ
/////////////////////////////////////////////////////////////
// ЗДЕСЬ ПРАВИЛА СИСТЕМЫ/////////////////////////////////////
/////////////////////////////////////////////////////////////
//предварительный результат функции
result = Buy_1;//например
if ( CorrectDataFeed )
Correct = 1;//данные корректны (сигнал пропускаем)
else
Correct = 0;//иначе данные не корректны
result = result * Correct;//результат - обнуление либо оставление результата предыдущих расчетов
TimeFrameRestore();//восстанавливаем базисный тайм-фрейм
return result;//возвращаем значение result в качестве сигнала
}//конец
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
nightcarrier писал(а): |
Не так уж и трудно, на самом деле, торговать хоть кучу бумаг с одного тайм фрейма на других. Заморачиваетесь, дорогие ветераны ) И порочите Св. Томаса, кстати ) Spitfire тоже молодец: ну очень помог )
|
Ну никто его и не порочит! Амиброкер, действительно отличный программный комплекс для биржевого анализа. Возможно даже и наилучший. По крайней мере, ничего подобного и лучшего для анализа не встречал. Это офигенно положительная сторона. За что ему огромное Спасибо! Тем более, продукт недорогой, по сравнению с метастоками и другими стоками...
Но есть некоторые вещи, которые далеки от совершенства. ЧТобы это понять, надо это пройти.
Не былвает идеальных решений, даже у гениев! То, что было сказано, было сказано как факт и не более того! ...
==========================
За блок времени и сигналов Большое Спасибо! Прежде всего за отзывчивость и желание помочь!
==========================
Но мне сейчас очень важно организовать запись-чтение сигналов. !!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
nightcarrier
Зарегистрирован: 24.02.2010
Сообщения: 67
|
Да не за что. Сам был в Вашей ситуации. Ами учил ночами после работы )
ОК. Приладим к блоку контроля времени примерный блок записи неких сигналов, который будет ориентироваться на РАЗОВОЕ (не больше 1 за каждую свечку) помещение инфы в один из файлов, в зависимости от времени, оставшегося до окончания свечи.
Код: |
//БЛОК ЗАПИСИ (ПЕРЕДАЧИ)
////////////////////////////////////////////////////////////////////////////////////////////////////
Common_way = "D://INFO_FOR_AMI//";//общий путь к папке с файлами
//устанавливаем имена файлов для организации взаимодействия
f1 = Common_way+"info1.txt";//файл для передачи информации №1
f2 = Common_way+"info2.txt";//файл для передачи информации №2
//И ТАК ДАЛЕЕ
//время до истечения текущего бара, при котором начинается анализ на предмет чего-то там
Max_time_remain = 60;//в секундах
Hurry = 15;//остаток, сек, до конца свечи, при котором начинаются какие-то экстренные действия
if (time_remain > Max_time_remain) //если до конца свечи еще ой как далеко
{
StaticVarSet("NoMore1",0);//опускаем флажок "Больше не писать в файл 1 до начала новой свечи !"
StaticVarSet("NoMore2",0);//опускаем флажок "Больше не писать в файл 2 до начала новой свечи !"
}
//и ждем, ждем, ждем...
//если до конца свечи осталось больше минимального времени, но анализ чего-то там уже возможен
//и флажок "Больше не писать в файл 1 до начала новой свечи !" не поднят,
//пишем один вид информации в один файл
if ( (time_remain > Hurry) AND (time_remain <= Max_time_remain) AND (Nz(StaticVarGet("NoMore1")) != 1) )
{
fh_f1 = fopen (f1, "w");//открытие файла 1 для записи
if (fh_f1)
{
fputs( NumToStr(StaticVarGet("Info1")) +"\n", fh_f1 );
fclose (fh_f1);
StaticVarSet("NoMore1",1);//поднимаем флажок "Больше не писать в файл 1 до начала новой свечи !"
}
}//конец если до конца свечи осталось больше минимального времени, но анализ чего-то там уже возможен
//если до конца свечи осталось меньше минимального времени
//и флажок "Больше не писать в файл 2 до начала новой свечи !" не поднят,
//пишем другой вид информации в другой файл
if ( time_remain <= Hurry AND (Nz(StaticVarGet("NoMore2")) != 1) )
{
{
fh_f2 = fopen (f2, "w");//открытие файла 2 для записи
if (fh_f2)
{
fputs( NumToStr(StaticVarGet("Info2")) +"\n", fh_f2 );
fclose (fh_f2);
StaticVarSet("NoMore2",1);//поднимаем флажок "Больше не писать в файл 2 до начала новой свечи !"
}
}//конец если конца свечи осталось меньше минимального времени
////////////////////////////////////////////////////////////////////////////////////////////////////
//КОНЕЦ БЛОКА ЗАПИСИ (ПЕРЕДАЧИ)
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
nightcarrier
Зарегистрирован: 24.02.2010
Сообщения: 67
|
Ну и по аналогии - организация чтения.
Только открывать файл надо в режиме чтения, а не записи
Код: |
fh_f1 = fopen (f1, "r");//открываем файл в режиме чтения
|
Ну и строка забора информации (вместо записи таковой) примерно так
Код: |
StaticVarGet( "Info1", StrToNum(fgets (fh_f1)) );
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Довольно геморно и можно быстро запутаться, когда систем куча.. Лучше создать под каждую систему свою виртуальную машину и на ней гонять робота, если ресурсов не хватает, то виртуальная машина под конкретный таймфрейм. Главное чтобы брокер позволял организовывать одновременные подключения терминалов. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
|