Советники: Grid MA ATR

 

Grid MA ATR:

Советник по стратегии сетка. Выставляет сети из стоп ордеров по тренду в направлении МА.

Grid MA ATR

Автор: Vladimir Khlystov

 

Настройки и сова друг к другу не подходят ....

Техн ошибка ?

 
96131 #:

Настройки и сова друг к другу не подходят ....

Техн ошибка ?

поясните

 

Добрый день.

Советник работает на демо-счете.

На реальном счете не открывает сделок.

 
Тест с начала года на грани слива !  
Файлы:
 
На GBPUSD,M5 влевом верхнем углу появляется сообщение: OrderSend; Error 4107. На USDCHF,M5 - "Неправильная цена". При этом советник не работу не прекращает. Прокомментируйте, пожалуйста.
 
Уважаемый Владимир! Советник достаточно часто выставляет большее кол-во отложенныз ордеров, чем предусмотрено параметром Orders. При Orders=5 кол-во выставленных ордеров на разных валютных парах доходило до восьми позиций, хотя должно быть равно четырем.                                           
 
cherkin #:
Уважаемый Владимир! Советник достаточно часто выставляет большее кол-во отложенныз ордеров, чем предусмотрено параметром Orders. При Orders=5 кол-во выставленных ордеров на разных валютных парах доходило до восьми позиций, хотя должно быть равно четырем.                                           
Этот параметр определяет текущее количество отложенных ордеров на общей сложности количество открытых позиций может быть намного больше
 
Очень большая просадка. Нужно поставиь условие, мол, если эквити стало на икс процентов меньше, чем баланс, то закрываем все ордера и стартуем заново. За то время, пока советник выжидает выхода из просадки, он мог бы закрыться с убытком и ордерами уже перекрыть убыток, а не вгонять депозит в ещё больший минус.
 
romashevsky #:

Добрый день.

Советник работает на демо-счете.

На реальном счете не открывает сделок.

Удалите строку кода (или закомментируйте)

if (!IsDemo()) return;

и перекомплируйте советника. Будет торговать на реале. Только стрёмно это - он в просадки просто гигантские может ввести депозит.

 

Автор, плохая практика на каждой итерации цикла объявлять одну и ту же переменную. Посмотрите, это Ваш код

while(true){
                for(i=OrdersTotal()-1; i>=0; i--){
                        if(OrderSelect(i,SELECT_BY_POS)){
                                if(OrderMagicNumber()==Magic && Symbol()==OrderSymbol()){
                                int OT=OrderType();

Если в коде Вы дважды объявляете переменную, то компилятор выдаёт ошибку, мол, переменная уже объявлена. Здесь же он не может выдать эту ошибку. Но логика не верна - исправьте. Эта ошибка повторяется у Вас и далее по коду. В том числе и конструкция for (int i....) не верна именно в этом случае. Ваш цикл for находится внутри цикла while. for будет повторяться и повторяться пока ни произойдёт принудительное прерывание цикла while. И точно также переменная int i будет каждый раз объявляться заново - не каждый тик, а внутри одного тика на каждой итерации цикла while. Я не процитировал этот участок кода - смотрите сами ниже по коду.

Причина обращения: