Ошибки, баги, вопросы - страница 1142

 
ierehon:

Всем привет!

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

Читайте статью! И другие тоже.

Как пример для Вашего алгоритма набросал индикатор "счетчик тиков". Если на каждом тике переменной b присваивать нужное Вам значение - получится то о чем вы спрашивали. 

Файлы:
TickSum.mq5  4 kb
 
To MigVRN

Спасибо за статью и индикатор! Буду разбираться. 


 
harbor:

народ, кто подскажет как в mql5 вычислить  размер свободных средств, необходимых для открытия 1 лота какого-то символа

в mql4 знаю как, а в mql5 не могу найти 

double marg;
OrderCalcMargin(ORDER_TYPE_BUY, sym, 1, tick.ask, marg);
 
Ролики с Youtube не вставляются с HTTPS.
 
MigVRN:

1) Не надо создавать индикаторы на каждом тике!

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

3) Нужно проверять - скопировались ли запрашиваемые значения из индикатора.

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

 

Косяк был из-за того что Вы пытались скопировать значения из ещё не создавшегося индикатора. Возьмите за правило - проверять результат вызываемых функций.

Спасибо я понял !

Только я меняю входные параметры индикаторов BP_var_s, BDev_var_s и MA_var_s "по ходу пьесы". Что делать в этом случае ? Создавать и удалять каждый раз надо по идее....

 
Alvin1976:

Спасибо я понял !

Только я меняю входные параметры индикаторов BP_var_s, BDev_var_s и MA_var_s "по ходу пьесы". Что делать в этом случае ? Создавать и удалять каждый раз надо по идее....

Тут есть несколько вариантов:

1) Параметры индикаторов меняются во времени по каким-то критериям (условиям). Поэтому нет необходимости пересоздавать хендлы на каждом тике. Проверять условие и если оно выполнено - пересоздавать.

Допустим условием является наступление события "новый бар" на минутном таймфрейме. Примеров определений события "новый бар" много - поищите на сайте. Мне больше всего нравиться вот этот вариант.

2) Если всё же надо на каждом тике - дожидаться окончания проверки CopyBuffer() в цикле (используя sleep()). Но, скорее всего, тики будут пропускаться. Как вариант - считать индюки не на всю историю, а на последнюю пару сотен баров (лезть в код стандартных индюков и править код) - будет пропускать меньше тиков. 

 

Ещё одна проблемка возникла.

long Min_Dist;

bool Inf=(SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL,Min_Dist));
      if (Inf=true) Print("      mindist=", DoubleToString(Min_Dist)); 

Переменная Min_Dist в тестере выдает все время ноль. На живом рынке ещё не проверял.

Почему ноль то ? Вроде успешно все считывается.....

 
Alvin1976:

Ещё одна проблемка возникла.

Переменная Min_Dist в тестере выдает все время ноль. На живом рынке ещё не проверял.

Почему ноль то ? Вроде успешно все считывается.....

Попробуйте так:
long Min_Dist;

Min_Dist=(SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
      //if (Inf=true) Print("      mindist=", DoubleToString(Min_Dist)); 
Так проверите реальное значение SYMBOL_TRADE_STOPS_LEVEL
 
barabashkakvn:
Попробуйте так: Так проверите реальное значение SYMBOL_TRADE_STOPS_LEVEL

То же самое получается. Ноль.  :(.

В тестере.

В понедельник проверю на рынке.

З.Ы. Всё выяснил. Это заморочки ДЦ. Причем не одного :-). Я сразу не понял потому что гугол ничего толкового не выдавал на SYMBOL_TRADE_STOPS_LEVEL а  вот на MODE_STOPLEVEL выдал кучу инфы.

Буду пользоваться SYMBOL_SPREADом.

 
Roffild:
Ролики с Youtube не вставляются с HTTPS.
Откуда в Youtube HTTPS? Вот обычный код ролика - http://youtu.be/KG0PIVuJ2kU
Причина обращения: