Jump to content

Общие вопросы по языку MQL


Recommended Posts

AntFX

 

 

В чем ошибка?

Все зависит от структуры индикаторных буферов конкретного индикатора 


1

Link to post
Share on other sites
  • Replies 7.6k
  • Created
  • Last Reply

Top Posters In This Topic

  • AntFX

    577

  • sergey1294

    569

  • Ugar68

    517

  • Programmer

    419

Top Posters In This Topic

Popular Posts

Ну, в данном случае мне стоило бы сразу соблюдать простейшие приёмы защитного программирования, то есть проверять, не равна ли нулю переменная, оказавшаяся под знаком деления. Ведь она "чужая", то ест

На счёт проверок, это правильно. Я больше очень практикую, то же нарывался. Но в моём случае у меня советник открывал ордер минимальным лотом вместо нормального, когда замечал, доливаться было поздно.

Основной советник выставляет "сигнальный" отложенный ордер далеко от текущей цены и каждую например, минуту модифицирует у него время экспирации: это может быть текущее время плюс 1 час, или плюс 1 су

Posted Images

al_sokol

спасибо за ответ... Правильно ли я понял, что работу такого индикатора в работе торгового робота уже нельзя использовать?

Link to post
Share on other sites
AntFX

Вам нужно открыть "Окно данных" в МТ4 и посмотреть нужные номера индикаторных буферов.

А вообще в том, что касается использования конкретных пользовательских индикаторов, лучше всего спрашивать совета у их автора.

Edited by AntFX

1

Link to post
Share on other sites
ZeleBoba

Подскажите пожалуйста, как из советника загрузить на график отдельный индикатор или может быть активировать ранее сохраненный шаблон?

 

Вопрос снят.

 

нашел: ChartApplyTemplate

Edited by ZeleBoba

Лучше маленький профит, чем большие рога.

Link to post
Share on other sites
42569dugsy

57fa44444bfa0_556.jpg                                                   Доброго дня всем кто подскажет с функцией допустим если цена находится по времени  где "1" то минимальная цена должна браться зеленая, а если цена будет находится где "2" то минимальная цена должна браться красная

Edited by 42569dugsy
Link to post
Share on other sites
ToB. CyxoB

                                                   Доброго дня всем кто подскажет с функцией допустим если цена находится по времени  где "1" то минимальная цена должна браться зеленая, а если цена будет находится где "2" то минимальная цена должна браться красная

Распиши в деталях почему когда 1, цена берется там, а когда 2 - тут?

другими словами, почему нельзя наоборот - тут когда цена 2, и там когда цена 2

Edited by ToB. CyxoB
Link to post
Share on other sites
42569dugsy

Распиши в деталях почему когда 1, цена берется там, а когда 2 - тут?

другими словами, почему нельзя наоборот - тут когда цена 2, и там когда цена 2

ну допустим есть есть функция 

void GetMinPrice()
{
 for (int i=0; i<BarCount; i++)
  {
  mp =iLow(Symbol(), PERIOD_CURRENT,i);
  if(mp < minprice)
  minprice = mp;
  }
return;
}

которая находит минимальную цену за определенное количество баров, мне нужно что бы он оставлял предыдущую минимальную цену если появилась новая минимальная цена

Link to post
Share on other sites
ToB. CyxoB

ну допустим есть есть функция 

void GetMinPrice()
{
 for (int i=0; i<BarCount; i++)
  {
  mp =iLow(Symbol(), PERIOD_CURRENT,i);
  if(mp < minprice)
  minprice = mp;
  }
return;
}

которая находит минимальную цену за определенное количество баров, мне нужно что бы он оставлял предыдущую минимальную цену если появилась новая минимальная цена

N-баров фиксировано? 

Link to post
Share on other sites
42569dugsy

N-баров фиксировано? 

BarCount отвечает за количество баров выставляется в ручную

Edited by 42569dugsy
Link to post
Share on other sites
ToB. CyxoB

BarCount отвечает за количество баров выставляется в ручную

BarCount  - фиксировано?

Link to post
Share on other sites
ToB. CyxoB

у тебя там кажется включен зиг-заг? Можно запоминать минимумы и сравнивать с ценой

Link to post
Share on other sites
42569dugsy

BarCount  - фиксировано

блин не понимаю, ну допустим либо равно 10 или 100 в процессе не меняется

Link to post
Share on other sites
42569dugsy

у тебя там кажется включен зиг-заг? Можно запоминать минимумы и сравнивать с ценой

нет зиг-заг я не включаю

Link to post
Share on other sites
42569dugsy

сейчас кинул на график в принципе похоже

Link to post
Share on other sites
ToB. CyxoB

блин не понимаю, ну допустим либо равно 10 или 100 в процессе не меняется

если 10, то крас и зелен это два минимума, а если 100 то одни - красный. А зеленого не будет. 

и в нужных точках, сколько баров пройдет? 10 или 100? Если 10, то там есть еще один минимум...оранжевый...

 

сложная задачкаpost-352142-0-33424800-1476023284_thumb.png

Link to post
Share on other sites
42569dugsy

если 10, то крас и зелен это два минимума, а если 100 то одни - красный. А зеленого не будет. 

