Скачать MetaTrader 5

Ошибка № 145

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ведешь свой блог? Размести в нем ссылку на MQL5.community и заработай!
Roman Kutemov
1786
Roman Kutemov 2010.01.14 05:08 

что за 145 ошибка ?

у одного брокера советник нормально работает,

у другого зависает посередине теста и выдает 145 ошибку.

Как её исправить ?

Victor Nikolaev
Модератор
14508
Victor Nikolaev 2010.01.14 05:11  
Stells писал(а) >>

что за 145 ошибка ?

у одного брокера советник нормально работает,

у другого зависает посередине теста и выдает 145 ошибку.

Как её исправить ?

Проверять на СтопЛевел и уровень заморозки. Если позиция к цене стоит ближе, то модифицировать нельзя.

Roman Kutemov
1786
Roman Kutemov 2010.01.14 05:33  
Vinin >>:

Проверять на СтопЛевел и уровень заморозки. Если позиция к цене стоит ближе, то модифицировать нельзя.

а закрывать?

я закрыть хочу

Victor Nikolaev
Модератор
14508
Victor Nikolaev 2010.01.14 05:36  
Stells писал(а) >>

а закрывать?

я закрыть хочу

Идентификаторы запроса, используемые в функции MarketInfo(). Mогут быть одной из следующего величин:

MODE_FREEZELEVEL 33 Уровень заморозки ордеров в пунктах. Если цена исполнения находится в пределах, определяемых уровнем заморозки, то ордер не может быть модифицирован, отменен или закрыт.

Roman Kutemov
1786
Roman Kutemov 2010.01.15 05:49  
Как можно проверить уровень заморозки ?
Victor Nikolaev
Модератор
14508
Victor Nikolaev 2010.01.15 06:11  
Stells писал(а) >>
Как можно проверить уровень заморозки ?

Рассчитать расстояние от позиции до цены и сравнить его с уровнем заморозки.

Roman Kutemov
1786
Roman Kutemov 2010.01.15 09:40  
можно пример кода, для бай, например ?
John
3254
John 2010.01.15 10:44  
Stells >>:
Как можно проверить уровень заморозки ?

:) Спросить у marketinfo

o_o
Модератор
23694
o_o 2010.01.15 11:00  
FreezLvl=MarketInfo(Symbol(), MODE_FREEZELEVEL)*_Point;

// для модификации стопов покупки
if (OrderTakeProfit()>0 && MathAbs(OrderTakeProfit()-Bid)<=FreezLvl) continue;
if (OrderStopLoss()>0 && MathAbs(OrderStopLoss()-Bid)<=FreezLvl) continue;


// для модификации стопов продажи
if (OrderTakeProfit()>0 && MathAbs(OrderTakeProfit()-Ask)<=FreezLvl) continue;
if (OrderStopLoss()>0 && MathAbs(OrderStopLoss()-Ask)<=FreezLvl) continue;

// для модификации отложенных ордеров покупки, продажи
if (MathAbs(OrderOpenPrice()-Ask)<=FreezLvl) continue;
if (MathAbs(OrderOpenPrice()-Bid)<=FreezLvl) continue;
Roman Kutemov
1786
Roman Kutemov 2010.01.15 11:04  
sergeev >>:

спасибо

Roman Kutemov
1786
Roman Kutemov 2010.01.15 15:43  
sergeev >>:

мне кажется в коде <= нужно поменять на >=,

или я не прав ?

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий