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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

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

Допустим, у меня имеется кривая.

Начало кривой задается следующим участком кода:

Код:

BarsStart = 1+BarsSince(DateNum() == dd AND tt == TimeNum());
StartBar = LastValue( ValueWhen( DateNum() == dd AND tt == TimeNum(), BarIndex() ) );


Т.е. я в меню параметров задаю дату и время первого бара.

Возможно ли переписать сие так, чтобы стартовая свеча задавалась путем перетаскивания метки или чего-либо еще на графике? Ибо как тогда понять, для какой кривой мы будем обозначать старт "тычком".

Дополнительно отмечу, что кривых на графике может быть много, поэтому вариант с "просто тыкнуть на график для обозначения места старта" (такое я встречал) не пройдет.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Можно. Только я сейчас очень занят. Постараюсь написать как будет время. Напомни через недельку.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Окт 07, 2018 1:35 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Можно. Только я сейчас очень занят. Постараюсь написать как будет время. Напомни через недельку.


Хорошо. Буду с нетерпением ждать.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

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

000 писал(а):
Можно. Только я сейчас очень занят. Постараюсь написать как будет время. Напомни через недельку.


Как и просил, напоминаю через неделю.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Окт 12, 2018 12:47 pm Ответить с цитатой Вернуться к началу

Можно так
Код:

MouseOnBut =
   GetCursorXPosition( 1 ) > 5 AND
   GetCursorXPosition( 1 ) < 90 AND
   GetCursorYPosition( 1 ) > 20 AND
   GetCursorYPosition( 1 ) < 50;
   
LeftClik = GetCursorMouseButtons() == 9;

if(Nz(StaticVarGet("key")) == 0)
{
   color = colorBlue;
   if(MouseOnBut AND LeftClik)
   {
      color = colorRed;
      StaticVarSet("key", 1);
   }
}
else
{
   color = colorRed;
   if(MouseOnBut == 0 AND LeftClik)
   {
      color = colorBlue;
      StaticVarSet("key", 0);
      StaticVarSet("Data", GetCursorXPosition());
   }
}

BarsStart = DateTime() == StaticVarGet("Data");

GfxSelectSolidBrush( color );
GfxRectangle( 5, 20, 90, 50 );
GfxSelectFont("Tahoma", 12, 700 );
GfxSetBkColor(color);
GfxSetTextColor(colorWhite);
GfxTextOut( "Кнопка", 15, 23 );

Plot(BarsStart, "", colorRed);

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Пт Окт 12, 2018 8:22 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Можно так


К сожалению не работает.

Давай я сделаю по другому, а то, возможно, непонятно выразился.

Есть такой код:

Код:

Bars = 1 + BarsSince(SelectedValue(DateTime()) == DateTime()); 
StartBar = ValueWhen(SelectedValue(DateTime()) == DateTime(), BarIndex());

TodayVolume = Sum(V, Bars);
Avgp=(C+O+L+H)/4;
IIf (BarIndex() >= StartBar, VWAP = Sum (Avgp * V, Bars )/TodayVolume, Null);
VWAP = IIf(VWAP > 0 , VWAP, Null);
Plot (VWAP,"VWAP",colorGreen, styleThick);


Он рисует VWAP. Место старта выбирается кликом мыши на нужном баре.

Но, если мы хотим добавить еще один VWAP на график, то они накладываются друг на друга, поскольку клик мыши работает сразу для двух.

Вот как тут сделать возможность выбора? Типа метки над стартом каждого VWAP, чтобы за неё можно было перетащить или еще как-то?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вот за это
Код:
IIf (BarIndex() >= StartBar, VWAP = Sum (Avgp * V, Bars )/TodayVolume, Null);

надо подвешивать за яйца.
ВОТ ТАК!!!
Код:
VWAP = IIf (BarIndex() >= StartBar, Sum (Avgp * V, Bars )/TodayVolume, Null);

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


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

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

Код:

MouseOnBut1 =
   GetCursorXPosition( 1 ) > 5 AND
   GetCursorXPosition( 1 ) < 90 AND
   GetCursorYPosition( 1 ) > 20 AND
   GetCursorYPosition( 1 ) < 50;

MouseOnBut2 =
   GetCursorXPosition( 1 ) > 95 AND
   GetCursorXPosition( 1 ) < 175 AND
   GetCursorYPosition( 1 ) > 20 AND
   GetCursorYPosition( 1 ) < 50;
   
LeftClik = GetCursorMouseButtons() == 9;

if(Nz(StaticVarGet("key1")) == 0)
{
   color1 = colorBlue;
   if(MouseOnBut1 AND LeftClik)
   {
      color1 = colorRed;
      StaticVarSet("key1", 1);
   }
}
else
{
   color1 = colorRed;
   if(MouseOnBut1 == 0 AND LeftClik)
   {
      color1 = colorBlue;
      StaticVarSet("key1", 0);
      StaticVarSet("Data1", GetCursorXPosition());
   }
}

if(Nz(StaticVarGet("key2")) == 0)
{
   color2 = colorBlue;
   if(MouseOnBut2 AND LeftClik)
   {
      color2 = colorRed;
      StaticVarSet("key2", 1);
   }
}
else
{
   color2 = colorRed;
   if(MouseOnBut2 == 0 AND LeftClik)
   {
      color2 = colorBlue;
      StaticVarSet("key2", 0);
      StaticVarSet("Data2", GetCursorXPosition());
   }
}

BarsStart1 = DateTime() == StaticVarGet("Data1");
BarsStart2 = DateTime() == StaticVarGet("Data2");

GfxSelectSolidBrush( color1 );
GfxRectangle( 5, 20, 90, 50 );
GfxSelectFont("Tahoma", 12, 700 );
GfxSetBkColor(color1);
GfxSetTextColor(colorWhite);
GfxTextOut( "Кнопка", 15, 23 );

GfxSelectSolidBrush( color2 );
GfxRectangle( 95, 20, 175, 50 );
GfxSelectFont("Tahoma", 12, 700 );
GfxSetBkColor(color2);
GfxSetTextColor(colorWhite);
GfxTextOut( "Кнопка", 105, 23 );

VWAP1 = IIf (DateTime() >= StaticVarGet("Data1"), MA(C, 10), Null);

VWAP2 = IIf (DateTime() >= StaticVarGet("Data2"), MA(C, 20), Null);

Plot(VWAP1, "", colorRed);
Plot(VWAP2, "", colorGreen);

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Пн Окт 15, 2018 7:35 pm Ответить с цитатой Вернуться к началу

Да, интересная реализация. Спасибо.

Правда не совсем как я хотел. Тут у нас заранее определено количество кривых. А я их кидаю на график время от времени. Их может быть и 3, и одна...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Можно сделать так, чтобы когда кидаешь добавлялась новая кнопка...

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Пн Окт 22, 2018 8:54 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Можно сделать так, чтобы когда кидаешь добавлялась новая кнопка...


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


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

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

Совести у тебя нет ))))
Код:

Shift = Param("Shift", 0, 0, 500, 100, 100 );

if(Shift==0)
   i = "1";
else if(Shift==100)
   i = "2";
else if(Shift==200)
   i = "3";
else if(Shift==300)
   i = "4";
else
   i = "5";

MouseOnBut =
   GetCursorXPosition( 1 ) > Shift + 10 AND
   GetCursorXPosition( 1 ) < Shift + 90 AND
   GetCursorYPosition( 1 ) > 20 AND
   GetCursorYPosition( 1 ) < 50;

   
LeftClik = GetCursorMouseButtons() == 9;

if(Nz(StaticVarGet("key"+i)) == 0)
{
   color = colorBlue;
   if(MouseOnBut AND LeftClik)
   {
      color = colorRed;
      StaticVarSet("key"+i, 1);
   }
}
else
{
   color = colorRed;
   if(MouseOnBut == 0 AND LeftClik)
   {
      color = colorBlue;
      StaticVarSet("key"+i, 0);
      StaticVarSet("Data"+i, GetCursorXPosition());
   }
}

BarsStart1 = DateTime() == StaticVarGet("Data"+i);

GfxSelectSolidBrush( color );
GfxRectangle( Shift + 10, 20, Shift + 90, 50 );
GfxSelectFont("Tahoma", 12, 700 );
GfxSetBkColor(color);
GfxSetTextColor(colorWhite);
GfxTextOut( "Кнопка", Shift + 20, 23 );


VWAP1 = IIf (DateTime() >= StaticVarGet("Data"+i), MA(C, Shift+1), Null);

Plot(VWAP1, "", ParamColor("Color", colorRed), styleThick);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen