Нагрузка на сервер ДЦ

 

Здравствуйте. Я новичок в программировании mql4. Знаю, что ДЦ может "забанить" советника, который сильно нагружает их сервер. Хотелось бы узнать может ли такой код советника нагрузить сервер ДЦ? Заранее спасибо.

int start()
{
.........................

.........................
while (OrdersTotal() < 1)
{

if (Sygnal == "Buy")
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Price("Ask"),20,0,0,"",16384,0,CLR_NONE);
}
Sleep(333);
}

while (OrdersTotal() > 0)
{
if (Sygnal == "Close")
{
OrderClose(OrderTicket(),OrderLots(),Price("Bid"),20,CLR_NONE);

Sleep(333);

}

return(0);
}

 

Да! Может! И ищо как! 99% нагрузки на сервет. ДЦ не просто забанет, да ищо и штраф на гругленькую саму випишет!

Шучу!

Такой нагрузки от такого кода они даже не заметят! ;-)

 

Бл.... Зачем ж так пугать?

Спасибо.

 
Не хочется расстраивать, но код из разряда опасных. В первой части при неправильном Price("Ask") он будет непрестанно доставать сервер. Кстати, почему Price("Ask"), а не просто Ask? И вторая часть будет делать то же самое, т.к. не определены ни OrderTicket(), ни OrderLots() .
 

Price("Ask") потому что пока крутится цикл (т.е. пока нет открытых позиций), может прийти уже множество тиков, и просто Ask будет неактуальной и тогда-то он может достать сервер.

Функция Price("Ask") берет цену из файла, в который записывает цену другой советник, работающий паралельно в другом окне на том же фин. инструменте, но уже без зацикливаний.

OrderTicket() и OrderLots() во второй части определены, просто я опустил этот фрагмент кода т.к. интересовал только OrdersTotal() - откуда он берет инфу о кол-ве ордеров: с сервера, тем самым как-то нагружая его или из терминала MT, не касаясь сервера ДЦ.

 
Kostik1979 писал (а) >>

Функция Price("Ask") берет цену из файла, в который записывает цену другой советник, работающий паралельно в другом окне на том же фин. инструменте, но уже без зацикливаний.

Как раз об этом и говорил. В данном случае большая вероятность нарваться на грабли, легче перед функцией OrderSend() поставить RefreshRates().

 
Kostik1979 писал (а) >>

Функция Price("Ask") берет цену из файла, в который записывает цену другой советник, работающий паралельно в другом окне на том же фин. инструменте, но уже без зацикливаний.

Удивительный наворот. Чем RefreshRates(); не угодил?

Кстати, нахожу совершенно бессмысленной команду Sleep(333); сразу после попытки открыть/закрыть ордер. Притормаживать работу эксперта рекомендуется только после определенных неудачных попыток открыть/закрыть ордер.

Как часто Sygnal выдает сигнал действовать?

 

Если честно, про RefreshRates() я просто не знал, СПАСИБО ЗА ДЕЛЬНЫЙ СОВЕТ.

А без Sleep(333) советник сильно грузит проц т.к. while (OrdersTotal() < 1) может выполняться очень долго, т.е. Sygnal может долго не выдавать сигнал действовать. Без Sleep(333) один запущеный советник грузит проц на 100%, а с ним 20-30 таких советников работают одновременно совершенно свободно.

 
Kostik1979 писал (а) >>

Если честно, про RefreshRates() я просто не знал, СПАСИБО ЗА ДЕЛЬНЫЙ СОВЕТ.

А без Sleep(333) советник сильно грузит проц т.к. while (OrdersTotal() < 1) может выполняться очень долго, т.е. Sygnal может долго не выдавать сигнал действовать. Без Sleep(333) один запущеный советник грузит проц на 100%, а с ним 20-30 таких советников работают одновременно совершенно свободно.

Понятно. Я не пользуюсь зацикливанием, т.к. нахожу непродуктивным делать рассчеты и/или проверки раз за разом при том факте, что на терминал не пришло ни одного тика, т.е. ихсодные данные остаются неизменными. Также не нахожу особого смысла проводить расчеты каждый тик. Но если уж так прется, то вешаю советник на пару, которая "тикает" чаще всех - это для меня отменный компромис. Зацикленная программа дает мало выгод при огромном количестве потенциальных проблем и постоянной заботе о решении этих проблем. Просто закапываешься в этом геморе вместо того, чтобы уделять время чему-то идейному.

 
Vita писал (а) >>

Понятно. Я не пользуюсь зацикливанием, т.к. нахожу непродуктивным делать рассчеты и/или проверки раз за разом при том факте, что на терминал не пришло ни одного тика, т.е. ихсодные данные остаются неизменными. Также не нахожу особого смысла проводить расчеты каждый тик. Но если уж так прется, то вешаю советник на пару, которая "тикает" чаще всех - это для меня отменный компромис. Зацикленная программа дает мало выгод при огромном количестве потенциальных проблем и постоянной заботе о решении этих проблем. Просто закапываешься в этом геморе вместо того, чтобы уделять время чему-то идейному.

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

 
Kostik1979 писал (а) >>

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

Совершенно верно, именно когда надо следить за всеми парами, я вешаю советника, к примеру, на GBPJPY, которая тикает чаще всех. Это совсем маленький компромис, т.к. я понимаю, что тикая чаще всех, GBPJPY всё-таки может пропустить тик-два на какой-то другой паре, но мне даже было лень исследовать частоту таких пропусков, т.к. советники ни разу не проявили раздражающим меня образом - пропуская изменения в цене на других парах. Предлагаю подумать над этим - скорее всего самая частотикающая пара изменит свою цену между тиками других пар, нежели наоборот.

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