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



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

СообщениеДобавлено: Вс Янв 03, 2010 5:49 pm Ответить с цитатой Вернуться к началу

Я пока только стартую, поэтому заранее прошу не судить строго... но прошу помочь =). Вобщем так, есть два индикатора, один типа измеряет волатильность, назовем "х", а второй, построенный от него, чтото типа боллинджера... топ пускай будет "у1", а бот - "y2"...

так вот я хочу чтобы сигнал на продажу был когда x больше y1, а покупка когда x меньше y2.

SELL = IIf ( "x" (15, 3) > "Y1" (15, 3) 15, 2), Cond1, Cond2 );
а как нужно записать Cond2 чтобы он ничего не делал?

Buy = IIf ( "x" (15, 3) < "y2", Cond3, Cond);

Через cross так вообще транзакций никаких нету.

Если поняли - плиз, помогите чайнику.

your help will be kindly appreciated.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Янв 03, 2010 8:23 pm Ответить с цитатой Вернуться к началу

Ronski писал(а):

так вот я хочу чтобы сигнал на продажу был когда x больше y1, а покупка когда x меньше y2.

SELL = IIf ( "x" (15, 3) > "Y1" (15, 3) 15, 2), Cond1, Cond2 );
а как нужно записать Cond2 чтобы он ничего не делал?

Можно так
Cond2 = 0;
SELL = IIf ( "x" (15, 3) > "Y1" ((15, 3) 15, 2), Cond1, Cond2 );

Но лучше и проще так
SELL = "x" (15, 3) > "Y1" ((15, 3) 15, 2);

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



Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва

СообщениеДобавлено: Вс Янв 03, 2010 8:51 pm Ответить с цитатой Вернуться к началу

А это так , для общего развития Very Happy ... выписка из AmiHelp

....
Функция ''условий'' IIF()

Функция iif() предназначена для создания условий. Содержит в себе три параметра , как показано в примере .

dynamicrsi = IIf( Close > MA(C,10), RSI(9), RSI(14) );

Здесь каждый раз динамическому РСИ присваивается разное значение в зависимости от того, где находится КЛОУЗ по отношению к 10 периодному мувингу.

Дословно приведенный пример звучит так – если КЛОУЗ больше 10 пер. мувинга, то dynamicrsi равно значению РСИ с периодом 9. Если условие не выполняется dynamicrsi присваивается значение РСИ с периодом 14.

Следующий пример это пример с объемом.

volresult = IIf( Close > (High+Low)/2, Volume, -Volume );

Если КЛОУЗ больше средней цены тогда присваивается положительное значение объему, если наоборот тогда отрицательное.

Если требуется присвоить значение типа ''ВЕРНО'' или ''НЕВЕРНО''
Тогда можно обойтись следующей строкой.

result = RSI(14) > 70;

с функцией IIF() можно получить такой же результат, но длинна формулы будет больше.

result = IIf(RSI(14) > 70, 1, 0 );

Нельзя забывать что IIF() это функция и результатом ее действия возвращается значение, которое дальше присваивается переменной.

Нельзя так же забывать что эта функция, а не стандартные условия IF –THEN , что будут описаны ниже. Функция IIF() возвращает значение в массив той переменной, какую вы назначите.

Вот стандартная ошибка при использовании IIF() функции.

IIf( condition, result = 7, result = 9 ); // это не верно.
Вот правильно.
result = IIf( condition, 7, 9 );
/* 7 или 9 возвращается переменной в зависимости от выполнения условия*/

....
Удачи +))
Посмотреть профиль Отправить личное сообщение
SImple



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

СообщениеДобавлено: Пн Янв 04, 2010 1:41 pm Ответить с цитатой Вернуться к началу

Но лучше и проще так
SELL = "x" (15, 3) > "Y1" ((15, 3) 15, 2);[/quote]

Спасибо большое! Для меня как для человека никогда не сталкивавшегося с программированием подобные действия сложны очень) Но это же challenge) C Новым Годом!
Посмотреть профиль Отправить личное сообщение
SImple



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

СообщениеДобавлено: Пн Янв 04, 2010 1:43 pm Ответить с цитатой Вернуться к началу

tlt-vlad писал(а):
А это так , для общего развития Very Happy ... выписка из AmiHelp

....

....
Удачи +))


Спасибо! Но если бы все было так просто - прочитал выписку и все понял ) Я бы не стал просить о помощи, верно? )

Kind regards
Посмотреть профиль Отправить личное сообщение
snowkam



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

СообщениеДобавлено: Пт Июл 23, 2010 10:00 am Ответить с цитатой Вернуться к началу

Почему нельзя использовать IIF со строками
проимер
str1= iif( i >x ,"XXX", "YYY") ;

ВЫдает ошибку
Может синтаксис не такой?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Июл 25, 2010 1:14 pm Ответить с цитатой Вернуться к началу

Функция IIF возвращает массив, а стока в Ами может быть только константой, вот поэтому и ругается....

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen