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



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

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

000 писал(а):
Держи. Полностью готовый рабочий код.
...



Добрый день!

Приобщаюсь к AMI, пока в основном по материалам сайта.
По данной теме возник затык: график с нанесенными стрелками появляется, но при попытке прокрутить его выдает ошибку"Error 10. Subscript out o range. You must not access array elements outside 0 (BarCount - 1) range.
Версия Ami - 5.20.
Сам пока не смогу разобраться, буду признателен за помощь...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Окт 16, 2014 7:49 am Ответить с цитатой Вернуться к началу

Хм. Интересно, какой именно массив переполняется?
Попробуй в начало кода вставить строку
Код:
SetBarsRequred(sbrAll, sbrAll);

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



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

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

000 писал(а):
Попробуй... SetBarsRequired...

... Помогло, спасибо!
Возможно, база великовата - порядка 2,5 млн. тиков. Но теперь работает.
Посмотреть профиль Отправить личное сообщение
iuiu



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

СообщениеДобавлено: Сб Дек 10, 2016 9:53 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Держи. Полностью готовый рабочий код.
Код:

/*
Формат файла сделок
Ticker,Date,Time,Operation,Price,Volume

Пример
ROSN,21/12/2010,17:30:00,BUY,221,5
ROSN,20/12/2010,11:30:00,BUY,220,1
ROSN,22/12/2010,14:30:00,BUY,220,1
ROSN,22/12/2010,14:45:00,SELL,220,1
ROSN,22/12/2010,15:45:00,SHORT,222,1
ROSN,22/12/2010,18:30:00,SHORT,222,1
ROSN,23/12/2010,14:45:00,COVER,223,6
*/

fh = fopen( "C:/111.txt", "r");
if( fh )
{
   Buy = Sell = Short = Cover = 0;
   BuyPrice = SellPrice = ShortPrice = CoverPrice = 0;

   dt = DateTime(); 

   while(!feof(fh))
   {
      s = fgets(fh);
      if(StrExtract(s, 0) == Name())
      {
         dtStr = StrToDateTime(StrExtract(s,1) + " " + StrExtract(s,2));
         bi = LastValue(ValueWhen(dtStr > Ref(dt, -1) AND dtStr <= dt, BarIndex()));
         v0 = StrToNum(StrExtract(s,5));
         p0 = StrToNum(StrExtract(s,4));
         act = StrExtract(s,3);
         if(act=="BUY")
         {
            Buy[bi] = 1;
            BuyPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*0.995, colorBlack);
            VolBuy[bi] = V0;
         }
         else if(act=="SELL")
         {
            Sell[bi] = 1;
            SellPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*1.005, colorBlack);
         }
         else if(act=="SHORT")
         {
            Short[bi] = 1;
            ShortPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*1.005, colorRed);
            VolShort[bi] = V0;
         }
         else if(act=="COVER")
         {
            Cover[bi] = 1;
            CoverPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*0.995, colorRed);
         }
      }
   }
   fclose( fh );
}

Plot(C, "", colorBlack, styleCandle);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen, 0, BuyPrice);
PlotShapes(IIf(Sell,shapeHollowDownArrow, 0),colorGreen, 0, SellPrice);
PlotShapes(IIf(Short,shapeDownArrow,0),colorRed, 0, ShortPrice);
PlotShapes(IIf(Cover,shapeHollowUpArrow, 0),colorRed, 0, CoverPrice);


Все супер считывает и рисует, но блин , на следующем баре...такое ощущение, что время бара определяется по его окончании, а не по первому тику, как я задал в настройках Intraday -> time of FIRST tick inside bar. Подскажите, это в коде нельзя поправить или мне тупо на минуту сдвинуть время сделки в файле...?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Дек 10, 2016 10:16 pm Ответить с цитатой Вернуться к началу

Если не ошибаюсь, то вот тут
Код:
bi = LastValue(ValueWhen(dtStr > Ref(dt, -1) AND dtStr <= dt, BarIndex()));
ищется бар. Меняй вот эти условия dtStr > Ref(dt, -1) AND dtStr <= dt как тебе надо.

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



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

СообщениеДобавлено: Сб Дек 10, 2016 10:59 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Если не ошибаюсь, то вот тут
Код:
bi = LastValue(ValueWhen(dtStr > Ref(dt, -1) AND dtStr <= dt, BarIndex()));
ищется бар. Меняй вот эти условия dtStr > Ref(dt, -1) AND dtStr <= dt как тебе надо.

bi = LastValue(ValueWhen(dtStr > Ref(dt, -1) AND dtStr <= dt, BarIndex()-1));
Вот так заработало
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Можно и так.

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



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

СообщениеДобавлено: Пт Янв 21, 2022 6:59 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Держи. Полностью готовый рабочий код.
Код:

/*
Формат файла сделок
Ticker,Date,Time,Operation,Price,Volume

Пример
ROSN,21/12/2010,17:30:00,BUY,221,5
ROSN,20/12/2010,11:30:00,BUY,220,1
ROSN,22/12/2010,14:30:00,BUY,220,1
ROSN,22/12/2010,14:45:00,SELL,220,1
ROSN,22/12/2010,15:45:00,SHORT,222,1
ROSN,22/12/2010,18:30:00,SHORT,222,1
ROSN,23/12/2010,14:45:00,COVER,223,6
*/

fh = fopen( "C:/111.txt", "r");
if( fh )
{
   Buy = Sell = Short = Cover = 0;
   BuyPrice = SellPrice = ShortPrice = CoverPrice = 0;

   dt = DateTime(); 

   while(!feof(fh))
   {
      s = fgets(fh);
      if(StrExtract(s, 0) == Name())
      {
         dtStr = StrToDateTime(StrExtract(s,1) + " " + StrExtract(s,2));
         bi = LastValue(ValueWhen(dtStr > Ref(dt, -1) AND dtStr <= dt, BarIndex()));
         v0 = StrToNum(StrExtract(s,5));
         p0 = StrToNum(StrExtract(s,4));
         act = StrExtract(s,3);
         if(act=="BUY")
         {
            Buy[bi] = 1;
            BuyPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*0.995, colorBlack);
            VolBuy[bi] = V0;
         }
         else if(act=="SELL")
         {
            Sell[bi] = 1;
            SellPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*1.005, colorBlack);
         }
         else if(act=="SHORT")
         {
            Short[bi] = 1;
            ShortPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*1.005, colorRed);
            VolShort[bi] = V0;
         }
         else if(act=="COVER")
         {
            Cover[bi] = 1;
            CoverPrice[bi] = p0;
            PlotText(StrExtract(s,5) + " Lots", bi, p0*0.995, colorRed);
         }
      }
   }
   fclose( fh );
}

Plot(C, "", colorBlack, styleCandle);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen, 0, BuyPrice);
PlotShapes(IIf(Sell,shapeHollowDownArrow, 0),colorGreen, 0, SellPrice);
PlotShapes(IIf(Short,shapeDownArrow,0),colorRed, 0, ShortPrice);
PlotShapes(IIf(Cover,shapeHollowUpArrow, 0),colorRed, 0, CoverPrice);


Понадобилось мне тут на график, база которая в рилтайм данные выводит, вывести места входа в сделки, нашел код который как бы это делает.
Вопрос - что должно выводиться на график в данном коде?
И будет ли выводиться в рилтайм базе или только на истории?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Выводится стрелка и надпись "Х Lots". Работать будет везде.

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



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

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

000 писал(а):
Выводится стрелка и надпись "Х Lots". Работать будет везде.


Да, работает....я забыл еще и тикер поменять, когда менял все остальное ))
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen