Ответ
 
Опции темы
08.01.2017, 16:05
Аватар для Diso
Diso Прохожий
Регистрация: 08.01.2017 / Сообщений: 1
Поблагодарили 0 раз(а) / Репутация: 1
Подскажите добрые люди Как программно отключить использование прокси в mt4?
Diso вне форума Ответить с цитированиемОтветить с цитированием  
10.01.2017, 03:30
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от Diso Посмотреть сообщение
Подскажите добрые люди Как программно отключить использование прокси в mt4?
Это типа тонкий намёк всем, вместо тебя хэлп по терминалу почитать?

Ф1 нажми выбери вкладку "Поиск" и напиши:"proxy", нажми [Enter].
Это как вариант.

Или в меню "сервис", выбери вкладку "Сервер", крыж поставь, что "Использовать прокси-сервет", и т.д.....

Провайдер у тебя правильный.

Последний раз редактировалось _SERG_; 10.01.2017 в 03:33.
_SERG_ вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
AlexeyVik (10.01.2017)
10.01.2017, 10:30
Аватар для vladradon
vladradon Активный участник
Регистрация: 12.02.2015 / Сообщений: 127
Поблагодарили 52 раз(а) / Репутация: 52
Сообщение от _SERG_ Посмотреть сообщение
Это типа тонкий намёк всем, вместо тебя хэлп по терминалу почитать?
Серж, привет! С прошедшими! И всех с прошедшими!))
Не сталкивался с такой проблемкой: сов (мой) нормально работает везде, кроме оптимизатора - вообще ордера не открывает, хотя в тестере без проблем и ошибок. В сова встроен индикатор, рисующий канал по фракталам и прекрасно работающий в тестере без режима визуализации, но в оптимизаторе - облом...
vladradon вне форума Ответить с цитированиемОтветить с цитированием  
14.01.2017, 08:58
Аватар для alexmagik
alexmagik Прохожий
Регистрация: 17.05.2016 / Сообщений: 1
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию значения индикатора


Здравствуйте! Подскажите пожалуйста, как с помощью кода получить обведенные значения индикатора?
Миниатюры:
Нажмите на изображение для увеличения
Название: Screenshot_1.png
Просмотров: 24
Размер:	23.2 Кб
ID:	263434  
Вложения:
Тип файла: mq4 Delta_excluzive_2.mq4 (5.1 Кб, 5 просмотров)
alexmagik вне форума Ответить с цитированиемОтветить с цитированием  
14.01.2017, 10:41
Аватар для jek1380
jek1380 Новичок форума
Регистрация: 12.07.2010 / Сообщений: 39
Поблагодарили 4 раз(а) / Репутация: 5
ребят - подскажите пожалуйста, знакомый помогает - но он не профессиональный программист.Задача такая - есть график например м15 - на нём рисуются индикатором ломаные линии.Как можно определить касание (либо там по условиям закрытие за ней,либо закрытие всей свечи) но свечи старшего ТФ например Н1 или Н4.Т.е. для горизонтальной линии он понимает как , а вот как прописать пробитие наклонной линии ? Что-то не разобрался как изображение вставить-вернее вставляю-но на предварительном просмотре не отображается тогда скрин.

Скрытый текст

[свернуть]

Последний раз редактировалось NSerega; 14.01.2017 в 14:16.
jek1380 вне форума Ответить с цитированиемОтветить с цитированием  
14.01.2017, 10:59
Аватар для Elvis Burunduk
Elvis Burunduk Активный участник
Регистрация: 08.02.2016 / Сообщений: 203
Поблагодарили 145 раз(а) / Репутация: 149
Сообщение от jek1380 Посмотреть сообщение
ребят - подскажите пожалуйста, знакомый помогает - но он не профессиональный программист.Задача такая - есть график например м15 - на нём рисуются индикатором ломаные линии.Как можно определить касание (либо там по условиям закрытие за ней,либо закрытие всей свечи) но свечи старшего ТФ например Н1 или Н4.Т.е. для горизонтальной линии он понимает как , а вот как прописать пробитие наклонной линии ? Что-то не разобрался как изображение вставить-вернее вставляю-но на предварительном просмотре не отображается тогда скрин.

Скрытый текст

[свернуть]
Если я правильно понял - то нужна вот эта функция... С ней сравнивать цену нужно...

double ObjectGetValueByShift( string name, int shift)
Функция вычисляет и возвращает значение цены для указанного бара (смещение относительно текущего бара). Значение цены вычисляется при помощи линейного уравнения по первой и второй координатам. Применяется для трендовых линий и аналогичных объектов.

Последний раз редактировалось NSerega; 14.01.2017 в 14:16.
Elvis Burunduk на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
jek1380 (14.01.2017)
14.01.2017, 12:05
Аватар для jek1380
jek1380 Новичок форума
Регистрация: 12.07.2010 / Сообщений: 39
Поблагодарили 4 раз(а) / Репутация: 5
вопрос цену какого момента брать
Начала периода, середины или конца.
Если ТФ для пересечений Н4, а график чарта М15 я могу для сравнения (поиска пересечений) извлечь 16 разных цен.
А мне нужно одну.

это вот програмист спрашивает, а я не знаю как сказать, мне то нужно увидеть момент пересечения-а он же не обязательно будет в начале периода, середине или конце ? Т.е. он говорит какую из трёх точек выбрать - а мне нужно касание или пересечение в любой точке ?
jek1380 вне форума Ответить с цитированиемОтветить с цитированием  
14.01.2017, 12:15
Аватар для Elvis Burunduk
Elvis Burunduk Активный участник
Регистрация: 08.02.2016 / Сообщений: 203
Поблагодарили 145 раз(а) / Репутация: 149
Сообщение от jek1380 Посмотреть сообщение
вопрос цену какого момента брать
Начала периода, середины или конца.
Если ТФ для пересечений Н4, а график чарта М15 я могу для сравнения (поиска пересечений) извлечь 16 разных цен.
А мне нужно одну.

это вот програмист спрашивает, а я не знаю как сказать, мне то нужно увидеть момент пересечения-а он же не обязательно будет в начале периода, середине или конце ? Т.е. он говорит какую из трёх точек выбрать - а мне нужно касание или пересечение в любой точке ?
Ну тут от тебя зависит (ты хозяин-барин), что ты хочешь в итоге получить ...
Можно использовать триггеры - типа есть первое касание, первый триггер взвёлся... А далее разветвление исполнения идет по твоей хотелке (второй триггер). Либо множество сигналов на М15, либо один по окончании H4.
Elvis Burunduk на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
jek1380 (14.01.2017)
15.01.2017, 09:50
Аватар для Maxic
Maxic Интересующийся
Регистрация: 16.02.2012 / Сообщений: 13
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Нужна помощь опытных программистов!


Привет всем!
Ребят, нужна ваша помощь! Пишу себе одного советника. В программировании не особо силен, поэтому и обращаюсь. В общем, делаю проверочную функцию на установку лока к рыночным ордерам. Все ордера заносятся в структурный двумерный массив. Первый индекс (ячейка) массива [0] - это базовые(рыночные) ордера, второй индекс(ячейка) [1] - это локи к базовым ордерам. Так вот, функция должна выполнять проверку, установлен ли лок к базовому ордеру и, если - ДА, то мы ничего не делаем и работаем дальше, а если -НЕТ, то даем сигнал на установку соответствующего лока. Функцию я написал, но она работает как-то криво. Т.е., например, открывается рыночный ордер Buy, терминал выдает, что это тип ордера не BUY, а SELL и поэтому к нему надо выставить лок. А с SELL ордерами все работает правильно. Я ничего не могу понять. Ордера правильно записываются в массивы. Делал соответствующую проверку - все идеально. Все критерии ордера в массиве отражаются верно. Помогите найти ошибку в коде или как-то переделать мою функцию. Функцию прилагаю.
PHP код:
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bool CheckOrders()                                                                              // Есть массив с базовыми ордерами, открытыми по рынку InfoOrderNew[0][200]
  
