У вас не стоит Flash Player
Page 1 of 13 1 2 3 ... 12 13 >
Настройки
#8149 - Mon Jul 12 2010 11:15 AM Пример: «Логическая формула», "Формула". Синтаксис
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Пример: Использование блоков «Логическая формула» и «Формула». Синтаксис


Логическая формула
Используется для проверки истинности выражения. На выходе логической формулы всегда 0 (т.е. «ложь» или англ. вариант – «false») или 1 (соответственно «истина» или англ. вариант – «true»). На практике обычно применяется для записи условия входа/выхода из позиции. Рассмотрим синтаксис, который возможно использовать в блоке «Логическая формула».

В блоке «Логическая формула» могут быть использованы следующие операции сравнения (для каждой операции приведен пример):

Code:
Наименование	  Обозначение	  Пример
Больше	          >	          Close>Open
Меньше	          <	          Open[i]<Open[i-1]
Больше или равно  >=	          Close>=Open
Меньше или равно  <=	          Close<=EMA
Равно	          ==	          Close==High
Равно истина	  ==true	  Логическая формула==true
Равно ложь	  ==false	  Логическая формула1==false
Не равно	  !=	          Close!=High
Не равно истина	  !=true	  Логическая формула!=true
Не равно ложь	  !=false	  Логическая формула1!=false

Помимо операций сравнения в блоке «Логическая формула» можно производить одновременную проверку ряда условий. Эти условия должны быть объединены следующими операторами:

Code:
Наименование	  Обозн.     Пример
Логическое «И»	  &&	     Close>Open && Open[i]<Open[i-1]
Логическое «ИЛИ»  ||	     EMA==EMA1 || Close<=EMA

При использовании «И», на выходе блока «Логическая формула» будет истина лишь в том случае, если все условия, записанные в блоке – истинны. При использовании «ИЛИ», на выходе блока будет истина, если хотя бы одно из условий, записанное в блоке – истинно.

Примечание. В блоке «Логическая формула» возможно использование математических функций: Сложение, Вычитание, Умножение, Деление.


Формула
Используется для вычисления значений выражений. На выходе всегда числовое значение. На практике обычно применяется для промежуточных расчетов, а также для вычисления уровней входа/выхода из позиции.
В блоке «Формула» допустимо использование следующих операций:

Code:
Наименование	Обозначение	Пример
Сложение	+	        Open+Close
Вычитание	-	        EMA-EMA1
Умножение	*	        Close*Константа
Деление	        /	        Close/Close[i-1]

Особенностью блока «Формула» является возможность использования логического условия If (Если). Результатом выполнения будет все равно являться число. Запись логического условия If в блоке «Формула» выглядит следующим образом:

Code:
Логическое_условие?Выражение,_если_истина:Выражение,_если_ложь

В результате проверки Логического условия, если оно истинно – на выходе блока «Формула» будет «Выражение,_если_истина», в противном случае – «Выражение,_если_ложь».
Пример использования:

Code:
EMA>Close?((Close+Open)/2):Open



Общие возможности для блоков «Логическая формула» и «Формула»

1. Возможность работы с предыдущими значениями некой последовательности (цены, индикатора и прочее). В блоках возможно обращение к предыдущим значениям цен или индикаторов. Текущее значение всегда обозначается индексом i. Для того, чтобы обратиться, например, к предыдущему значению Цены закрытия, следует записать

Code:
Close[i-k]

Где k целое число, может быть константой или формулой, индикатором.
В случае использования в расчетах и проверках обращение к предыдущим элементам, следует не забывать про параметр «Начинать с». Параметр показывает формуле с какого бара начинать расчет. Самым простым способом запомнить, что ставить в поле «Начинать с», посмотреть максимальное число, вычитаемое из индекса i.

Пример. В логической формуле записано выражение:

Code:
Close[i-1]>Close[i-2] && Close[i-2]>Close[i-3] &&
Close[i-8]>Close[i-9] && Close[i-8]>Константа

Посмотрев на эту запись, видим что максимальное значение числа в квадратных скобках равно 9. Поэтому в поле «Начинать с» мы ставим 9.
В версии 2.0 и выше, если используется число, не константа и не формула и не индикатор, то Начинать С можно не ставить, программа сама определит нужное значение. В случае использования константы, формулы, индикатора, НачинатьС обязательно, скрипт без него не соберется.

Почему при обращении к предыдущим элементам надо менять значение в поле «Начинать с»? Все просто. Последовательность значений имеет начало или границу. За пределами начала ничего нет, там пусто. Все расчеты строятся относительно текущего значения i, поэтому, когда начинаем считать значение для i=0, т.е. для первого значения последовательности, и пытаемся сослаться, допустим, на предыдущее значение, программа скажет, что там пусто и вычислить она не сможет.

Аксиома:
• Запись Close[i] равноценна записи Close


2. Возможность использования функций библиотеки Math. В выражениях, записываемых в блоках «Формула» и «Логическая формула» возможно использование функций из библиотеки Math. Список функций и описание приведено на сайте MSDN: http://msdn.microsoft.com/ru-ru/library/xaz41263.aspx

Необходимость в этих функциях появляется, когда не хватает стандартных математических действий, о которых шла речь выше. Использование функций из библиотеки Math позволяет, например:
• Вычислить абсолютное значение
• Возвести число в степень
• Вычислить синус, косинус и т.д.
• Округлить число
• Вычислить квадратный корень из числа
• И т.д.

Как использовать эти функции в блоках? Для вычисления значения с помощью функции необходимо записать:

Code:
Math.Название_функции(Выражение)

Пример. Необходимо вычислить абсолютное значение для выражения (EMA-EMA1).

Code:
Math.Abs(EMA-EMA1)

Использование других функций – аналогично, различие возможно в количестве параметров функции, которые указываются в скобках).

Особенность блока формулы, при работе в режиме калькулятора:
Например, если в формуле записать
Code:
13/3
ожидается, что при выводе формулы на график получим 4,33
Но формула будет показывать число 4
Целое число поделить на целое число, получим целое число.
Лайфхак: числителю или к знаменателю дописать .0
Т.е. записать 13/3.0 , а не 13/3
Или для таких расчётов использовать константы. Получим две константы "Константа13" с числом 13 и "Константа3" с числом 3. В формуле записать Константа13/Константа3

Текущий бар в блоке формула или в логической формуле:
Если в блоке формула написать букву i и на эту формулу подать поток, например Закрытие бара от источника. Формула отдаст текущее количество баров.
Тоже касается логической формулы, например i>5
Если подать не закрытие от источника, а закрытие от сжатия, то формула отдаст текущий бар Сжатия.

Картинок не будет, но будут .xml файлы со всеми примерами из этого текста.


Attachments
Sample_logical_formula.xml (1922 downloads)
Sample_formula.xml (1171 downloads)
Sample_logical_formula_&_formula_basic.xml (1306 downloads)



Отредактировано ViL (Thu Feb 07 2019 08:29 PM)

Наверх
#8151 - Mon Jul 12 2010 11:35 AM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: SysKreator]
Vladimir / Offline
old hand

Registered: Tue Jan 05 2010
Записи: 1098
Loc: Набережные Челн...
отлично, спасибо огромное.

Наверх
#8154 - Mon Jul 12 2010 11:56 AM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Vladimir /]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Пжлста! smile

Продолжение следует... wink

Наверх
#8157 - Mon Jul 12 2010 01:00 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: SysKreator]
Frend Offline
Pooh-Bah

Registered: Sat Jan 09 2010
Записи: 2054
гуд, только раньше на пол года надо было хотя бы
_________________________
Помогу с реализацией вашей идеи, оценкой системы. Консультации
frendwork@rambler.ru

Наверх
#8159 - Mon Jul 12 2010 01:10 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Frend]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Originally Posted By: Frend
гуд, только раньше на пол года надо было хотя бы


Не хорошо только о себе думать, о других тоже надо wink

Наверх
#8161 - Mon Jul 12 2010 02:02 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: SysKreator]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Спасибо, молодец! smile
Эх! Полгодика бы назад!
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8163 - Mon Jul 12 2010 02:10 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: 777]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
Originally Posted By: 777
Спасибо, молодец! smile
Эх! Полгодика бы назад!

А что,рынок вот-вот закончится?
Конечно хотелось бы пораньше, но Энди сказал в мор.. пардон, ждать, значит ждать. Тем более по-моему они с Эн-дроном вдвоем остались. Вот остальные вернутся с Канар или Командор и всё быстрее закрутится..:-))

А примеры-уроки Креатора действительно хороши..
Есть предложение разработчикам - помещать их в справочник по визуальному редактору в техдокументации в соответствующте клонки..

Наверх
#8164 - Mon Jul 12 2010 02:12 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: usas]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: usas
Originally Posted By: 777
Спасибо, молодец! smile
Эх! Полгодика бы назад!

А что,рынок вот-вот закончится?
..:-))

Да ну! Я же о потерянном времени на метод научного тыка..
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8338 - Wed Jul 14 2010 12:01 AM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: SysKreator]
savvin1988 Offline
journeyman

Registered: Wed Jan 20 2010
Записи: 80
Loc: Брянск
[quote=SysKreator]
Code:
Логическое_условие?Выражение,_если_истина:Выражение,_если_ложь

В результате проверки Логического условия, если оно истинно – на выходе блока «Формула» будет «Выражение,_если_истина», в противном случае – «Выражение,_если_ложь».
Пример использования:

Code:
EMA>Close?((Close+Open)/2):Open



Спасибо за вышеизложенное очень помогло!!

Вопрос по этому условию - если я хочу чтобы выполнение происходило так.

Code:
Логическое_условие?Выражение,_если_истина: (1)


В результате проверки Логического условия, если оно истинно – на выходе блока «Формула» будет «Выражение,_если_истина» (1) а если оно не истинно то ничего происходить не должно

Точнее здесь описано условие if a>b then sell market else buy market

А как сделать структуру if a>b then sell market




Отредактировано savvin1988 (Wed Jul 14 2010 12:06 AM)

Наверх
#8347 - Wed Jul 14 2010 10:43 AM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: savvin1988]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
просто соединить условие "a>b" с блоком "sell market"

Наверх
#10494 - Sat Aug 21 2010 02:13 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: SysKreator]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
Originally Posted By: SysKreator
Пжлста! smile

Продолжение следует... wink


SysKreator добрый день!
Есть блоки "Текущий доход/убыток", абсолютный и в %.
Есть мысли по их использованию, но описания работы нет.
Когда начинает считать, что на него следует подавать, как из него вытаскивать, как, чем и в какой момент сбрасывается, можно ли в него предварительно что-то записать, а потом вычитать/прибавлять в реале с проверкой на "0" или заданное значение ну ит.д. Если можно - с примером, лучше доходит..
Спасибо..

Наверх
#13335 - Sat Sep 18 2010 12:09 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: usas]
Stanley Offline
enthusiast

Registered: Mon Jun 21 2010
Записи: 283
Подскажите пожалуйста, есть ли способ задать в кубиках арифметическое среднее за определенное количество периодов.(не вбивая [i-1], [i-2] по сто раз?

Наверх
#13338 - Sat Sep 18 2010 02:49 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Stanley]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: Stanley
Подскажите пожалуйста, есть ли способ задать в кубиках арифметическое среднее за определенное количество периодов.(не вбивая [i-1], [i-2] по сто раз?

Есть же блок "Сумма За" - в формулу его - и делите на период, указанный в блоке.
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#13355 - Sun Sep 19 2010 07:55 AM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: 777]
Stanley Offline
enthusiast

Registered: Mon Jun 21 2010
Записи: 283
Надо же..Просмотрел...Спасибо)

Наверх
#15579 - Wed Oct 20 2010 06:42 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Stanley]
Stanley Offline
enthusiast

Registered: Mon Jun 21 2010
Записи: 283
Подскажите пожалуйста.Хочу округлить десятичное число (1/10000)до 1/100. Почему-то в формуле если написать Math.Round(Double)(A) (А-это выражение которое я хочу округлить, то он мне выдаёт ошибку) error CS0118: 'double' is a 'type' but is used like a 'variable'

Наверх
#15580 - Wed Oct 20 2010 06:49 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Stanley]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8139
Пример:
Math.Round(9.43, 1);
//Вернет 9.4

Наверх
#15582 - Wed Oct 20 2010 07:07 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: ViL]
Stanley Offline
enthusiast

Registered: Mon Jun 21 2010
Записи: 283
Большое спасибо)

Наверх
#15793 - Fri Oct 22 2010 07:21 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Stanley]
FirstAID Offline
member

Registered: Tue Sep 28 2010
Записи: 118
Как задать условие , чтобы если (например) EMA за последние [константа] свеч не пересекалась , иначе не открывать позицию ,точнее что надо написать в логической формуле ?


Отредактировано FirstAID (Fri Oct 22 2010 07:21 PM)

Наверх
#15808 - Fri Oct 22 2010 10:05 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: FirstAID]
Lenar Offline
enthusiast

Registered: Tue Feb 09 2010
Записи: 354
Loc: Казань
Объясните пожалуйста это выражение:
Low[i-(int)BarsHeld]
Что за int?


Attachments
StopTest.xml (559 downloads)


Наверх
#15810 - Fri Oct 22 2010 11:15 PM Re: Пример: «Логическая формула», "Формула". Синтаксис [Re: Lenar]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8139
Это подмена int константой.
i=int


Отредактировано ViL (Fri Oct 22 2010 11:16 PM)

Наверх
Page 1 of 13 1 2 3 ... 12 13 >


Moderator:  ViL, sar