Automated Trading Championship 2011: Подготовка эксперта к Чемпионату - страница 33

 
Rosh:
Нет, у другого.
Это хорошо
 
notused:
и? где противоречие?
3 раза по 5 - это не совсем то же самое, что 1 раз по 15. Впрочем, там проблема оказалась совершенно в другом.
 
Yedelkin:
3 раза по 5 - это не совсем то же самое, что 1 раз по 15. Впрочем, там проблема оказалась совершенно в другом.

ещё можно 1500 раз по 0.01 :)  

 
А еще можно на динамику ставить как лоты,так и "разы".Смотря как извратиться :-) 
 
Karlson:
А еще можно на динамику ставить как лоты,так и "разы".Смотря как извратиться :-) 
Фишка в том, что всё это будет делаться последовательно, а не единоразово. Как тренировка фантазии - вполне сносно.
 

Скажите, по условию чемпионата, максимальный объем на открытие/закрытие  позиции 5 лотов, т.е. получается, чтобы закрыть совокупную позицию  более 5 лотов нужно это делать в несколько заходов?

и почему один експерт прекрасно закрывает 9.9 лота

2011.09.23 07:23:49 Core 1 2011.09.15 15:16:40   deal #605 sell 9.90 EURGBP at 0.87788 done (based on order #787)

а другой не может закрыть 6.60 лота???

из отчета о результате тестирования: 2011.02.18 19:49:12 failed instant sell 6.60 EURGBP at 0.84326 [Invalid volume]

Как быть??? при закрытии нужно тоже соблюдать правила и закрывать частями или я что-то ошибся в программном коде? почему один эксперт на одном и том же счете прекрасно закрывает по 9.90 лота, а другой не может закрыть 6.60 ? подскажите где копать?

 
papaklass:
Если закрытие идет по Стоп-лоссу или Тэйк-профиту, то можно сразу 15.0 лотов. Если закрытие идет принудительно, то закрывать нужно частями по 5.0 лотов.

А почему тогда одна версия эксперта закрывает 9,90 лота без ошибок

2011.09.23 07:23:49 Core 1 2011.09.15 15:16:40   deal #605 sell 9.90 EURGBP at 0.87788 done (based on order #787)

в то время как модифицированная, выдает ошибку?

Дело в том, что была старая версия эксперта, проходила  автоматическую проверку, а сейчас новая версия, не проходит по причине не правильных объемов :(

вот и пытаюсь выяснить суть причины...  

 
RomanS:

Скажите, по условию чемпионата, максимальный объем на открытие/закрытие  позиции 5 лотов, т.е. получается, чтобы закрыть совокупную позицию  более 5 лотов нужно это делать в несколько заходов?

и почему один експерт прекрасно закрывает 9.9 лота

2011.09.23 07:23:49 Core 1 2011.09.15 15:16:40   deal #605 sell 9.90 EURGBP at 0.87788 done (based on order #787)

а другой не может закрыть 6.60 лота???

из отчета о результате тестирования: 2011.02.18 19:49:12 failed instant sell 6.60 EURGBP at 0.84326 [Invalid volume]

Как быть??? при закрытии нужно тоже соблюдать правила и закрывать частями или я что-то ошибся в программном коде? почему один эксперт на одном и том же счете прекрасно закрывает по 9.90 лота, а другой не может закрыть 6.60 ? подскажите где копать?

 

RomanS, после такого сообщения вас нужно дисквалифицировать, совершенно очевидно, что вы не являетесь  автором этого советника
 
Loky:
RomanS, после такого сообщения вас нужно дисквалифицировать, совершенно очевидно, что вы не являетесь  автором этого советника
Loky, Вы немножко сошли с ума, этот эксперт был написан мною полностью "с нуля" на MQL4, решил переделать на MQL5, но вот с  MQL5 че-то не получается, поэтому решил спросить совета у Форумчан, т.к  я не программист по профессии и даже MQL4 мне давался с трудом. Очень стыдно выслушивать такие претензии в свой адрес,
 

RomanS

вроде тут уже объяснили, что 9.9 лота закрылись по SL либо TP, а instant sell на 6.6 не пройдет

void smartSell(string symbol, double lot, string comment) {
                double maxlot = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
                double limitlot = SymbolInfoDouble(symbol,SYMBOL_VOLUME_LIMIT);
                int i = 0;
                lot = MathMin(limitlot,lot);
                if (lot > maxlot) {
                        double lot1 = maxlot;
                        while (lot > 0) {
                                i++;
                                processSell(symbol, lot1, comment+" part"+IntegerToString(i));
                                lot = lot-lot1;
                                if (lot > maxlot) { 
                                        lot1 = maxlot;
                                } else {
                                        lot1 = lot;
                                }
                        }
                } else {
                        processSell(symbol, lot, comment);
                }
        }

держите

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