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

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

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

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

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

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

Здравствуйте! Подскажите пожалуйста, как с помощью кода получить обведенные значения индикатора?
14.01.2017, 10:41
Аватар для jek1380
jek1380 jek1380 вне форума Новичок форума
Регистрация: 12.07.2010 / Сообщений: 40
Поблагодарили 4 раз(а) / Репутация: 5
ребят - подскажите пожалуйста, знакомый помогает - но он не профессиональный программист.Задача такая - есть график например м15 - на нём рисуются индикатором ломаные линии.Как можно определить касание (либо там по условиям закрытие за ней,либо закрытие всей свечи) но свечи старшего ТФ например Н1 или Н4.Т.е. для горизонтальной линии он понимает как , а вот как прописать пробитие наклонной линии ? Что-то не разобрался как изображение вставить-вернее вставляю-но на предварительном просмотре не отображается тогда скрин.

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

[свернуть]

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

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

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

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

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

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

это вот програмист спрашивает, а я не знаю как сказать, мне то нужно увидеть момент пересечения-а он же не обязательно будет в начале периода, середине или конце ? Т.е. он говорит какую из трёх точек выбрать - а мне нужно касание или пересечение в любой точке ?
Ну тут от тебя зависит (ты хозяин-барин), что ты хочешь в итоге получить ...
Можно использовать триггеры - типа есть первое касание, первый триггер взвёлся... А далее разветвление исполнения идет по твоей хотелке (второй триггер). Либо множество сигналов на М15, либо один по окончании H4.
15.01.2017, 09:50
Аватар для Maxic
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);                                                                       // Передаем нашей функции полученное значение  
  

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

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

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

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

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

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

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

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

Как обнулять или удалять информацию в какой-либо из ячеек структурного неоднородного массива? Дело в том, что у меня изменился комментарий к ордеру и мне надо этот ордер удалить из ячейки структурного массива и определить этот ордер в другой массив. С обычным массивом все более менее понятно, а вот со структурными, я не знаю, какие операторы или функции работают или как это все надо оформлять? И как копировать один структурный массив в другой, чтобы сохранить информацию о предыдущем заполнении и потом ее сравнивать с новым заполнением? Подскажите, кто что знает по этому поводу. Буду очень благодарен!
Почти всё то же самое, присвой ячейке новое значение
InfoOrderNew[1][n].TypeOrder="";
Копирование так же через ArrayCopy. Только предварительно размер приёмного массива сделай под размер копируемого через ArrayResize.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
19.01.2017, 09:48
Аватар для ggman
ggman ggman вне форума Интересующийся
Регистрация: 08.05.2015 / Сообщений: 48
Поблагодарили 2 раз(а) / Репутация: 3
Можно ли создать советник, который бы открывал сделки по сигналам приходящим из вне. Например с мобильного телефона, емейла, Telegram и т.д.? Нужно чтобы сделки открывались по сигналам с другого метатрейдера, но при этом чтобы в самом "сигнальном" метатрейдере никаких сделок не открывалось.
19.01.2017, 10:53
Аватар для gis63
gis63 gis63 вне форума Интересующийся
Регистрация: 06.04.2015 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1

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

Если в торговом терминале МТ4 отсутствуют сделки с магиком №33 то...
19.01.2017, 12:41
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Если в торговом терминале МТ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
Чужие программы не переделываю!
19.01.2017, 12:45
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Можно ли создать советник, который бы открывал сделки по сигналам приходящим из вне. Например с мобильного телефона, емейла, Telegram и т.д.? Нужно чтобы сделки открывались по сигналам с другого метатрейдера, но при этом чтобы в самом "сигнальном" метатрейдере никаких сделок не открывалось.
Вполне возможно обмениваться данными между терминалами через файл в общей папке, для этого она и существует.
Другие виды обмена потребуют выхода за пределы языка mql, например с помощью импортирования функций из библиотек.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ответить

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


Опции темы

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

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



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


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