О случайном... Проверим? (он-лайн тест) - страница 2

 
Итак опишу, наконец, что к чему. Начну с RandomV1.
Советник имеет 3 состояния - добавление ордеров (0), ожидания (1), закрытие ордеров (2). В массив currencys[] записываются пары, по которым будем торговать.
При старте, если нет ордеров, или когда закрыли все ордера, определяем случайным образом, новое кол-во ордеров, которые будут открыты.  Все операции происходят через 11 "условных" минут, после предыдущей (что-бы не задёргать сервер,  да и спешить некуда).
Допустим, запускаем первый раз советника. Определяется кол-во открываемых  ордеров. Через 11 минут открывается первый (выбирается случайнай инструмент из списка currencys[] и случайная операция: buy, sell, buy_limit, sell_limit, buy_stop, sell_stop. Если операция - отложенный ордер - выставляется на уровне 2 * stopLevel от текущей цены). Через 11 минут - следующий, но при условии, что по случайно выбранному инструменту нет никаких позиций.  Если есть, то ничего не делаем - ждём следующие 11 минут.  После того, как всё выставим, переходим в ожидание. 
И ждём пока прибыль не превысит 10% депозита (хотя, даже если ещё не все ордера выставили и получили такую прибыль,  
то дальше ордера не выставляются) и переходим в состояние закрытия.  
Закрываем ордера начиная с самого убыточного (также все операции с интервалом в 11 минут).  Тут мысль такая - если вдруг получили прибыль - 
возможно началось какое-то движение на рынке, поэтому закрывает убытки,  а прибыль может подрастёт, пока к прибыльным ордерам дойдёт очередь.  Если
у нас были открыты отложенные ордера, то сначала будут удаляться отложенные (по старости), а потом уже открытые. Если же по инструменту,  позицию по которому нужно закрыть торговля запрещена, то будем ждать,  пока разрешат или по какому-либо другому интструменту не появится убыток больше.  Когда закроем все, то всё начинается
с начала с новым кол-ом ордеров.

Отложенные ордера, если они в течении суток не сработали - удаляются (и, если были в состоянии ожидания, то переходим в состояние добавления).

На каждый ордер выделяется равная часть депозита (т. е., если у нас 1000, и 20 ордеров, то на каждый - по $50), но если этой части не достаточно для открытия минимального лота, то открывает минимальный лот (при условии, что маржа позволяет - проверка в эксперте). Т. о.,  по разным инструментам могут быть разные объёмы
 
RandomV2.
2 состояния: добавление (0), ожидание (1,2)
Всё как и в прошлом советнике, только стоп на уровне выделенных средств на ордер (т. е., если все позиции закроются по стопу - то МК). Если стоп меньше stoplevel, то принимаем его как 2*stoplevel. Тейкпрофит - в два раза больше стопа.
Если в состоянии добавления получим, что прибыль превысила 10%, то больше не добавляем ордеров и переходим в состояние ожидания. В ожидание также переходим, когда уже все ордера открыли.
В отличие от предыдущего советника, если отложенный ордер не сработал в течении суток, то он удаляется, но новых ордеров не добавляется (из состояние ожидания не выходим).

Новый цыкл начнётся только тогда, когда закроются все ордера (по стопу или профиту). Принудительного закрытия открытых позиций нет
 
timbo:
notused писал (а): Интересно, а что мы все здесь делаем, если заранее известно, что форекс - игра с отрицательным матожиданием (из-за коммисий и спреда) - рано или поздно проиграем

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


Главное чтобы не покупать поверху и не продавать по низу, что очень часто происходит. А у меня просто была мысль, что торговать нужно множеством инструментов (сколько именно - не знаю), а не одним - тогда +/- около убытка от спреда. Получаем прибыль пару процентов - и закрываемся. Но, чтобы не мудрствовать лукаво - вычислять корреляции и т.п. - попробовал на (псевдо)случайных числах.
 

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

А ошибка как вегда

'stdlib.mqh'-cannot open the program file

а в коде #include <stdlib.mqh>

 
sirius:

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


А ошибка как вегда


'stdlib.mqh'-cannot open the program file


а в коде   #include <stdlib.mqh>



Найдите в папочке experts (в подпапках ищите) этот файл и закиньте его в experts\include. Если же Вы его случайно удалили когда-то, то он во вложении
Файлы:
stdlib.mqh  1 kb