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



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

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

У меня два вопроса по функции Say():
1) Задача состоит в том, чтобы как только условие покупки или продажи начнет выполняться, Ами голосом дал отмашку на вход.

Я сделал так :
Код:
function SayOnce( text )
{
   if( StaticVarGetText("lastsaidtext") != text )
   {
      Say( text );
      StaticVarSetText("lastsaidtext", text );
   }
}
for (i=BarCount-1; i<BarCount;i++)
{
 if (Buy [i]) SayOnce("Покупка");
 if (Short [i]) SayOnce("Продажа");
}

Работает, но при прокрутке графика Ами также говорит сигналы на основе свечей правого края, то есть уже устаревшие. (И прокрутка немного подтормаживает). Как можно сделать, чтобы сигналы выдавались исключительно по последним значениям?

2) И второй вопрос: как можно сделать, чтобы по мере обновления базы Ами голосом сообщал текущую цену?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Окт 19, 2009 9:23 pm Ответить с цитатой Вернуться к началу

Попробуй вмсто этого
Код:
for (i=BarCount-1; i<BarCount;i++)
{
 if (Buy [i]) SayOnce("Покупка");
 if (Short [i]) SayOnce("Продажа");
}

вот это
Код:
IIf(LasValue(Buy), SayOnce("Покупка"), 0);
IIf(LasValue(Short), SayOnce("Продажа"), 0);
А еще лучше делать это через АА.
АА на перемещение графика, изменение фрейма и т.п. вообще внимания не обращает.

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



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

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

Вот такой код:
Код:
Buy = C > O;
Sell = С < O;
function SayOnce( text )
{
   if( StaticVarGetText("lastsaidtext") != text )
   {
      Say( text );
      StaticVarSetText("lastsaidtext", text );
   }
}
IIf(LastValue(Buy), SayOnce("Покупка"), 0);
IIf(LastValue(Sell), SayOnce("Продажа"), 0);

Выдает повторяющийся сигнал продажи, даже когда последняя свеча белая. И в старом коде тоже, хотя вчера все работало как положено!

Запихнул код в АА, поставил запуск раз в минуту. Выдает сигнал Продажи раз в минуту вне зависимости от от выполнения условий

Даже не знаю, где и копать Sad Версия Ами 5.10.2.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вот еще что. Попробуй в StaticVar засовывать не русский текст, а англ или вообще цифры. Ами не очень любит русский язык.

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



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

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

С цифрами и английским текстом то же самое. Попробовал оставить только одно условие:
Код:
Sell = C < O;
function SayOnce( text )
{
   if( StaticVarGetText("lastsaidtext") != text )
   {
      Say( text );
      StaticVarSetText("lastsaidtext", text );
   }
}
IIf(LastValue(Sell), SayOnce("short"), 0);
Ами выдает продажу один раз, вне зависимости от условия . При добавлении второго условия получаю повторное произношение текста для него. При добавлении третьего условия - текста для третьего условия и т. д.

Код вида:
Код:
Sell = C < O;
function SayOnce( text )
{
   if( StaticVarGetText("lastsaidtext") != text )
   {
      Say( text );
      StaticVarSetText("lastsaidtext", text );
   }
}
IIf(LastValue(Sell), SayOnce("short"), SayOnce("Buy"));
Постоянно произносит "buy".
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Окт 20, 2009 2:08 pm Ответить с цитатой Вернуться к началу

А так попробуй
Код:

Sell = C < O;
Buy = O < C;

function SayOnce( text )
{
   if( StaticVarGetText("lastsaidtext") != text )
   {
      Say( text );
      StaticVarSetText("lastsaidtext", text );
   }
}

if(LastValue(Sell))
  SayOnce("short");
if(LastValue(Buy))
  SayOnce("Buy");

Я, к сожалению, пробовать не могу, у меня ни на одном компе звука нет... Sad

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



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

СообщениеДобавлено: Вт Окт 20, 2009 3:36 pm Ответить с цитатой Вернуться к началу

Огромное спасибо, заработало! Smile
Остался только вопрос - можно ли текущую цену подставить как аргумент в фунцию Say(), чтобы к примеру быть в курсе рынка не смотря непосредственно на экран?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Renown писал(а):
Огромное спасибо, заработало! Smile
Остался только вопрос - можно ли текущую цену подставить как аргумент в фунцию Say(), чтобы к примеру быть в курсе рынка не смотря непосредственно на экран?

Не знаю. У меня компы все без звука... Wink

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen