Автор |
Сообщение |
Renown
Зарегистрирован: 14.10.2009
Сообщения: 38
|
У меня два вопроса по функции 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
|
Попробуй вмсто этого
Код: |
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
|
Вот такой код:
Код: |
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); |
Выдает повторяющийся сигнал продажи, даже когда последняя свеча белая. И в старом коде тоже, хотя вчера все работало как положено!
Запихнул код в АА, поставил запуск раз в минуту. Выдает сигнал Продажи раз в минуту вне зависимости от от выполнения условий
Даже не знаю, где и копать Версия Ами 5.10.2. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот еще что. Попробуй в StaticVar засовывать не русский текст, а англ или вообще цифры. Ами не очень любит русский язык. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Renown
Зарегистрирован: 14.10.2009
Сообщения: 38
|
С цифрами и английским текстом то же самое. Попробовал оставить только одно условие:
Код: |
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
|
А так попробуй
Код: |
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");
|
Я, к сожалению, пробовать не могу, у меня ни на одном компе звука нет... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Renown
Зарегистрирован: 14.10.2009
Сообщения: 38
|
Огромное спасибо, заработало!
Остался только вопрос - можно ли текущую цену подставить как аргумент в фунцию Say(), чтобы к примеру быть в курсе рынка не смотря непосредственно на экран? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Renown писал(а): |
Огромное спасибо, заработало!
Остался только вопрос - можно ли текущую цену подставить как аргумент в фунцию Say(), чтобы к примеру быть в курсе рынка не смотря непосредственно на экран? |
Не знаю. У меня компы все без звука... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|