{                                                                                             // Есть массив с лок ордерами, выставленными к базовым InfoOrderNew[1][200]
   
int    TypeOrder;
   
string Type          "",
          
OrderComm     "";
   
bool   OpenLockOrder false;                                                                // Флаг на установку лок ордера       
   
   
for(int i=OrdersTotal()-1;i>=0;i--)                                                          // Выполняем перебор по рыночн. и отлож. ордерам
     
{
      if((
OrderSelect(i,SELECT_BY_POS) == true)                                                 // Если есть следующ.
      
&& (OrderSymbol() == Symbol()))                                                           // .. и наша вал.пара
        
{
         
OrderComm OrderComment();                                                            // Выбираем соответствующий комментарий ордера
         
TypeOrder OrderType();                                                               // Выбираем соответствующий тип ордера                                                           
         
for(int n=0n<=199n++)                                                              // Выполняем прогон по массиву ордеров 
            
{   
             if(
StringFind(OrderComm,"BaseIndex #"+IntegerToString(n)+"_",0)>=0)                // Ищем базовый ордер с индексом в комментарии, соответствующем номеру ячейки в массиве ордеров
               
{
                if((
TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_BUY)                       // Если находим и наш ордер в массиве является BUY
                  
{
                   if(
InfoOrderNew[1][n].TypeOrder == || InfoOrderNew[1][n].TypeOrder == 5)   // Проверяем, выставлен ли к нему лок ордер (SELL или SELLSTOP) в массиве лок ордеров
                     
{
                      if(
InfoOrderNew[1][n].TypeOrder == 1Type "Sell";
                      if(
InfoOrderNew[1][n].TypeOrder == 5Type "SellStop";
                      if(
Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,".");
                      break;                                                                    
// Если лок выставлен, то выходим из функции
                     
}
                   else                                                                         
// Если нет, то
                     
{
                      if(
Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!");
                      
OpenLockOrder true;                                                     // Даем сигнал на установку лока
                     
}
                  }  
                if((
TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_SELL)                      // Если наш ордер в массиве является SELL
                  
{  
                   if(
InfoOrderNew[1][n].TypeOrder == || InfoOrderNew[1][n].TypeOrder == 4)   // Проверяем, выставлен ли к нему лок ордер (BUY или BUYSTOP) в массиве лок ордеров
                     
{
                      if(
InfoOrderNew[1][n].TypeOrder == 0Type "Buy";
                      if(
InfoOrderNew[1][n].TypeOrder == 4Type "BuyStop";
                      if(
Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,".");
                      break;                                                                    
// Если лок выставлен, то выходим из функции
                     
}
                   else                                                                         
// Если нет, то
                    
{
                     if(
Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!");
                     
OpenLockOrder true;                                                      // Даем сигнал на установку лока
                    
}
                  }    
               } 
            }
        }
     } 
   return(
OpenLockOrder);                                                                       // Передаем нашей функции полученное значение  
  

Maxic вне форума Ответить с цитированиемОтветить с цитированием  
15.01.2017, 14:23
Аватар для Elvis Burunduk
Elvis Burunduk Активный участник
Регистрация: 08.02.2016 / Сообщений: 203
Поблагодарили 145 раз(а) / Репутация: 149
Сообщение от Maxic Посмотреть сообщение
Привет всем!
Ребят, нужна ваша помощь! Пишу себе одного советника. В программировании не особо силен, поэтому и обращаюсь. В общем, делаю проверочную функцию на установку лока к рыночным ордерам. Все ордера заносятся в структурный двумерный массив. Первый индекс (ячейка) массива [0] - это базовые(рыночные) ордера, второй индекс(ячейка) [1] - это локи к базовым ордерам. Так вот, функция должна выполнять проверку, установлен ли лок к базовому ордеру и, если - ДА, то мы ничего не делаем и работаем дальше, а если -НЕТ, то даем сигнал на установку соответствующего лока. Функцию я написал, но она работает как-то криво. Т.е., например, открывается рыночный ордер Buy, терминал выдает, что это тип ордера не BUY, а SELL и поэтому к нему надо выставить лок. А с SELL ордерами все работает правильно. Я ничего не могу понять. Ордера правильно записываются в массивы. Делал соответствующую проверку - все идеально. Все критерии ордера в массиве отражаются верно. Помогите найти ошибку в коде или как-то переделать мою функцию. Функцию прилагаю.
При беглом взгляде на код - вроде все нормально...
НО, при более пристальном - непонятно... например, после нахождения ордера, у которого уже есть лок(типа ничего не надо делать), у тебя стоит оператор "брейк" , а это = прервать цикл перебора и перейти к следующему оператору. А что делать с остальными оставшимися ордерами , а если там остались незалоченные ордера, а ты уже прервал цикл?
И еще... - твоя функция возвращает только "тру-фальш", не говоря с каким ордером нужно работать, возможно так и надо(я не знаю, не вижу весь код) , но смысл тогда в функции, только информативный?
Elvis Burunduk на форуме Ответить с цитированиемОтветить с цитированием  
15.01.2017, 16:54
Аватар для Maxic
Maxic Интересующийся
Регистрация: 16.02.2012 / Сообщений: 13
Поблагодарили 0 раз(а) / Репутация: 1
Сообщение от Elvis Burunduk Посмотреть сообщение
При беглом взгляде на код - вроде все нормально...
НО, при более пристальном - непонятно... например, после нахождения ордера, у которого уже есть лок(типа ничего не надо делать), у тебя стоит оператор "брейк" , а это = прервать цикл перебора и перейти к следующему оператору. А что делать с остальными оставшимися ордерами , а если там остались незалоченные ордера, а ты уже прервал цикл?
И еще... - твоя функция возвращает только "тру-фальш", не говоря с каким ордером нужно работать, возможно так и надо(я не знаю, не вижу весь код) , но смысл тогда в функции, только информативный?
Break я уже потом поставил, думал, что поможет. Оказывается, что он есть, что его нет - это никак не влияет на ошибку. Про то, что данная ф-ция не говорит о конкретном ордере - это я тоже понимаю. Концовка еще не доделана. Дополнительные "навороты" уже поставлю потом, когда устраню ошибку. Меня интересует, как ордер Buy из ячейки массива заходит в функцию, где идет перебор по Sell ордерам?! Что тут не так?
Maxic вне форума Ответить с цитированиемОтветить с цитированием  
15.01.2017, 20:48
Аватар для st2050
st2050 Местный знаток
Регистрация: 08.09.2012 / Сообщений: 329
Поблагодарили 619 раз(а) / Репутация: 620
Здравствуйте, коллеги!

Подскажите пожалуйста как поймать событие активации окна с графиком.

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

Но для этого нужно поймать событие активации окна с советником. Как же это сделать?
В документации по OnChartEvent такого не нашёл (
st2050 на форуме Ответить с цитированиемОтветить с цитированием  
15.01.2017, 20:59
Аватар для Elvis Burunduk
Elvis Burunduk Активный участник
Регистрация: 08.02.2016 / Сообщений: 203
Поблагодарили 145 раз(а) / Репутация: 149
Сообщение от Maxic Посмотреть сообщение
Break я уже потом поставил, думал, что поможет. Оказывается, что он есть, что его нет - это никак не влияет на ошибку. Про то, что данная ф-ция не говорит о конкретном ордере - это я тоже понимаю. Концовка еще не доделана. Дополнительные "навороты" уже поставлю потом, когда устраню ошибку. Меня интересует, как ордер Buy из ячейки массива заходит в функцию, где идет перебор по Sell ордерам?! Что тут не так?
Тогда мое предложение - меняй брейк на континуе и заремируй весь кусок про селл ордера, пока забудь о них, работай только с баями, каждое действие обложи принтами...
И смотри что и когда выдает в принты, ставь рыночные ордера без лока - смотри что пишет, потом их залокируй и смотри что пишет...
В общем ищи, иначе никак ...

Я бы не так писал, но у каждого свой путь, стиль...

Последний раз редактировалось Elvis Burunduk; 15.01.2017 в 21:02.
Elvis Burunduk на форуме Ответить с цитированиемОтветить с цитированием  
16.01.2017, 03:46
Аватар для Maxic
Maxic Интересующийся
Регистрация: 16.02.2012 / Сообщений: 13
Поблагодарили 0 раз(а) / Репутация: 1
Сообщение от Elvis Burunduk Посмотреть сообщение
Тогда мое предложение - меняй брейк на континуе и заремируй весь кусок про селл ордера, пока забудь о них, работай только с баями, каждое действие обложи принтами...
И смотри что и когда выдает в принты, ставь рыночные ордера без лока - смотри что пишет, потом их залокируй и смотри что пишет...
В общем ищи, иначе никак ...

Я бы не так писал, но у каждого свой путь, стиль...
Спасибо Вам за участие в поиске проблемы! Я вроде бы разобрался. Пришлось немного переделать код и все сразу заработало.
Maxic вне форума Ответить с цитированиемОтветить с цитированием  
18.01.2017, 08:56
Аватар для Maxic
Maxic Интересующийся
Регистрация: 16.02.2012 / Сообщений: 13
Поблагодарили 0 раз(а) / Репутация: 1
Еще возник такой вопрос:

Как обнулять или удалять информацию в какой-либо из ячеек структурного неоднородного массива? Дело в том, что у меня изменился комментарий к ордеру и мне надо этот ордер удалить из ячейки структурного массива и определить этот ордер в другой массив. С обычным массивом все более менее понятно, а вот со структурными, я не знаю, какие операторы или функции работают или как это все надо оформлять? И как копировать один структурный массив в другой, чтобы сохранить информацию о предыдущем заполнении и потом ее сравнивать с новым заполнением? Подскажите, кто что знает по этому поводу. Буду очень благодарен!
Maxic вне форума Ответить с цитированиемОтветить с цитированием  
18.01.2017, 09:34
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Maxic Посмотреть сообщение
Еще возник такой вопрос:

Как обнулять или удалять информацию в какой-либо из ячеек структурного неоднородного массива? Дело в том, что у меня изменился комментарий к ордеру и мне надо этот ордер удалить из ячейки структурного массива и определить этот ордер в другой массив. С обычным массивом все более менее понятно, а вот со структурными, я не знаю, какие операторы или функции работают или как это все надо оформлять? И как копировать один структурный массив в другой, чтобы сохранить информацию о предыдущем заполнении и потом ее сравнивать с новым заполнением? Подскажите, кто что знает по этому поводу. Буду очень благодарен!
Почти всё то же самое, присвой ячейке новое значение
InfoOrderNew[1][n].TypeOrder="";
Копирование так же через ArrayCopy. Только предварительно размер приёмного массива сделай под размер копируемого через ArrayResize.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar вне форума Ответить с цитированиемОтветить с цитированием  
19.01.2017, 09:48
Аватар для ggman
ggman Интересующийся
Регистрация: 08.05.2015 / Сообщений: 44
Поблагодарили 2 раз(а) / Репутация: 3
Можно ли создать советник, который бы открывал сделки по сигналам приходящим из вне. Например с мобильного телефона, емейла, Telegram и т.д.? Нужно чтобы сделки открывались по сигналам с другого метатрейдера, но при этом чтобы в самом "сигнальном" метатрейдере никаких сделок не открывалось.
ggman вне форума Ответить с цитированиемОтветить с цитированием  
19.01.2017, 10:53
Аватар для gis63
gis63 Интересующийся
Регистрация: 06.04.2015 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Нужно прописать следующее условие


Если в торговом терминале МТ4 отсутствуют сделки с магиком №33 то...
gis63 вне форума Ответить с цитированиемОтветить с цитированием  
19.01.2017, 12:41
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от gis63 Посмотреть сообщение
Если в торговом терминале МТ4 отсутствуют сделки с магиком №33 то...
Код:
int orders=0;
int Magic=33;
//Счётчик ордеров с маджиком
int total=OrdersTotal();
for(int i=total-1; i>=0; i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         if(OrderMagicNumber()==Magic)orders++;
         }
//Если ордеров не найдено
if(orders==0)
{

}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar вне форума Ответить с цитированиемОтветить с цитированием  
19.01.2017, 12:45
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от ggman Посмотреть сообщение
Можно ли создать советник, который бы открывал сделки по сигналам приходящим из вне. Например с мобильного телефона, емейла, Telegram и т.д.? Нужно чтобы сделки открывались по сигналам с другого метатрейдера, но при этом чтобы в самом "сигнальном" метатрейдере никаких сделок не открывалось.
Вполне возможно обмениваться данными между терминалами через файл в общей папке, для этого она и существует.
Другие виды обмена потребуют выхода за пределы языка mql, например с помощью импортирования функций из библиотек.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar вне форума Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 15:12. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO