Вы не опечатались, я про цену, а не про СЛ и ТР? и по какой цене мне должен открыть сервер рыночный ордер? по той цене которую он мне предоставил или по которой мне вздумалось?
почему бы мне не отправлять на сервер цену сразу с положительным спредом ;)
ЗЫ: USDJPY : 82.49 ; 82.51000000000001 ; 82.49 - может сразу 82.55 ?
вот вам пример отправки запроса с нормализованными ценами
//+------------------------------------------------------------------+//| Функция открытия ордеров |//+------------------------------------------------------------------+void OpenOpders(string sym,ENUM_ORDER_TYPE type)
{
int n=0;
bool res=true;
while(res)
{
n++;
Alert(n," - Попытка открыть ордер: ",TypeToStr(type)," на ",sym,", Лот - ",Lots);
double Bid=SymbolInfoDouble(sym,SYMBOL_BID);
double Ask=SymbolInfoDouble(sym,SYMBOL_ASK);
int digit=(int)SymbolInfoInteger(sym,SYMBOL_DIGITS);
double price=0.0;
if(type==ORDER_TYPE_BUY)price=NormalizeDouble(Ask,digit);
elseif(type==ORDER_TYPE_SELL)price=NormalizeDouble(Bid,digit);
request.action = TRADE_ACTION_DEAL;
request.symbol = sym;
request.volume = Lots;
request.price = price;
request.deviation = Slip;
request.type = type;
request.type_filling = ORDER_FILLING_AON;
OrderSend(request,result);
switch(Fun_Error(result.retcode))
{
case0:res=false;break;
case1:res=true;break;
case2:res=false;break;
}
}
}
//+------------------------------------------------------------------+//| Функция обработки ошибок |//+------------------------------------------------------------------+int Fun_Error(int Error)
{
switch(Error)
{
case10004: Alert("Реквота");return(1);
case10006: Alert("Запрос отвергнут");Sleep(3000);return(1);
case10007: Alert("Запрос отменен трейдером");Work=false;return(0);
case10008: Alert("Ордер размещен");return(2);
case10009: Alert("Заявка выполнена");return(2);
case10010: Alert("Заявка выполнена частично");return(2);
case10011: Alert("Ошибка обработки запроса");return(1);
case10012: Alert("Запрос отменен по истечению времени");return(1);
case10013: Alert("Неправильный запрос");Work=false;return(0);
case10014: Alert("Неправильный объем в запросе");Work=false;return(0);
case10015: Alert("Неправильная цена в запросе");Work=false;return(0);
case10016: Alert("Неправильные стопы в запросе");Work=false;return(0);
case10017: Alert("Торговля запрещена");Work=false;return(0);
case10018: Alert("Рынок закрыт");Work=false;return(0);
case10019: Alert("Нет достаточных денежных средств для выполнения запроса");Work=false;return(0);
case10020: Alert("Цены изменились");return(1);
case10021: Alert("Отсутствуют котировки для обработки запроса");Sleep(3000);return(1);
case10022: Alert("Неверная дата истечения ордера в запросе");Work=false;return(0);
case10023: Alert("Состояние ордера изменилось");return(2);
case10024: Alert("Слишком частые запросы");Work=false;return(0);
case10025: Alert("В запросе нет изменений");Sleep(3000);return(1);
case10026: Alert("Автотрейдинг запрещен сервером");Work=false;return(0);
case10027: Alert("Автотрейдинг запрещен клиентским терминалом");Work=false;return(0);
case10028: Alert("Запрос заблокирован для обработки");return(2);
case10029: Alert("Ордер или позиция заморожены");return(2);
case10030: Alert("Указан неподдерживаемый тип исполнения ордера по остатку");Work=false;return(0);
case10031: Alert("Нет соединения с торговым сервером");Sleep(3000);return(1);
case10032: Alert("Операция разрешена только для реальных счетов");Work=false;return(0);
case10033: Alert("Достигнут лимит на количество отложенных ордеров");return(2);
case10034: Alert("Достигнут лимит на объем ордеров и позиций для данного символа");return(2);
default: Alert("Ошибка № - ",Error);Work=false;return(0);
}
}
//+------------------------------------------------------------------+//| Функция преоброзования типа ордера в строку |//+------------------------------------------------------------------+string TypeToStr(ENUM_ORDER_TYPE type)
{
switch(type)
{
caseORDER_TYPE_BUY: return("BUY");
caseORDER_TYPE_SELL: return("SELL");
}
return("");
}
Renat: То есть, тезис о "сырости платформы" никак не подтвердился.
я нигде ни упоминал, про сырость платформы - перечитайте мои посты
свои замечания по сабжу я высказал - считаете их голословными, пусть значит так, но думаю, Ваша компания занимается продажами софта для брокеров под платформу МТ5
sergey1294:
вот вам пример отправки запроса с нормализованными ценами
спс, но у меня немного другие представления о торговле и о цене по которой я хочу открыть ордер, попробуйте нормализовать 82.47 ,82.45999999999999 ,82.47
я не уверен, что сервер "выдумает" у себя цену 82.46 , т.к. такой цены у него не было в логах, а если цена не рыночная - она мне не нужна - пусть на сервере остается, а не ошибками у меня в логах идет
я нигде ни упоминал, про сырость платформы - перечитайте мои посты
свои замечания по сабжу я высказал - считаете их голословными, пусть значит так, но думаю, Ваша компания занимается продажами софта для брокеров под платформу МТ5
спс, но у меня немного другие представления о торговле и о цене по которой я хочу открыть ордер, попробуйте нормализовать 82.47 ,82.45999999999999 ,82.47
я не уверен, что сервер "выдумает" у себя цену 82.46 , т.к. такой цены у него не было в логах, а если цена не рыночная - она мне не нужна - пусть на сервере остается, а не ошибками у меня в логах идет
К сожалению, Вы не в курсе базовой арифметики вещественных чисел и их представления в компьютерах. В этом и есть корень непонимания "ненормализованных" цен.
82.45999999(9) и есть double представление числа 82.46
я нигде ни упоминал, про сырость платформы - перечитайте мои посты
свои замечания по сабжу я высказал - считаете их голословными, пусть значит так, но думаю, Ваша компания занимается продажами софта для брокеров под платформу МТ5
спс, но у меня немного другие представления о торговле и о цене по которой я хочу открыть ордер, попробуйте нормализовать 82.47 ,82.45999999999999 ,82.47
я не уверен, что сервер "выдумает" у себя цену 82.46 , т.к. такой цены у него не было в логах, а если цена не рыночная - она мне не нужна - пусть на сервере остается, а не ошибками у меня в логах идет
не совсем понял что у вас там за представления о ценах, обще принятая цена имеет пять или четыре знака после запятой, вот и нужно обрезать цену в запросе до этого знака. тогда с исполнением не будет роблем, но если во время запроса цена изменилась, ни какая нормализация не поможет, вы получите реквоту, необходимо отправлять новый запрос по новой цене.
К сожалению, Вы не в курсе базовой арифметики вещественных чисел и их представления в компьютерах. В этом и есть корень непонимания "ненормализованных" цен.
82.45999999(9) и есть double представление числа 82.46
ОК, я найду время перечитать, возможно уже позабытый мною материал, т.е. такая цена (82.45999999(9)) будет принята торговым сервером для открытия рыночного ордера?
sergey1294 обратите внимание на то что Вам предоставили разработчики в качестве готовых примеров и классов, по крайней мере в предоставленном разработчиками классе CTrade отсутствуют ф-ции NormalizeDouble(), как и в примерах по Справочник MQL5 / Торговые функции / OrderSend
я не собираюсь выдумывать и изначально писать неправильные программы если я прочитал в первоисточнике конкретные примеры , в справке МТ4 пример OrderSend() тоже не содержит нормализации цены
ОК, я найду время перечитать, возможно уже позабытый мною материал, т.е. такая цена (82.45999999(9)) будет принята торговым сервером для открытия рыночного ордера?
Да, если это корректная/существующая цена в тиковом потоке.
sergey1294 обратите внимание на то что Вам предоставили разработчики в качестве готовых примеров и классов, по крайней мере в предоставленном разработчиками классе CTrade отсутствуют ф-ции NormalizeDouble(), как и в примерах по Справочник MQL5 / Торговые функции / OrderSend
я не собираюсь выдумывать и изначально писать неправильные программы если я прочитал в первоисточнике конкретные примеры
Если Вы используете штатные Bid и Ask для совершения торговых операций, то они всегда нормализованные. А вот вычисляемые цены (например, стопы) уже нужно самостоятельно нормализовывать перед отсылкой торгового приказа.
Методы стандартного CTrade не нормализуют принудительно входящие цены заявок, так как это категорически неприемлемо - нельзя подменять цены, заявленные уровнем выше.
Renat: Да, если это корректная/существующая цена в тиковом потоке.
Если Вы используете штатные Bid и Ask для совершения торговых операций, то они всегда нормализованные. А вот вычисляемые цены (например, стопы) уже нужно самостоятельно нормализовывать перед отсылкой торгового приказа.
Методы стандартного CTrade не нормализуют принудительно входящие цены заявок, так как это категорически неприемлемо - нельзя подменять цены, заявленные уровнем выше.
спс! не сочтите за труд, упомяните это несколько раз в справочнике МТ5, чтобы не было непонимания и можно было бы сразу послать читать справку :)
ЗЫ: про СЛ и ТР я знаю, но не помню или прочитал в справке или на форуме выяснил
постоянно читаю это форум, и оччччень часто поражаюсь Вашим глубокомысленным и информативным постам ;)
по сабжу, сомневаюсь, что котировки на демосчетах отличаются от микрореала, но на демосчете уж очень часто в компаниях о которых упомянул Админ идут ненормализованные цены, при сильном движении - по ним ордер не откроешь и не закроешь, хотелось бы видимости порядка, что бы потом не винить МТ5
На вкус и цвет товарищей нет (народная мудрость) - кому-то мешает работать "не нормализованная цена", хотя лично я не считаю это большой проблемой (поскольку уже давно пользуюсь отложниками, да и цены эти для меня не сильная проблема). А вот проблемой для меня являются такие вещи как нежелание работать OnTimer() в тестере или иные подобные моменты.
Но даже при этих вводных, при выборе терминала для торговле на центовом счете (с депозитом в 200$) я лично сделаю свой выбор в пользу МТ5.
На вкус и цвет товарищей нет (народная мудрость) - кому-то мешает работать "не нормализованная цена", хотя лично я не считаю это большой проблемой (поскольку уже давно пользуюсь отложниками, да и цены эти для меня не сильная проблема). А вот проблемой для меня являются такие вещи как нежелание работать OnTimer() в тестере или иные подобные моменты.
Эта наша ошибка была следствием неудачной оптимизации и уже исправлена в вышедшем 358 билде.
Вы не опечатались, я про цену, а не про СЛ и ТР? и по какой цене мне должен открыть сервер рыночный ордер? по той цене которую он мне предоставил или по которой мне вздумалось?
почему бы мне не отправлять на сервер цену сразу с положительным спредом ;)
ЗЫ: USDJPY : 82.49 ; 82.51000000000001 ; 82.49 - может сразу 82.55 ?
вот вам пример отправки запроса с нормализованными ценами
То есть, тезис о "сырости платформы" никак не подтвердился.
я нигде ни упоминал, про сырость платформы - перечитайте мои посты
свои замечания по сабжу я высказал - считаете их голословными, пусть значит так, но думаю, Ваша компания занимается продажами софта для брокеров под платформу МТ5
вот вам пример отправки запроса с нормализованными ценами
спс, но у меня немного другие представления о торговле и о цене по которой я хочу открыть ордер, попробуйте нормализовать 82.47 ,82.45999999999999 ,82.47
я не уверен, что сервер "выдумает" у себя цену 82.46 , т.к. такой цены у него не было в логах, а если цена не рыночная - она мне не нужна - пусть на сервере остается, а не ошибками у меня в логах идет
я нигде ни упоминал, про сырость платформы - перечитайте мои посты
свои замечания по сабжу я высказал - считаете их голословными, пусть значит так, но думаю, Ваша компания занимается продажами софта для брокеров под платформу МТ5
спс, но у меня немного другие представления о торговле и о цене по которой я хочу открыть ордер, попробуйте нормализовать 82.47 ,82.45999999999999 ,82.47
я не уверен, что сервер "выдумает" у себя цену 82.46 , т.к. такой цены у него не было в логах, а если цена не рыночная - она мне не нужна - пусть на сервере остается, а не ошибками у меня в логах идет
К сожалению, Вы не в курсе базовой арифметики вещественных чисел и их представления в компьютерах. В этом и есть корень непонимания "ненормализованных" цен.
82.45999999(9) и есть double представление числа 82.46
я нигде ни упоминал, про сырость платформы - перечитайте мои посты
свои замечания по сабжу я высказал - считаете их голословными, пусть значит так, но думаю, Ваша компания занимается продажами софта для брокеров под платформу МТ5
спс, но у меня немного другие представления о торговле и о цене по которой я хочу открыть ордер, попробуйте нормализовать 82.47 ,82.45999999999999 ,82.47
я не уверен, что сервер "выдумает" у себя цену 82.46 , т.к. такой цены у него не было в логах, а если цена не рыночная - она мне не нужна - пусть на сервере остается, а не ошибками у меня в логах идет
К сожалению, Вы не в курсе базовой арифметики вещественных чисел и их представления в компьютерах. В этом и есть корень непонимания "ненормализованных" цен.
82.45999999(9) и есть double представление числа 82.46
ОК, я найду время перечитать, возможно уже позабытый мною материал, т.е. такая цена (82.45999999(9)) будет принята торговым сервером для открытия рыночного ордера?
sergey1294 обратите внимание на то что Вам предоставили разработчики в качестве готовых примеров и классов, по крайней мере в предоставленном разработчиками классе CTrade отсутствуют ф-ции NormalizeDouble(), как и в примерах по Справочник MQL5 / Торговые функции / OrderSend
я не собираюсь выдумывать и изначально писать неправильные программы если я прочитал в первоисточнике конкретные примеры , в справке МТ4 пример OrderSend() тоже не содержит нормализации цены
ОК, я найду время перечитать, возможно уже позабытый мною материал, т.е. такая цена (82.45999999(9)) будет принята торговым сервером для открытия рыночного ордера?
sergey1294 обратите внимание на то что Вам предоставили разработчики в качестве готовых примеров и классов, по крайней мере в предоставленном разработчиками классе CTrade отсутствуют ф-ции NormalizeDouble(), как и в примерах по Справочник MQL5 / Торговые функции / OrderSend
я не собираюсь выдумывать и изначально писать неправильные программы если я прочитал в первоисточнике конкретные примеры
Если Вы используете штатные Bid и Ask для совершения торговых операций, то они всегда нормализованные. А вот вычисляемые цены (например, стопы) уже нужно самостоятельно нормализовывать перед отсылкой торгового приказа.
Методы стандартного CTrade не нормализуют принудительно входящие цены заявок, так как это категорически неприемлемо - нельзя подменять цены, заявленные уровнем выше.
Да, если это корректная/существующая цена в тиковом потоке.
Если Вы используете штатные Bid и Ask для совершения торговых операций, то они всегда нормализованные. А вот вычисляемые цены (например, стопы) уже нужно самостоятельно нормализовывать перед отсылкой торгового приказа.
Методы стандартного CTrade не нормализуют принудительно входящие цены заявок, так как это категорически неприемлемо - нельзя подменять цены, заявленные уровнем выше.
спс! не сочтите за труд, упомяните это несколько раз в справочнике МТ5, чтобы не было непонимания и можно было бы сразу послать читать справку :)
ЗЫ: про СЛ и ТР я знаю, но не помню или прочитал в справке или на форуме выяснил
спс! не сочтите за труд, упомяните это несколько раз в справочнике МТ5, чтобы не было непонимания и можно было бы сразу послать читать справку :)
постоянно читаю это форум, и оччччень часто поражаюсь Вашим глубокомысленным и информативным постам ;)
по сабжу, сомневаюсь, что котировки на демосчетах отличаются от микрореала, но на демосчете уж очень часто в компаниях о которых упомянул Админ идут ненормализованные цены, при сильном движении - по ним ордер не откроешь и не закроешь, хотелось бы видимости порядка, что бы потом не винить МТ5
На вкус и цвет товарищей нет (народная мудрость) - кому-то мешает работать "не нормализованная цена", хотя лично я не считаю это большой проблемой (поскольку уже давно пользуюсь отложниками, да и цены эти для меня не сильная проблема). А вот проблемой для меня являются такие вещи как нежелание работать OnTimer() в тестере или иные подобные моменты.
Но даже при этих вводных, при выборе терминала для торговле на центовом счете (с депозитом в 200$) я лично сделаю свой выбор в пользу МТ5.
ПРИ ВСЕХ ЕГО ТЕКУЩИХ НЕДОСТАТКАХ!
На вкус и цвет товарищей нет (народная мудрость) - кому-то мешает работать "не нормализованная цена", хотя лично я не считаю это большой проблемой (поскольку уже давно пользуюсь отложниками, да и цены эти для меня не сильная проблема). А вот проблемой для меня являются такие вещи как нежелание работать OnTimer() в тестере или иные подобные моменты.