internal stack overflow

 

https://docs.mql4.com/ru/basis/preprosessor/compilation

stacksizeintразмер стека для рекурсивных вызовов
 
sergeev:

https://docs.mql4.com/ru/basis/preprosessor/compilation

stacksizeintразмер стека для рекурсивных вызовов

а какой он по умолчанию? ВЫставлял любые значение - ошибка остается.

 
pippen81:

а какой он по умолчанию? ВЫставлял любые значение - ошибка остается.



Вы используете рекурсию?

 
PapaYozh:


Вы используете рекурсию?


нет. Общая блок-схема советника выглядит так:

функция смены тика на минутном графике

старт

если функция смены тика на минутном графике=1

{

if 1.... то buy/sell

if 2.... то buy/sell

if 3.... то buy/sell

.............

if 100.... то buy/sell

}


Другими словами, каждую минуту рассматривается порядка ста If-ов, по рез-там которых открываются сделки buy/sell. Никакой модификации открытых ордеров пока нет. Цель советника - открыться в нужный момент

 
pippen81:

нет. Общая блок-схема советника выглядит так:

функция смены тика на минутном графике

старт

если функция смены тика на минутном графике=1

{

if 1.... то buy/sell

if 2.... то buy/sell

if 3.... то buy/sell

.............

if 100.... то buy/sell

}


Другими словами, каждую минуту рассматривается порядка ста If-ов, по рез-там которых открываются сделки buy/sell. Никакой модификации открытых ордеров пока нет. Цель советника - открыться в нужный момент




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

тоже нет. До вставления последнего If-а все работает. Добавляю для примера самый простой If, что-то в роде:

if (((iOpen(NULL,PERIOD_H1,2)-iClose(NULL,PERIOD_H1,2))/Point)>5)

)
{
deal_buy (50,10,50);
Print("buy 3 candle..","");

}


и все. после этого не компилируется. То есть просто слишком большой синтаксис, насколько я понимаю. Поэтому и вопрос, есть ли какие-либо варианты вынести часть кода во внешние файлы и что-нибудь еще?

 
pippen81:

Поэтому и вопрос, есть ли какие-либо варианты вынести часть кода во внешние файлы и что-нибудь еще?



Можно написать библиотеку и заголовочный файл к ней.

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

 
спасибо, буду думать
 
Попробуйте if на switch переделать. Есть вероятность что прокатит.
Причина обращения: