Обозначеня - Колено - задаваемый пользователем в настройках параметр, обозначающий количество пунктов между уровнями, от открытия(закрытия) ордера(ов) до следующего открытия(закрытия). Уровень - начальные либо конечные точки колена. Для простоты обозначил уровень, при котором начинается цикл - уровень А, далее вверх через колено (шаг) - уровень В и.т.д. В противоположную сторону, вниз, соответственно - начало А, затем Z,Y,X... Цикл - Время работы советника от начала до закрытия всех ордеров в ноль. Общий ноль - сумма профита и просадки всех позиций цикла - как открытых на данный момент, так и закрытых ранее, но входящий в цикл. Основная задача - закрытие наибольшего числа ордеров(позиций) в ноль в наименьший период времени. При подсчётах использовал параметр "колено" равный 10п. Советник будет использоваться на счёте без спреда, но с комиссией равной его величине. Что обуславливает в большинстве случаев возмоность открытия пары ордеров одновременно, на одной цене. советник открывает 2 противооложных ордера селл и бай.При прохождении ценой 10п, или колена, цена касается следующего уровня. Если цена касается уровня снизу вверх - открываем бай уровне касания, сверху вниз - селл. Это основной принцип работы советника. Оганичения. Установка стопов. С уровня А, после открытия пары ордеров, цена пошла вверх.Достигла В и ушла далее.При касании ценой уровня В открывается второй бай - бай2 и одновременно ставим стоп на первый бай на 3п ниже уровня открытия второго бая. Получается что - на А - селл1(-3), бай1(-3). На уровне В - селл1(-13), бай1(+7)со стопом на (+4) и бай2(-3).При движении цены вверх двигаем и стоп, пока не достигнем уровня В. Далее, если цена идёт дальше вверх и касается уровня С, то при открытии бай3 ставим стоп на бай2 на 3п ниже уровня С и стоп от бай1 переносим туда же. Т.е. все стопы всегда на одном уровне. Пример1. Цена упорно движется вверх. На уровне А открылись 2 ордера - бай и селл.Имеем при открытии -селл1(-3) и бай1(-3). Цена пошла вверх, дошла до уровня В и пробила его снизу вверх.Имеем на уровне В - селл1(-13), бай1(+7) и новый бай2(-3). Цена идёт дальше вверх, и доходит до уровня С, пробивая его так же снизу вверх. На С - селл1(-23), бай1(+17), бай2(+7) и должен открыться новый бай3(-3).В ситуации, когда на момент открытия нового ордера количество профитных позиций в 2 и более раза превышает количество убыточных -- новый ордер НЕ открываем. В нашем примере на пункт ниже уровня С (на 19-ом пункте от начала цикла), получаем цикл = 0. (-23+16+6). Основная задача выполнена и цикл можно закрывать, но при таком раскладе, когда количество положительных позиций в два и более раза превышает количество отрицательных, то советник ждёт дальнейшего движения цены вверх до момента, когда итог цикла станет равным +(количество позиций в цикле). В данном примере у нас 3 позиции, соответственно советник ждёт, когда итог дойдёт до +3. Тогда советник закрывает убыточную позицию и ставит стоп на все позиции на 3п ниже верхней Т.е мы ждём, когда цена дойдёт до: уровень С + 2п. Имеем - селл1(-25), бай1(+19), бай2(+9).Здесь советник закрывает убыточный селл1 и ставит стоп на оба бая на 3п ниже, т.е. когда бая упадут до бай1(+17) и бай2(+7) - советник их закроет.Цикл в любом случае закроется в 0. Если же цена после закрытия селла идёт дальше вверх, то открываются ордера только баевые, где общий стоп при первой возможности меряется на трейлинг.Закрытие такого цикла происходит по трейлингу, включая закрытие и верхней, как правило убыточной позиции. Пример2. Цена с уровня "А" дошла до уровня В и пробила его снизу вверх. Имеем на "В" - селл1(-13), бай1(+7) и новый бай2(-3).Устанавливается стоп - бай1(+4). Далее цена не доходя до уровня "С" разворачивается и пробивает тот же "В", но уже сверху вниз. По алгоритму открывается новый ордер селл2(-3). Итого при втором пробитии "В" - селл1(-13),селл2(-3), бай2(-3). Имеем так же закрытие бай1 с плюсом от 4 до 7, в зависимости от того, где цена развернулась. Дальше, если цена идёт вниз и пробивает начальный уровень "А", то в итоге приходим к примеру1. Если же она снова разворачивается не доходя уровня "А" и опять пробивает В снизу вверх, то открывается очередной ордер бай3(-3). Т.О. при полном развороте цены на 360 имеем - селл1(-13), селл2(-3), бай2(-3),бай3(-3). При таком раскладе, если цена"гуляет"относительно одного и того же уровня, то не открываем более 4-х ордеров общим числом - 2cелл и 2 бай. 4 ордера - это ограничение только при пробитии одного и того же уровня туда-сюда - при достижении же следующего, либо предыдущего ордера открываются в зависимости от направления пробития - снизу-вверх или сверху-вниз. Пример3 Цена вышла с уровня А, открылись 2 ордера селл1 (-3) и бай1 (-3). Цена дошла до уровня В и пробила его снизу вверх. Получается после пробития - селл1(-13), бай1(+7) и открылся новый бай2(-3). Цена идёт далее вверх и пробивает уровень С снизу вверх. Получаем - селл1(-23), бай1(+17)и Бай2(+7) Третий бай в данном случае не открывается (описано ранее почему). Через 2 пункта движения вверх дошли до общего нуля (закрытых ранее озиций в данном цикле нету). первое условие выполнено. Выполнено и второе - т.к. количество положительных баев в 2 раза больше отрицательного селл. Т.о.при движении цены ещё вверх на 3п закрывается только селл,и ставтся стоплосс на 2 оставшихся бая. Далее 2 варианта - либо цена идёт вниз и закрывает цикл о стоплоссу, либо идёт вверх и далее по трейлингу. Проблемная ситуация - когда цена идёт вверх, пробивает уровень, затем разворачивается не доходя до следующего уровня, пробивает снова сверху вниз и разворачивается ещё раз, опять на доходя до предыдущего уровня пробивает исходный снизу вверх. У нас ранее оговаривалось ограничение в количестве ордеров в подобной ситуации - не более 4-х. При такой ситуации, когда цена идёт, скажем, вверх, пробивает какой-нибудь уровень, виляет около него, затем опять вверх до следующего и всё повторяется снова. В такой ситуации, при повторном пробитии одного и того же уровня, при исполнении определённого условия советник открывает не один, а 2 ордера, или двойной. Пример. При выходе цены с уровня А вверх имеем на уровне Б - селл1(-13). бай1(+7) и новый бай2(-3). Ставится столосс на положительный бай1 на +4.Если цена идёт дальше, то стоплосс переносится на пункт выше (на +5) и т.д. Если цена пошла вверх и не доходя до уровня С разворачивается вниз и пробивает опять Б сверху вниз, то бай1 закрывается по стоплоссу и открывается селл2 - селл1(-13), селл2(-3). бай2(-3). И если цена снова разворачивается вверх, то при очередном пересечении уровня Б должен открыться новый бай3. Сдесь советник проверяет наличие следующего условия - во-первых наличие 4-х ордеров (может ли вообще быть открыт ордер), и сравнивает баланс села против бая. Поясню - баланс по селл 13+3=15. По бай 3. Так вот - если баланс по ордеру, который должен открыться ( в нашем случае бай) в пять и более раз меньше баланса по противоположной паре (по селлу), то открывается вместо одного - два ордера (или двойной). Эта функция должна быть отключаема и параметр "пять" должно быть можно изменять в нвстройках. Итак, цикл может быть закрыт тремя способами - 1. по трейтингу. 2. по достижении общего ноля. 3. не оговаривалось ранее - по достижении общей просадки в 50п. цикл закрывается принудительно. Советник должен рисовать сетку - крайние вертикальные линии это начало и конец цикла по времени. Горизонтальные - это отработавшие (вошедшие в цикл) уровни. Т.е. при начале работы, при открытии первой пары, советник рисует вертикаль - начало цикла и горизонталь - уровень А. Далее по ходу. В конце цикла должен получаться прямоугольник, где боковые стороны это начало и конец цикла по времени, а основания - это верхний и нижний отработавший уровень.