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



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

СообщениеДобавлено: Чт Янв 09, 2014 12:54 pm Ответить с цитатой Вернуться к началу

000 писал(а):
скажи что надо записать в файл?


У меня есть индикатор, который дает сигнал, или система индикаторов. ЧТо одно и тоже. Короче есть сигнал. Например, РСИ >70 или < 30. Этот индикатор стоит на Дневных ТФ. В момент, когда выполняется условие, идет запись в файл: "Дата, параметр сигнала, например = 8".

Кстати, желательно предусмотреть, чтобы запись шла с интервалом, не чаще чем ххх, а не записывалась неприрывно.

На 4Н ТФ этот файл читается. Если выполняетмся условие;
1. Дата и время отличаюютсяя от текущего не более чем 1 час.
2. Есть параметр сигнала со значением = 8

Тогда на 4Н ввыполняется некое условие.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Янв 09, 2014 9:58 pm Ответить с цитатой Вернуться к началу

В общем понятно. Только тогда придется дневки гонять в АА и оттуда писать в файл, а на индикатор графике будет его читать.
Только вот зачем весь этот геморой? Можно сделать все это в одном коде и совсем не использовать никаких внешних файлов. Crying or Very sad

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



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

СообщениеДобавлено: Пт Янв 10, 2014 12:51 am Ответить с цитатой Вернуться к началу

000 писал(а):
В общем понятно. Только тогда придется дневки гонять в АА и оттуда писать в файл, а на индикатор графике будет его читать.
Только вот зачем весь этот геморой? Можно сделать все это в одном коде и совсем не использовать никаких внешних файлов. Crying or Very sad


Олежка! мы с тобой уже решали те задачи. И решить у нас в итоге не получилось. Учитывая сложность моей ТС, а также то, что уже добрых 5 лет я застрял на простой синхронизации ТФ, я согласен на геморой!

Смотри в чем идея.

На одном ТФ сложный набор всеякого хлама дает сигнал. И от хлама не избавишься! Сигнал пишем в файл. Это сложно? Просто!

На втором ТФ набор всякого хлама принимает сигнал и использует в своем назначении. Это сложно? Просто!

Ну не придумал Томас нормального и простого решения для этой задачи. Поэтому приходится использовать этот путь. Я не могу потратить еще 5-10 лет просто на исследования. Хватит! Так и жизнь проходит! Пусть это гемморное, однако простое решения. И я тебя прошу мне в этом помочь!

Если не трудно! помоги мне в этом!

Я даже хотел пойти на курсы Си#, чтобы написать нечто подобное тому, что ты сделал. Так что для меня это очень важно. Мне сейчас важно завершить мои исследования. ... Но пока что с моей стороны - это сплошной энтузиазизм и глупые инвестиции...

У меня есть цель! Я должен к ней дойти! Иневажно, самолетом или телегой! Главное двигаться, а не сидеть в рабстве годами, не имея даже дня на исследования в биржах, которые кстати, мне очень по душе!

Помоги мне, пожалуйста! И прости за мою глупость, которая со стороны кажется таковой. Только время рассудит, прав я или нет! Smile


Последний раз редактировалось: X-Story (Пт Янв 10, 2014 1:11 am), всего редактировалось 2 раз(а)
Посмотреть профиль Отправить личное сообщение
X-Story



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

СообщениеДобавлено: Пт Янв 10, 2014 12:57 am Ответить с цитатой Вернуться к началу

000 писал(а):
В общем понятно. Только тогда придется дневки гонять в АА и оттуда писать в файл, а на индикатор графике будет его читать.
Только вот зачем весь этот геморой? Можно сделать все это в одном коде и совсем не использовать никаких внешних файлов. Crying or Very sad


Кстати, а что такое АА?
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пт Янв 10, 2014 1:12 am Ответить с цитатой Вернуться к началу

X-Story писал(а):
Кстати, а что такое АА?

ЫЫы, за 5 лет мог бы и запомнить)) Automatic Analysis, бектестер типа Very Happy
Посмотреть профиль Отправить личное сообщение ICQ Number
X-Story



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

СообщениеДобавлено: Пт Янв 10, 2014 1:42 am Ответить с цитатой Вернуться к началу

spitfire писал(а):
X-Story писал(а):
Кстати, а что такое АА?

ЫЫы, за 5 лет мог бы и запомнить)) Automatic Analysis, бектестер типа Very Happy


Легко смеяться, когда в теме сидишь! У меня нет такой возможности. ... Но все равно, спасибо! Smile
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Янв 10, 2014 8:24 am Ответить с цитатой Вернуться к началу

А сигнал который на дневках он на последней не закрытой свечке формируется и меняется в течении дня?

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



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

СообщениеДобавлено: Пт Янв 10, 2014 8:29 am Ответить с цитатой Вернуться к началу

000 писал(а):
А сигнал который на дневках он на последней не закрытой свечке формируется и меняется в течении дня?


Именно так! Smile Таким образом получится не упустить актуальную ситуацию, которую на закрытых свечках можно и не увидеть ( в 50-70% случаев). Если понадобится закрытая, то как я понимаю, решается через (... , ref-1)? Smile
Посмотреть профиль Отправить личное сообщение
nightcarrier



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

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

Не так уж и трудно, на самом деле, торговать хоть кучу бумаг с одного тайм фрейма на других. Заморачиваетесь, дорогие ветераны ) И порочите Св. Томаса, кстати ) Spitfire тоже молодец: ну очень помог )

ОК, лец ду ит. Принципиальный подход:
1. ИЗ ВСЕХ ИСПОЛЬЗУЕМЫХ ТАЙМ ФРЕЙМОВ ВЫБИРАЕМ В КАЧЕСТВЕ РАБОЧЕГО НАИМЕНЬШИЙ. В нем и гоняем робот-сканер.
2. ПРОВЕРЯЕМ СИГНАЛ ПО ПОЛОЖЕНИЮ ВРЕМЕНИ ЕГО ОБНАРУЖЕНИЯ ОТНОСИТЕЛЬНО ВРЕМЕНИ КОМПА. Старье бракуем.
3. СИГНАЛ ПИШЕМ, НАПРИМЕР, В СТАТИЧЕСКУЮ ПЕРЕМЕННУЮ. Имя переменной, например, слово "BUY" + имя тикера.
4. На базе набора стат переменных организуем передачу в торговый терминал, ну или что там нам требуется.

Пусть Ваши мечты таки реализуются Very Happy
Посмотреть профиль Отправить личное сообщение
nightcarrier



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

СообщениеДобавлено: Сб Янв 11, 2014 12:11 am Ответить с цитатой Вернуться к началу

Возможный вид блока контроля времени

Код:

//БЛОК АНАЛИЗА СИСТЕМНОГО ВРЕМЕНИ
////////////////////////////////////////////////////////////////////////////////////////////////////

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

СообщениеДобавлено: Сб Янв 11, 2014 12:19 am Ответить с цитатой Вернуться к началу

Возможный вид функции контроля сигналов по Вашим правилам

Код:

/*Функция для получения предварительных сигналов на открытие позиции - по  любой бумаге и тайм фрейму*/
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

СообщениеДобавлено: Сб Янв 11, 2014 12:26 am Ответить с цитатой Вернуться к началу

nightcarrier писал(а):
Не так уж и трудно, на самом деле, торговать хоть кучу бумаг с одного тайм фрейма на других. Заморачиваетесь, дорогие ветераны ) И порочите Св. Томаса, кстати ) Spitfire тоже молодец: ну очень помог )


Ну никто его и не порочит! Smile Амиброкер, действительно отличный программный комплекс для биржевого анализа. Возможно даже и наилучший. По крайней мере, ничего подобного и лучшего для анализа не встречал. Это офигенно положительная сторона. За что ему огромное Спасибо! Smile Тем более, продукт недорогой, по сравнению с метастоками и другими стоками... Smile

Но есть некоторые вещи, которые далеки от совершенства. ЧТобы это понять, надо это пройти. Smile

Не былвает идеальных решений, даже у гениев! То, что было сказано, было сказано как факт и не более того! ... Smile

==========================

За блок времени и сигналов Большое Спасибо! Smile Прежде всего за отзывчивость и желание помочь! Smile Wink
==========================

Но мне сейчас очень важно организовать запись-чтение сигналов. Smile !!!
Посмотреть профиль Отправить личное сообщение
nightcarrier



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

СообщениеДобавлено: Сб Янв 11, 2014 12:58 am Ответить с цитатой Вернуться к началу

Да не за что. Сам был в Вашей ситуации. Ами учил ночами после работы )

ОК. Приладим к блоку контроля времени примерный блок записи неких сигналов, который будет ориентироваться на РАЗОВОЕ (не больше 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

СообщениеДобавлено: Сб Янв 11, 2014 1:17 am Ответить с цитатой Вернуться к началу

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

Код:

fh_f1 = fopen (f1, "r");//открываем файл в режиме чтения


Ну и строка забора информации (вместо записи таковой) примерно так

Код:

StaticVarGet( "Info1", StrToNum(fgets (fh_f1)) );
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Сб Янв 11, 2014 12:15 pm Ответить с цитатой Вернуться к началу

Довольно геморно и можно быстро запутаться, когда систем куча.. Лучше создать под каждую систему свою виртуальную машину и на ней гонять робота, если ресурсов не хватает, то виртуальная машина под конкретный таймфрейм. Главное чтобы брокер позволял организовывать одновременные подключения терминалов.
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen