АвторСообщение





Сообщение: 33
Зарегистрирован: 30.05.13
Репутация: 0
ссылка на сообщение  Отправлено: 08.11.14 17:03. Заголовок: OrderModify error 1


В эксперте ест функция MovingLimitPositions(), вызывающая метод модификации из класса. При попытке модификации ордера(на данный момент такой обнаружен один) возникает ошибка OrderModify error 1.
Я уже наклепал принтов, даже более чем излишне в соответствующих фунциях, но.. не помогает. Значение параметров в функцию модификации согласно принтам передаются правильные. НО... На выходе OrderModify error 1.
Согласно задумке модификация должна быть сразу 3 параметров(или 2) т.к. отложенный ордер. Соответствуенно, модифицировать можно и цену открытия, и стоп и тейк. Так вот принтуя все значения переменных вводных параметров в OrderModify() я заметил, что непосредственно перез функцией модификации ни каких ошибок нет. а сразу же после неё на выходе ошибка! Это как можно понимать? Баг платформы? Ренат на форуме метаквотовцев съезжает с вопроса. Начал мне про контроль ошибок задвигать. Но я то вижу, что это тут не причём.
Вот этот кусок кода, кстати:
//---- Выполняем модификацию в тестере
if (!CBase.GetRealTrade())
{
if ((ND (OrderOpenPrice()) != fd_OpenPrice) || ND ((OrderStopLoss()) != fd_NewSL) || (ND (OrderTakeProfit()) != fd_NewTP))
{
ResetLastError();

Print (__FUNCTION__, ": ", " Тикет № ", OrderTicket(), "; OrderOpenPrice() = ", OrderOpenPrice(),
"; OrderStopLoss() = ", OrderStopLoss(), "; OrderTakeProfit() = ", OrderTakeProfit());
Print (__FUNCTION__, ": ", "Тикет № ", fi_Ticket, "; New_OOP = ", fd_OpenPrice, "; New_SL = ", fd_NewSL, "; New_TP = ", fd_NewTP);
Print (__FUNCTION__, ": ", "_LastError = ", _LastError);

if (!OrderModify (fi_Ticket, fd_OpenPrice, fd_NewSL, fd_NewTP, fdt_Expiration, fc_Arrow))
{
CLogs.WriteLog (StringConcatenate ("fOrderModify(): ", CErrs.ErrorToString (_LastError)));
Print (__FUNCTION__, ": ", "После модификации тикета № ", fi_Ticket);
Print (__FUNCTION__, ": ", "Тикет № ", fi_Ticket, "; New_OOP = ", fd_OpenPrice, "; New_SL = ", fd_NewSL, "; New_TP = ", fd_NewTP);
return (false);
}
}
}
А вот принт в журнале с этого места:

0 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: PositionsManipulations::fOrderModify: Тикет № 2; New_OOP = 1.34048; New_SL = 1.34125; New_TP = 1.33362
0 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: PositionsManipulations::fOrderModify: Тикет № 2; OrderOpenPrice() = 1.34048; OrderStopLoss() = 0.0; OrderTakeProfit() = 0.0
0 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: PositionsManipulations::fOrderModify: Тикет № 2; New_OOP = 1.34048; New_SL = 1.34125; New_TP = 1.33362
0 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: PositionsManipulations::fOrderModify: _LastError = 0
2 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: modify #2 sell limit 0.10 EURUSD at 1.34048 sl: 1.34125 tp: 1.33362 ok
3 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: OrderModify error 1
0 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: MovingLimitPositions

Видите? Распринтованы новые и текущие параметры ордера. Перед функцией OrderModify() ошибок нет. А потом пишится типа:
2 17:59:20 2013.08.26 00:00 Kevin Martens_Moi_Myrei EURUSD,M15: modify #2 sell limit 0.10 EURUSD at 1.34048 sl: 1.34125 tp: 1.33362 ok
Типа модификация успешна.. (раз уж стоит ОК).
Потом ошибка... Как это понимать? Канкретно баг мт4? Тут надёжности не было и не будет? Ведь даже в тестере не хочет работать этот код...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]







Сообщение: 934
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 09.11.14 15:53. Заголовок: hoz пишет: Потом ош..


hoz пишет:

 цитата:
Потом ошибка... Как это понимать?


Это нужно понимать, как ошибку в коде. Только вот ошибку Вы ищите не в том месте, которое привели здесь. Если бы ошибка возникала в результате именно этого кода, то в логе были бы строки, начинающиеся со строки "После модификации тикета". Но так как ее нет, получается, что ошибка возникает в другом месте кода, которое Вы упустили из рассмотрения на предмет ошибки. Ищите, где в программе еще есть OrderModify.

Чтобы такого не было, используйте функции работы с ордерами по одному экземпляру на всю программу. Их просто больше не нужно. В итоге всегда будете знать, с чего начинать поиск ошибок.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 34
Зарегистрирован: 30.05.13
Репутация: 0
ссылка на сообщение  Отправлено: 10.11.14 23:40. Заголовок: Игорь, ведь ответ то..


Игорь, ведь ответ то приходит, что мол:

modify #2 sell limit 0.10 EURUSD at 1.34048 sl: 1.34125 tp: 1.33362 ok

Я это расцениваю как положительный исход попытки открытия ордера. Разве не так?
Касаемо модификации в других местах. Ну .. это, нпврядли. Я свой код прилагаю. Это сырой типа вариант. Который я писал, дабы проверить просто индикатор Мюррея. А так же, чтоб откатать классы некоторые.
В данном исходнике, есть вызов:

CPosMan.fOrderModify()..

Это и есть метод модификации позиций. Встречается он в 2 местах. Для одного типа ордера. и, для другого. Больше нигде. Получается что-то другое...

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 943
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 11.11.14 11:54. Заголовок: hoz пишет: modify #..


hoz пишет:

 цитата:
modify #2 sell limit 0.10 EURUSD at 1.34048 sl: 1.34125 tp: 1.33362 ok

Я это расцениваю как положительный исход попытки открытия ордера. Разве не так?


Все так. К этому месту лога вопросов нет.

hoz пишет:

 цитата:
Касаемо модификации в других местах. Ну .. это, нпврядли.


Это не вряд ли, а точно. В журнале есть сообщение об ошибке. Причем за ним не следует распринтовка ошибки экспертом. Это указывает на OrderModify, который упущен из рассмотрения. Вот об этом операторе и идет речь.


hoz пишет:

 цитата:
Я свой код прилагаю.


В коде много включений:

 цитата:
#import "LDataConvertion.ex4"
double ND (double v);
string DToS (double v);
string IToS (int v);
string DToSByLots( double v );
#import

#include <HOZ_Code\Structures\MarketData.mqh>
#include <HOZ_Code\Classes\BaseInfo.mqh>
#include <HOZ_Code\Classes\HandlingWithErrors.mqh>
#include <HOZ_Code\Classes\Logging.mqh>
#include <HOZ_Code\Classes\Symbols.mqh>
#include <HOZ_Code\Classes\PositionsManipulations.mqh>
#include <HOZ_Code\Classes\PositionsTrailings.mqh>
#include <HOZ_Code\Classes\PositionsInformations.mqh>


а потому это не весь код. Иначе воспроизвести ошибку, описанную Вами, не получится.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет