[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 459

 
kara100 >>:

Здравствуйте, все! Подскажите, плз, как вытащить из индикатора +МР, сами значения уровней для использования в советнике?

Можно попробовать через ObjectGet(). Обратите внимание на строчку DrawVLine(onp + "hz", hz, Red, 1, STYLE_DOT, false);

 
Necron писал(а) >>

Можно попробовать через ObjectGet(). Обратите внимание на строчку DrawVLine(onp + "hz", hz, Red, 1, STYLE_DOT, false);

Спасибо

 
Andrew_Filinsky >>:

Здравствуйте. Я начинающий трейдер, придумал торговую стратегию, написал советника, при его работе на демосчёте возникла следующая проблема:

Советник иногда зависает во время выполнения операции OrderSend(). Выглядит это так: в вечером запустил советник, утром обнаруживаю, что советник завис в 3 часа ночи. В логе присутствует сообщение "Выполнение команды началось ...", сообщения "... Выполнение команды закончилось" нет. Терминал MT4 работает, получение котировок происходит, котировки отображаются на графике инструмента, на котором работает советник, советник висит. Ситуация возникает неоднократно, после перезапуска терминала ошибка может повториться через несколько часов.

Вопросы:

В чём причина зависания советника? Как устранить зависание?

Вот фрагмент соответствующего кода:

Дополнительная информация: использую GPRS-модем, включён круглосуточно, обрывов связи с потерей коннекта в течение работы советника не наблюдается, программ для анализа сетевого трафика специально не устанавливал, работает только стандартный брандмауэр WinXP.

Поискал по форуму, подходящего описания такой проблемы, её причин и способов их устранения не нашёл.

( Такое ощущение, что проблема возникла на ровном месте. Вообще не представляю, как такие фундаментальные вещи могут не работать )

Попробуйте запустить паралельно советнику зацикленный скрипт который будет рефрешить если неконект с частотой 3000 слипов (3 сек).

Проблема думаю устраняеться регулярным запросом (не зависимо от наличия тиков).

У вас получаеться рефреш если есть тик, но если тик и так есть зачем рефрешить, другое дело если тика нет но без тика советник спит,

так что тут только зацикленный скрипт в помощь.

int start()
{//+----------------------------------------------+
 while(!IsStopped())
   {if(!IsConnected())RefreshRates();
    Sleep(3000);
   }
return(0);
}//+----------------------------------------------+

примерно так(писал прямо в мозиле не проверяя на работоспособность).

 
Rover82 >>:

вот.

Проверьте, у меня не отображается индикатор (там .csv нужен какой-то). В настройках labels должно быть true

Файлы:
optlev_1.mq4  15 kb
 
Necron >>:

Проверьте, у меня не отображается индикатор (там .csv нужен какой-то). В настройках labels должно быть true

Necron, большое спасибо работает... Да я знаю сам индикатор требует внешних данных....

 
Помогите пожалуйста закрыть позицию!!! У меня стоит 3 ордера BUY, выходит сигнал на закрытие одной позиции BUY и у меня закрывается последний ордер, который я открывал, а мне нужно закрыть первый( самый ранний) Заранее спасибо!
 

В МТ4 открыты по два окна - горизонтально (на разных таймфреймах) для каждой валютной пары.

- Можно ли их как-либо залинковать? - при нажатии одного второе поднимается вместе с первым.

(слышал что есть программы позволяющие линковать окна, но не знаю работают ли они с МТ)

 
splxgf писал(а) >>

ЛУчше пересесть на ADSL или другой вид связи. Не представляю как можно на gprs работать вообще.

Советник иногда зависает во время выполнения операции OrderSend() ...

... использую GPRS-модем, включён круглосуточно, обрывов связи с потерей коннекта в течение работы советника не наблюдается, программ для анализа сетевого трафика специально не устанавливал, работает только стандартный брандмауэр WinXP.

[Лирическое отступление] На самом деле, для работы в онлайн по шести основным валютным парам достаточно 10MB трафика в сутки, и скорости передачи 0,8 (sic!) килобитов в секунду, что в 50 раз меньше, чем пропускная способность канала gprs class 10. Важно, чтобы не было обрывов связи, и малая задержка прохождения пакета к брокеру и обратно. С телефона через GPRS пропускной способности хватало, но были обрывы. Теперь, через стационарный GPRS/EDGE модем, связь удерживается сутками без обрывов, пропускной способности для работы с терминалом MT4 тем более хватает. [Конец лирического отступления]

Экспериментальным путём я нашёл и устранил источник проблемы. Источником оказался как раз брандмауэр WinXP, который, видимо, каким-то образом вклинивается в процесс передачи данных от терминала MT к серверу ДЦ, и искажает его. Причём, что интересно, руками позиции открывались, закрывались и модифицировались, а из скрипта советника - опаньки. Проблема с зависанием советника решилась после добавления MetaTrader в список исключений брандмауэра WinXP.

Всем спасибо, благодарю за потенциальную помощь.

 
Советник иногда зависает во время выполнения операции OrderSend().

Urain писал(а) >>

Попробуйте запустить паралельно советнику зацикленный скрипт который будет рефрешить если неконект с частотой 3000 слипов (3 сек). Проблема думаю устраняеться регулярным запросом (не зависимо от наличия тиков).

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

 
Добрый вечер всем! Кто подскажет как при закрытии ордера выделить самый первый ордер и его закрыть?
while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

ПРОШУ ПОМОЩИ!!!