Ответ
 
Опции темы
24.11.2013, 11:33
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от eevviill Посмотреть сообщение
Может через то что разными версиями(билдами) копилятора скопилировано?
Да не! Везде 509 билд у меня. Оказывется, все еще интереснее: сидишь так, жмешь "Компилировать" длина ех4 меняется
Можно в тотал командере смотреть, можно в проводнике.
Просто одной кнопочкой так "щелк" - посмотрел, другое значение! От 19200 до 20800 меняется. Гы!
ansol вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (24.11.2013)
24.11.2013, 14:49
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Кто знает куда официально писать(желательно на форуме) метаквотам предложения по модернизации mql4?

Я вот что предлагаю.
PHP код:
OrdersTotal(int magic=все,string symbol=любой,int type=любой

Последний раз редактировалось eevviill; 24.11.2013 в 14:53.
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
24.11.2013, 14:54
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от eevviill Посмотреть сообщение
Кто знает куда официально писать(желательно на форуме) метаквотам предложения по модернизации mql4?

Я вот что предлагаю.
PHP код:
OrdersTotal(int magic=все,string symbol=любой
дык, на mql4.com, больше некуда!Там метакватовские представители бывают хотя бы и есть ветки по всяким модернизациям. Кстати, они 529 версию запилили "с новым компилятором", не успел ты

Там некий модератор Renat отвечает как представитель МТ

Последний раз редактировалось ansol; 24.11.2013 в 14:56.
ansol вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (24.11.2013)
25.11.2013, 15:24
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Как определить в MQL4, есть ли данный символ в окне "Обзор рынка"? Или открыто ли окно с таким символом? Ну, скажем, экзотика какая-то, причем, если окно, то обязательно с ТФ нужным, а не любое. Лучше, конечно, "Обзор рынка" - там можно убрать все символы, у которых нет открытых окон одним кликом.
ansol вне форума Ответить с цитированиемОтветить с цитированием  
25.11.2013, 15:42
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от ansol Посмотреть сообщение
Как определить в MQL4, есть ли данный символ в окне "Обзор рынка"? Или открыто ли окно с таким символом? Ну, скажем, экзотика какая-то, причем, если окно, то обязательно с ТФ нужным, а не любое. Лучше, конечно, "Обзор рынка" - там можно убрать все символы, у которых нет открытых окон одним кликом.
1) MarketInfo("EURUSD__j",MODE_BID)
Если нету в обзоре то 0
2) WindowHandle();
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ansol (25.11.2013)
25.11.2013, 16:14
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от ansol Посмотреть сообщение
Как определить в MQL4, есть ли данный символ в окне "Обзор рынка"? Или открыто ли окно с таким символом? Ну, скажем, экзотика какая-то, причем, если окно, то обязательно с ТФ нужным, а не любое. Лучше, конечно, "Обзор рынка" - там можно убрать все символы, у которых нет открытых окон одним кликом.
я так.

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

//+------------------------------------------------------------------+
//| SYMBOLS_LIST.mq4 |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""

// Скрипт для проверки работоспособности.
string Currencies[] = {"AED", "AUD", "BHD", "BRL", "CAD", "CHF", "CNY",
"CYP", "CZK", "DKK", "DZD", "EEK", "EGP", "EUR",
"GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR",
"IQD", "IRR", "ISK", "JOD", "JPY", "KRW", "KWD",
"LBP", "LTL", "LVL", "LYD", "MAD", "MXN", "MYR",
"NOK", "NZD", "OMR", "PHP", "PLN", "QAR", "RON",
"RUB", "SAR", "SEK", "SGD", "SKK", "SYP", "THB",
"TND", "TRY", "TWD", "USD", "VEB", "XAG", "XAU",
"YER", "ZAR", "_", "DJI", "DXY", "ES", "GC",
"NQ", "QG", "QM", "SI", "#"};
string Symbols[];
string MSG ="";

int start()
//int SYMBOLS_LIST()
{
int colpars = ( CreateSymbolList());
/*
for(int x = colpars - 1 ; x >= 0; x--)
{
Print( Symbols[x] );
MSG = MSG +" "+ x + " "+Symbols[x] + "\n ";
}
*/
// MSG = MSG + " " + "\n ";
for(int y = 0 ; y < colpars ; y++)
{
Print( Symbols[y] );
MSG = MSG + Symbols[y] + "|" ;
for (int j = 1; j < 34 ;j++)
{
if (j == 3) continue;
if (j == 4) continue;
if (j == 5) {MSG = MSG + TimeToStr(MarketInfo( Symbols[y], j ),TIME_DATE|TIME_SECONDS) + "|"; continue;}
if (j == 6) continue;
if (j == 7) continue;
if (j == 8) continue;
// if (j == 9) {MSG = MSG + TimeToStr(MarketInfo( Symbols[y], j ),TIME_DATE|TIME_SECONDS) + "|"; continue;}
if (j == 20) {MSG = MSG + TimeToStr(MarketInfo( Symbols[y], j ),TIME_DATE|TIME_SECONDS) + "|"; continue;}
if (j == 21) {MSG = MSG + TimeToStr(MarketInfo( Symbols[y], j ),TIME_DATE|TIME_SECONDS) + "|"; continue;}
MSG = MSG + DoubleToStr(MarketInfo( Symbols[y], j ),Digits) + "|";
}
MSG = MSG + "\n ";
MSG = MSG + "\n ";

}

// MSG = MSG + "Пары:|";
/*
for(int y = 0 ; y < colpars ; y++)
{
// Print( Symbols[y] );
MSG = MSG + Symbols[y]+ "|" ;
}
MSG = MSG + "\n ";
*/
/*
for (int k = 0 ; k < colpars ; k++)
{
for (int j = 1;j < 34 ;j++)
{
// MSG = MSG + DoubleToStr(MarketInfo( Symbols[k], j ),Digits) + "|";
MSG = MSG + DoubleToStr(MarketInfo( Symbols[k], j ),(Symbols[k], mode_Digits)) + "|";
}
MSG = MSG + "\n ";
}
*/
Comment ( MSG );
}
// [End SYMBOLS_LIST()]





int CreateSymbolList()
{
int SymbolCount = 0;
int CurrencyCount = ArrayRange(Currencies, 0);
int Loop, SubLoop;
string TempSymbol;

for(Loop = 0; Loop < CurrencyCount; Loop++)
{
for(SubLoop = 0; SubLoop < CurrencyCount; SubLoop++)
{
TempSymbol = Currencies[Loop] + Currencies[SubLoop];
if(MarketInfo(TempSymbol, MODE_BID) > 0)
{
ArrayResize(Symbols, SymbolCount + 1);
Symbols[SymbolCount] = TempSymbol;
SymbolCount++;
}
}
}
return(SymbolCount);
}
[свернуть]

Последний раз редактировалось NSerega; 25.11.2013 в 16:36.
_SERG_ на форуме Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (25.11.2013), Viko2000 (24.05.2015)
25.11.2013, 16:56
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от eevviill Посмотреть сообщение
1) MarketInfo("EURUSD__j",MODE_BID)
Если нету в обзоре то 0
Я б сказал, что если 0, то нету в обзоре.
MarketInfo() во многих случаях может вернуть правильные величины и для символов, которых в обзоре нет. Особенно это касается пар, у которых одна из валют равна валюте депозита.
Читайте файл symbols.sel, он точно содержит список из обзора и ничего больше.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (25.11.2013)
25.11.2013, 17:14
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Я б сказал, что если 0, то нету в обзоре.
MarketInfo() во многих случаях может вернуть правильные величины и для символов, которых в обзоре нет. Особенно это касается пар, у которых одна из валют равна валюте депозита.
Читайте файл symbols.sel, он точно содержит список из обзора и ничего больше.
Ну вот!
Мне надо для скрипта, а тут хрень какую-то с чтением файлов разводить...
Проверим MODE_BID и хэндл и хватит. Я просто про хендл как-то не подумал, что если окна нет, то там тупо ноль должен быть.
А уж для советника-то можно постараться и обеспечить все нужные ему окна.
Вот еще бы в этот хендл как-то текст выводить по человечески, а не посимвольно, было бы ваще здорово.
ansol вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (25.11.2013)
25.11.2013, 17:24
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от ansol Посмотреть сообщение
Ну вот!
Мне надо для скрипта, а тут хрень какую-то с чтением файлов разводить...
Проверим MODE_BID и хэндл и хватит. Я просто про хендл как-то не подумал, что если окна нет, то там тупо ноль должен быть.
А уж для советника-то можно постараться и обеспечить все нужные ему окна.
Вот еще бы в этот хендл как-то текст выводить по человечески, а не посимвольно, было бы ваще здорово.
Если хендл нашелся, дальше можно и не проверять. Ну разве что за вычетом крайних случаев, когда окно еще есть, а символа уже нет, для скрипта неактуально.
Насчет "посимвольно" - запусти туда скрипт/индюк, и посылай ему строки, пусть выводит.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
25.11.2013, 17:34
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от qqmber Посмотреть сообщение
Если хендл нашелся, дальше можно и не проверять. Ну разве что за вычетом крайних случаев, когда окно еще есть, а символа уже нет, для скрипта неактуально.
Насчет "посимвольно" - запусти туда скрипт/индюк, и посылай ему строки, пусть выводит.
Поставим вопрос по-другому: как запихать индюк в заданный хендл? Заодно и хендл(окно это в смысле) на передний план вытащить?
Так-то я могу напечатать в окне советника, увидеть, к чему надпись и открыть нужное окно, конечно.
ansol вне форума Ответить с цитированиемОтветить с цитированием  
26.11.2013, 06:27
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Поищи в недокументированных функциях.

Пример функции:
Код:
#import "user32.dll"
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
int GetForegroundWindow();
#import
#define WM_COMMAND 0x0111

void wCommands(int com)
{
switch(com)
{
case 1: PostMessageA(GetForegroundWindow(), WM_COMMAND, 33309, 0); return; //Обзор рынка | или 33160
}

Старт в скрипте или в эксперте:

int start()
{
wCommands(1);
}
Лично я не проверял работу этой строки, что произойдёт не знаю, но переключение ТФ, смена валюты в текущем окне, нажатие кнопки "Советники" работает на ура.

Последний раз редактировалось AlexeyVik; 26.11.2013 в 06:35.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ansol (26.11.2013), qqmber (27.11.2013)
28.11.2013, 12:15
Аватар для Маруся2014
Маруся2014 Заблокирован
Регистрация: 12.11.2013 / Сообщений: 35
Поблагодарили 12 раз(а) / Репутация: 13
Здравствуйте мужички программисты. Хотела раскрасить фон индикатора (oscillator). Выше 0 зеленый, а ниже 0 красный. Вы не подскажите какой код надо вставить?
Маруся2014 вне форума Ответить с цитированиемОтветить с цитированием  
28.11.2013, 15:08
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Надо разделить на 2 буфера и поставить условие если выше 0 буфер1 = ... иначе если ниже 0 буфер2 = ...
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (29.11.2013)
28.11.2013, 21:27
Аватар для Маруся2014
Маруся2014 Заблокирован
Регистрация: 12.11.2013 / Сообщений: 35
Поблагодарили 12 раз(а) / Репутация: 13
А нельзя без буферов обойтись? А что именно надо разделить? Я как раз это и не понимаю к чему это самое привязать?
Маруся2014 вне форума Ответить с цитированиемОтветить с цитированием  
29.11.2013, 05:28
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Если ты не знаешь что такое буфер то в таком случае легче сделать чем объяснить.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (29.11.2013)
29.11.2013, 11:28
Аватар для Маруся2014
Маруся2014 Заблокирован
Регистрация: 12.11.2013 / Сообщений: 35
Поблагодарили 12 раз(а) / Репутация: 13
Нет я знаю что такое буфер. Но! - у меня нет не одного свободного. Все заняты. Надо как-то по другому.
Маруся2014 вне форума Ответить с цитированиемОтветить с цитированием  
29.11.2013, 13:45
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Телочка Посмотреть сообщение
Нет я знаю что такое буфер. Но! - у меня нет не одного свободного. Все заняты. Надо как-то по другому.
Буфер может иметь только один цвет. На до 2 цвета, придётся использовать 2 буфера.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (29.11.2013)
29.11.2013, 14:43
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от Телочка Посмотреть сообщение
А нельзя без буферов обойтись? А что именно надо разделить? Я как раз это и не понимаю к чему это самое привязать?
Ну типа

PHP код:
buf1[];
buf2[];


///////////////////////////////////////////////
void start()
{
for(
int h=Bars-IndicatorCounted();h>=0;h--)
{
double osci=iCustom(...,h);
if(
osci<0buf1[h]=osci[h];
if(
osci>0buf2[h]=osci[h];
}


}
//end start 
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
29.11.2013, 17:21
Аватар для Маруся2014
Маруся2014 Заблокирован
Регистрация: 12.11.2013 / Сообщений: 35
Поблагодарили 12 раз(а) / Репутация: 13
Я реально говорю, что все восемь буферов заняты! Можно к примеру это сделать как-то через ObjectCreate или что-то подобное.
Маруся2014 вне форума Ответить с цитированиемОтветить с цитированием  
29.11.2013, 17:58
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
О-о-о, это круто.
Ну какой вопрос такой и ответ.

Конечно можно обойтись и объектами, но надо-ли??? Распространённая ошибка неопытных программистов использовать буферы там где можно обойтись переменными или обычным массивом, а буферы использовать исключительно для отрисовки показаний индикатора.
Может я угадал?
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (29.11.2013)
Ответ

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


Опции темы

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

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



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


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