и в нужных точках, сколько баров пройдет? 10 или 100? Если 10, то там есть еще один минимум...оранжевый...

 

сложная задачкаattachicon.gif11111.png

это от какой цены отталкиваться от "1" или "2"  если от "1" то мне нужно чтобы в расчет бралась зеленая если от "2" то красная

Edited by 42569dugsy
Link to post
Share on other sites
ToB. CyxoB

это от какой цены отталкиваться от "1" или "2" 

я запутался.

 

Объясни себе математически (и мне заодно) почему крас, син и зеленый являются МИНИМУМАМИ? 

Link to post
Share on other sites
42569dugsy

я запутался.

 

Объясни себе математически (и мне заодно) почему крас, син и зеленый являются МИНИМУМАМИ? 

ну допусти цена идет находится в точке "1" синего минимума еще нет, вот мне нужно что бы он рассматривал не красный минимум а зеленый мне нужна наименьшая цена

Edited by 42569dugsy
Link to post
Share on other sites
ToB. CyxoB

ну допусти цена идет находится в точке "1" синего минимума еще нет, вот мне нужно что бы он рассматривал не красный минимум а зеленый это 

я же просил математически :) а у тебя всего 1 цифра, и та в кавычках :)

Link to post
Share on other sites
  • 2 weeks later...
WEALTHCRAFT

не программист, но вдруг :). тока не смейтесь :)

что если поменять  for(int i=OrdersTotal()-1; i>=0; i--)  на  for(int i=0;i<OrdersTotal();i++)

 

Первый вариант требует меньше операций, второй надежней.

Link to post
Share on other sites
WEALTHCRAFT

ну допусти цена идет находится в точке "1" синего минимума еще нет, вот мне нужно что бы он рассматривал не красный минимум а зеленый мне нужна наименьшая цена

Условие не совсем точное. между красным и зеленым лоу на самом деле может быть много других зеленых лоу, а между красным и синим много других красных.

 

58088d81f1fad_2.png

Edited by WEALTHCRAFT
Link to post
Share on other sites
WEALTHCRAFT

Такое работает норм:

 

 

В одном файле

class a
  {
private:
 
   a                *a1;
 
public:
                     a();
                    ~a();
  };
 

 

 

 

А такое выдает ошибку:

В двух файлах

 

 файл a.mqh

#include <...\b.mqh>;
class a
{
private:

b *b1;

public:
a();
~a();
};
 файл b.mqh

#include <...\a.mqh>;
class b
{
private:

a *a1;

public:
b();
~b();
};
если компилирую из b.mqh, то выдает 'b' - declaration without type a.mqh [строка ячейка], т.е ошибка в файле a.mqh

а если из a.mqh, то 'a' - declaration without type b.mqh [строка ячейка], т.е ошибка в файле b.mqh

 

Как сделать так, чтобы каждый из двух классов "a" и "b" мог иметь в качестве параметра ссылку на член другого класса ? 

 

Зачем это нужно:

Есть класс "индюки", у него есть параметры, это другие классы: "машка", "эндрюс", "плинтус" и т.д. 

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

Запихивать все в один класс не очень удобно.

 

Похоже, что проблема с include. Неправильно компилируется при перекрестных ссылках. Может есть какой-то вариант условия, чтобы норм скомпилировалось, типа инклуд однажды?

Edited by WEALTHCRAFT
Link to post
Share on other sites
AntFX

Как сделать так, чтобы каждый из двух классов "a" и "b" мог иметь в качестве параметра ссылку на член другого класса ?

Надо их наследовать от одного общего класса "предка", который содержит ссылку на самого себя.

class a{
protected:
a *a1;
public:
a();
~a();
};

class b: public a{
public:
b();
~b();
};

class c: public a{
public:
c();
~c();
};

Но тебе, видимо, нужно не это, тебе нужно методы, которые будут общими, реализовать в классе-родителе "a" без всяких ссылок на самого себя. Либо вообще как свободные функции в библиотеке...

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

Edited by AntFX

1

Link to post
Share on other sites
WEALTHCRAFT

Но тебе, видимо, нужно не это, тебе нужно методы, которые будут общими, реализовать в классе-родителе "a" без всяких ссылок на самого себя. Либо вообще как свободные функции в библиотеке...

Сейчас все ставлю в одном классе.

 

может быть можно как-то #define,  #undef, #ifdef, #else, #endif использовать, чтобы перекрестные ссылки норм компилировались?

Edited by WEALTHCRAFT
Link to post
Share on other sites
AntFX
может быть можно как-то #define,  #undef, #ifdef, #else, #endif использовать, чтобы перекрестные ссылки норм компилировались?

Директива #include включается на момент её появления в файле. Это просто включение одного куска кода в другой на месте этой директивы, и ничего более. Если она объявлена до объявления класса а в твоем примере, то класс b объявляется раньше класса a и поэтому он ему неизвестен. Ну и наоборот. А использовать не объявленные ранее типы в коде нельзя. В твоем случае нужно, скорее всего, так или иначе использовать наследование, сделать общий базовый класс "Индикатор" и от него наследовать все остальные.

Edited by AntFX

1

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...