Шаблон взял из учебника. Не особо сейчас силен в функциях по обработке ошибок.
На открытии ордеров там есть RefreshRates(); (биды и аски заменил через маркет инфо, как сказали)
И функция обработки ошибок:
Хотел спросить. Можно в нее следующую строку внести от 129 ошибки к примеру так?
129
ERR_INVALID_PRICE
Неправильная цена
При получении этой ошибки нужно пересмотреть логику советника. Это ж он отсылает неверную цену в торговом приказе. А вы решили задолбить сервер ошибочным торговым приказом?
При получении этой ошибки нужно пересмотреть логику советника. Это ж он отсылает неверную цену в торговом приказе. А вы решили задолбить сервер ошибочным торговым приказом?
Автоторговлю просто отключат и всего делов.
Просмотрел вроде все. Может когда советник посылает запрос:
if (iClose(Symbol(),Period(),0) <= MA_6_t)
{
Opn_B=true;
}
то есть бид меньше или равно МА, то покупаем. Покупки осуществляются по аску вот и получается игра в догонялки аск.
Проблемм с продажами вроде не было, только с покупками.
Нашел инфо по данной теме:
"Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage."
Если все-таки дело не в bid и ask, то сделка должна была пройти. Цитирую " Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage." Цена при зависании была в торговой зоне 100%. Клоз был значительно ниже скользящей средней.
Не получатся отрисовка индикатора в некоторых участках. Суть индикатора, если движение не более определенной величины, то значение остается, как в записанном значении MA_otshet.
При преодолении величины, значение становится, соответствующему текущему моменту.
Ниже код индикатора с пояснениями:
//+------------------------------------------------------------------+//| EMAF.mq4 |//| Kamil Gazizullin |//| forexman77@yandex.ru |//+------------------------------------------------------------------+#property copyright"Kamil Gazizullin"#property link"forexman77@yandex.ru"#property indicator_chart_window#property indicator_buffers1#property indicator_color1 Aqua
//--- input parameters//--- buffersbool flag=true;
double ExtMapBuffer1[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE,0,1);
SetIndexBuffer(0,ExtMapBuffer1);
IndicatorDigits(Digits+1);
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//---- //----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars=IndicatorCounted(),
limit;
double
raznica,raznica_static,MA_1_t,MA_2_t;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
staticdouble MA_otshet; //здесь хранится информация по MA_otshetfor(int i=0;i<limit;i++)
{
MA_1_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+0);
MA_2_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1);
raznica=MA_1_t-MA_2_t; //разница между сегодня и вчера по скользящей средней
raznica_static=MA_1_t-MA_otshet; //разница между сегодня и MA_otshet
RefreshRates();
if(raznica > -0.0035 && raznica < 0.0035 && flag) // если raznica не превышает заданное число
{
MA_otshet=MA_2_t; // записываем значение MA_otshet
ExtMapBuffer1[i]=MA_otshet; //рисуем значение индикатора, как и вчера
flag=false; // устанавливаем флаг запрета дальнейших расчетов
}
if(raznica_static > -0.0035 && raznica_static < 0.0035) //если raznica_static не превышает заданное число
{
ExtMapBuffer1[i]=MA_otshet; // то рисуем значение индикатора, как записанный MA_otshet
}
if((raznica > 0.0035) || (raznica <- 0.0035)) // если raznica превышает заданное число
{
ExtMapBuffer1[i]=MA_1_t; // то рисуем значение по текущей цене
flag=true; // разрешаем дальнейшие вычисления для расчета в диапазоне от -0.0035 до 0.0035
}
}
return(0);
}
//+------------------------------------------------------------------+
Не получатся отрисовка индикатора в некоторых участках. Суть индикатора, если движение не более определенной величины, то значение остается, как в записанном значении MA_otshet.
При преодолении величины, значение становится, соответствующему текущему моменту.
Просмотрел вроде все. Может когда советник посылает запрос:
он запоминает по какой цене купить?
А у меня было следующее:
то есть бид меньше или равно МА, то покупаем. Покупки осуществляются по аску вот и получается игра в догонялки аск.
Проблемм с продажами вроде не было, только с покупками.
Нашел инфо по данной теме:
"Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage."
Если все-таки дело не в bid и ask, то сделка должна была пройти. Цитирую " Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage." Цена при зависании была в торговой зоне 100%. Клоз был значительно ниже скользящей средней.
Давайте исходить из того, что Ask всегда нормализована - это цена: она не высчитывается, и нормализовывать её нет смысла.
Значит цена может быть неправильной почему? Может-таки данные устаревшие? Попробуйте непосредственно перед командой OrderSend() выполнить RefreshRates().
Приветствую вас, уважаемые трейдеры - программисты!!! Какой смысл имеет AccountComany? Из названия можно сделать определенные выводы, но как это относится к языку программирования MT4 ???
У меня в папке experts лежит весь проэкт визуал студии... Откомпилировать- это же файл .exe, точно?
нет, откомпилированная библиотека - это файл ExpertSample.dll
Шаблон взял из учебника. Не особо сейчас силен в функциях по обработке ошибок.
На открытии ордеров там есть RefreshRates(); (биды и аски заменил через маркет инфо, как сказали)
И функция обработки ошибок:
Хотел спросить. Можно в нее следующую строку внести от 129 ошибки к примеру так?
129
ERR_INVALID_PRICE
Неправильная цена
При получении этой ошибки нужно пересмотреть логику советника. Это ж он отсылает неверную цену в торговом приказе. А вы решили задолбить сервер ошибочным торговым приказом?
Автоторговлю просто отключат и всего делов.
129
ERR_INVALID_PRICE
Неправильная цена
При получении этой ошибки нужно пересмотреть логику советника. Это ж он отсылает неверную цену в торговом приказе. А вы решили задолбить сервер ошибочным торговым приказом?
Автоторговлю просто отключат и всего делов.
Просмотрел вроде все. Может когда советник посылает запрос:
он запоминает по какой цене купить?А у меня было следующее:
то есть бид меньше или равно МА, то покупаем. Покупки осуществляются по аску вот и получается игра в догонялки аск.
Проблемм с продажами вроде не было, только с покупками.
Нашел инфо по данной теме:
"Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage."
Если все-таки дело не в bid и ask, то сделка должна была пройти. Цитирую " Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage." Цена при зависании была в торговой зоне 100%. Клоз был значительно ниже скользящей средней.
Не получатся отрисовка индикатора в некоторых участках. Суть индикатора, если движение не более определенной величины, то значение остается, как в записанном значении MA_otshet.
При преодолении величины, значение становится, соответствующему текущему моменту.
Ниже код индикатора с пояснениями:
Не получатся отрисовка индикатора в некоторых участках. Суть индикатора, если движение не более определенной величины, то значение остается, как в записанном значении MA_otshet.
При преодолении величины, значение становится, соответствующему текущему моменту.
Ниже код индикатора с пояснениями:
DRAW_SECTION
Просмотрел вроде все. Может когда советник посылает запрос:
он запоминает по какой цене купить?А у меня было следующее:
то есть бид меньше или равно МА, то покупаем. Покупки осуществляются по аску вот и получается игра в догонялки аск.
Проблемм с продажами вроде не было, только с покупками.
Нашел инфо по данной теме:
"Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage."
Если все-таки дело не в bid и ask, то сделка должна была пройти. Цитирую " Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage." Цена при зависании была в торговой зоне 100%. Клоз был значительно ниже скользящей средней.
Давайте исходить из того, что Ask всегда нормализована - это цена: она не высчитывается, и нормализовывать её нет смысла.
Значит цена может быть неправильной почему? Может-таки данные устаревшие? Попробуйте непосредственно перед командой OrderSend() выполнить RefreshRates().
Какой смысл имеет AccountComany?
Из названия можно сделать определенные выводы, но как это относится к языку программирования MT4 ???
AccountCredit?
AccountCurrency?
AccountEquity?
AccountFreeMargin?
AccountFreeMarginCheck?
AccountLeverage?
AccountStopoutLevel?
AccountStopoutMode?
ArrayBsearch?
Мне очень интересно знать подробное описание каждой команды. Прошу вас помочь.
ArrayCopy?
ArrayCopyRates?
ArrayCopySeries?
ArrayDimension?
ArrayGetAsSeries?
Что такое ставка массива?