Общие вопросы по разработке > индикатор под eu

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
botanik9
Сообщения: 5
Зарегистрирован: 24 сен 2018, 11:47
Благодарил (а): 2 раза

индикатор под eu

Непрочитанное сообщение botanik9 » 28 сен 2018, 18:09

Доброе всем суток. Подскажите как зациклить проверку регулярную цены чтобы при смещении цены ниже или выше линии после закрытия бара ( грубо говоря через 3 свечи как вышла из уровня ) сместилась на 200 пунктов либо вверх либо вниз. смотря куда закрылась свеча.

Код: Выделить всё

function Initialize()
{
// Область определения параметров индикатора

// Обязательные параметры:
   IndicatorName = "Euro Уровень";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = true;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
    AddSeries("Upline", DrawAs.Line, Color.Red);     // Задаем вид линии индикатора Сопротивление   
    AddSeries("Dwline", DrawAs.Line, Color.Green);   // Задаем вид линии индикатора Поддержки
    AddSeries("Sred", DrawAs.Line, Color.White);     // Задаем вид линии индикатора Среднее значение
 
// Дополнительные параметры:
 AddParameter("Uroven", 200);   // Канал цены шаг
 AddParameter("Period", 0);   // Задаем имя изменяемого параметра и его значение
 AddGlobalVariable("Up", Types.Double, 77400);
 AddGlobalVariable("Dw", Types.Double, 77200);
 AddGlobalVariable("Sr", Types.Double, 77300);

 }

function Evaluate()
{
 
   
                        
  if  ( Input.Close[0] > Up ) ;
   
     {
           Upline = Up + Uroven;
       Dwline = Dw + Uroven;
       Sred = Sr + Uroven;
       Up = Upline;
       Dw = Dwline;
       Sr = Sred;
     }
 
   if ( Input.Close[0] < Dw );
 
     {
       Upline = Up - Uroven;
       Dwline = Dw - Uroven;
       Sred = Sr - Uroven;
       Up = Upline;
       Dw = Dwline;
       Sr = Sred;
       
     }
     
       
}




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

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

Re: индикатор под eu

Непрочитанное сообщение evge » 02 окт 2018, 13:34

Используйте уровни, вместо DrawAs.Line.

Как работать с уровнями (из документации)

AddLevel (Value, Color, SeriesName)
AddLevel (Value, Color, LineStyle, LineWidth, SeriesName)

– создание уровня. Может быть несколько уровней.
Параметры:
Value – значение по умолчанию
Color – цвет уровня (значения стандартные для MicroSoft)
LineStyle – стиль линии
LineWidth – толщина линии
SeriesName – имя ряда, к которому привязана линия (требуется для определения области, где будет размещена линия)

Пример. Создание уровня в индикаторе.

Код: Выделить всё

  AddLevel(0, Color.Red, "Last");  // Создание уровня со значением 0 в области ряда Last
  AddLevel(70, Color.Red, LineStyles.Dot, 1, "Last"); // задание типа и толщины линии


Пример. Изменение значения и цвета уровня с индексом 0.

Код: Выделить всё

function Evaluate()
{
//Далее в области вычисления можно изменять значение и цвет уровня
Levels[0].Level = 12.0;
Levels[0].Color = Color.Red;
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей