Результаты опроса:

Голосовавшие
0. Вы ещё не голосовали в этом опросе
  • 0 0%
Форум трейдеров » Торговые роботы, советники, индикаторы » Автотрейдинг. Вопросы новичков
+ Подписаться
Страница 25 из 33 ПерваяПервая ... 152324252627 ... ПоследняяПоследняя
  1. 501
    Комментарии
    12
    Темы
    273
    Репутация Pro
     
    В начале пути

    5 Медалей
    Подскажите, пожалуйста, как реализовать, чтобы результатом выражения
    High[1] - ( High[1] - Low[2] ) / 2
    получалось значение кратное тику инструмента (допустим один тик равен 0,05).
    И еще такой вопрос.
    Как задать, чтобы условие (допустим открытие ордера) выполнялось в начале каждой 1-часовой свечи только один раз.
  2. 1,401
    Комментарии
    13
    Темы
    1409
    Репутация Pro
    Аватар для Karakurt  
    Мастер форумных наук

    5 Медалей
    Цитата Сообщение от kanupa Посмотреть сообщение
    Подскажите, пожалуйста, как реализовать, чтобы результатом выражения
    High[1] - ( High[1] - Low[2] ) / 2
    получалось значение кратное тику инструмента (допустим один тик равен 0,05).
    Например, такой вариант:
    1. Приводим значение результата выражения и значение размера тика к целым числам, если они дробные.
    2. Получаем остаток от деления результата выражения на размера тика (используем операцию %, она работает только для целых чисел).
    3. Из результата выражения вычитаем остаток от деления.
    4. Возвращаем первоначальную разрядность.

    В чиселках:
    результат выражения 1,13; размера тика 0,05.
    1. 1,13 -> 113; 0,05 -> 5
    2. 113 % 5 = 3
    3. 113 - 3 = 110
    4. 110 -> 1,10
  3. 8,531
    Комментарии
    46
    Темы
    15164
    Репутация Pro
    Аватар для avtomat  
    Старожил

    7 Медалей
    double X= High[1]-(High[1]-Low[2])/2.0;
    double Y= MarketInfo(Symbol(),MODE_TICKSIZE);

    double Z= NormalizeDouble(X/Y,0)*Y;


    по второму вопросу:
    можно организовать счётчик событий с заданной логикой работы
  4. 405
    Комментарии
    2
    Темы
    411
    Репутация Pro
     
    Member

    2 Медалей
    Цитата Сообщение от kanupa Посмотреть сообщение
    Как задать, чтобы условие (допустим открытие ордера) выполнялось в начале каждой 1-часовой свечи только один раз.
    Чтобы эксперт отрабатывал ровно один раз в начале каждой свечки
    Код:
    static datetime current;
    if(current==Time[0]) return;
    current=Time[0];
    ...
    тело 
    ...
  5. 6,556
    Комментарии
    18
    Темы
    6883
    Репутация Pro
    Аватар для greych  
    Старожил

    7 Медалей
    Цитата Сообщение от avtomat Посмотреть сообщение
    по второму вопросу:
    можно организовать счётчик событий с заданной логикой работы
    и/или просмотр ордеров открытых и по истории по заданным временным рамкам, что даст большую надежность.

    2qqmber
    Интересный код, надо попробовать. Но ведь он блокирует дальнейшее открытие совсем? или я не так прочитал?
  6. 405
    Комментарии
    2
    Темы
    411
    Репутация Pro
     
    Member

    2 Медалей
    Цитата Сообщение от greych Посмотреть сообщение
    2qqmber
    Интересный код, надо попробовать. Но ведь он блокирует дальнейшее открытие совсем? или я не так прочитал?
    Тело отработает один раз на каждой свечке, для каждого значения Time[]
  7. 6,556
    Комментарии
    18
    Темы
    6883
    Репутация Pro
    Аватар для greych  
    Старожил

    7 Медалей
    Цитата Сообщение от qqmber Посмотреть сообщение
    Тело отработает один раз на каждой свечке, для каждого значения Time[]
    Покрутил, почитал справку - однозначно, да.
  8. 405
    Комментарии
    2
    Темы
    411
    Репутация Pro
     
    Member

    2 Медалей
    Цитата Сообщение от Lord Sam Посмотреть сообщение
    Подскажите как сделать индикатор который будет вычитать значение индикатора x из индикатора y и выводить результат на экран. Например: ATR (14)-ATR(20).
    Код:
    #property indicator_separate_window
    #property indicator_color1 Aqua
    extern int Slow=21;
    extern int Fast=14;
    double Buffer[];
    int init() {
       SetIndexBuffer(0,Buffer);
    }
    int start() {
       for(int i=0; i<Bars-IndicatorCounted(); i++) {
          Buffer[i]=iATR(NULL,0,Fast,i)-iATR(NULL,0,Slow,i);
       }
    }
  9. 501
    Комментарии
    12
    Темы
    273
    Репутация Pro
     
    В начале пути

    5 Медалей
    avtomat, qqmber спасибо за помощь. Помогло.
  10. 30
    Комментарии
    0
    Темы
    34
    Репутация Pro
     
    Новичок

    2 Медалей
    Цитата Сообщение от qqmber Посмотреть сообщение
    Код:
    #property indicator_separate_window
    #property indicator_color1 Aqua
    extern int Slow=21;
    extern int Fast=14;
    double Buffer[];
    int init() {
       SetIndexBuffer(0,Buffer);
    }
    int start() {
       for(int i=0; i<Bars-IndicatorCounted(); i++) {
          Buffer[i]=iATR(NULL,0,Fast,i)-iATR(NULL,0,Slow,i);
       }
    }
    Спасибо. Это так по аналогии можно любой индикатор в расчет принимать?

Вверх
РегистрацияX

чтобы писать, читать, комментировать