← Zurück

terminal.GetMessages() некорректно работает


foreach (string element in terminal.GetMessages())
{
    System.Console.WriteLine(element);
}

и получаю вот такой вывод: MN W D H4 H2 M60 M30 M20 M15 M10 M6 M5 M4 M3 M2 M1 Tick

Откуда здесь период графиков вообще не понял... Подскажите в чем здесь дело кто знает

War dieses Thema hilfreich?

Thema teilen

Kommentare (10)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov
dron3333
dron3333 Autor

Mikhail Sukhov: https://github.com/StockSharp/StockSharp/blob/master/Connectors/Quik/QuikTerminal.cs

Тяжеловато пока мне Миша, я только разбираюсь. Можно легкий пример?

Mikhail Sukhov
Mikhail Sukhov

dron3333:

Mikhail Sukhov: https://github.com/StockSharp/StockSharp/blob/master/Connectors/Quik/QuikTerminal.cs

Тяжеловато пока мне Миша, я только разбираюсь. Можно легкий пример?

Пример вы привели выше. А я дал ссылку на исходник. Если не понятно почему и что возвращает метод с наружи - всмотрите во внуть кода и разбирайтесь.

dron3333
dron3333 Autor

Mikhail Sukhov:

dron3333:

Mikhail Sukhov: https://github.com/StockSharp/StockSharp/blob/master/Connectors/Quik/QuikTerminal.cs

Тяжеловато пока мне Миша, я только разбираюсь. Можно легкий пример?

Пример вы привели выше. А я дал ссылку на исходник. Если не понятно почему и что возвращает метод с наружи - всмотрите во внуть кода и разбирайтесь.

ааа... это так и должно быть? я просто хотел получить сообщения квика. Может тогда я не там копаюсь? В общем хочу доставать сообщения квика которые выскакивают в окне сообщений. Если такое возможно вообще. Подскажите как это сделать

COBRA
COBRA

наверно имена окон в новых версиях QUIK поменялись вот и не работает "ToolbarWindow32" или "ComboBoxEx32"


public IEnumerable<string> GetMessages()
{
try
{
var reBarWindow = MainWindow.AllChildWindows.First(w => w.ClassName.CompareIgnoreCase("ReBarWindow32"));
foreach (var wnd in reBarWindow.AllChildWindows)
{
if (!wnd.ClassName.CompareIgnoreCase("ToolbarWindow32")) continue;
foreach (var combobox32 in wnd.AllChildWindows)
{
if (!combobox32.ClassName.CompareIgnoreCase("ComboBoxEx32")) continue;
var listContent = combobox32.Content as ListContent;
if (listContent == null) break;
//Reverse для FIFO - ранние сообщения должны быть с меньшим индексом в массиве
return listContent.GetListContentItems().Reverse();
}
}
}
catch
{
throw new InvalidOperationException(LocalizedStrings.Str1820);
}
return null;
}

dron3333
dron3333 Autor

COBRA: наверно имена окон в новых версиях QUIK поменялись вот и не работает "ToolbarWindow32" или "ComboBoxEx32"

public IEnumerable<string> GetMessages() { try { var reBarWindow = MainWindow.AllChildWindows.First(w => w.ClassName.CompareIgnoreCase("ReBarWindow32")); foreach (var wnd in reBarWindow.AllChildWindows) { if (!wnd.ClassName.CompareIgnoreCase("ToolbarWindow32")) continue; foreach (var combobox32 in wnd.AllChildWindows) { if (!combobox32.ClassName.CompareIgnoreCase("ComboBoxEx32")) continue; var listContent = combobox32.Content as ListContent; if (listContent == null) break; //Reverse для FIFO - ранние сообщения должны быть с меньшим индексом в массиве return listContent.GetListContentItems().Reverse(); } } } catch { throw new InvalidOperationException(LocalizedStrings.Str1820); } return null; }


Как теперь это исправить? Я еще мало что здесь понимаю... Как функцию написать чтобы работала правильно кто знает?
COBRA
COBRA

Надо какой нибудь отладчик погуглить, чтобы посмотреть как устроен QUIK, или на форуме QUIK спросить

dron3333
dron3333 Autor

COBRA: Надо какой нибудь отладчик погуглить, чтобы посмотреть как устроен QUIK, или на форуме QUIK спросить

может админ знает как ... я не потяну в этом

Mikhail Sukhov
Mikhail Sukhov

dron3333: я не потяну в этом

Попробуйте обратиться к программисту. Сайты фрилансерские всякие. C# не такой уж редкий язык, чтобы не найти работника.

orphan
orphan

Костыль:


		public IEnumerable<string> GetMessages()
		{
			try
			{
				var reBarWindow = MainWindow.AllChildWindows.First(w => w.ClassName.CompareIgnoreCase("ReBarWindow32"));
				foreach (var wnd in reBarWindow.AllChildWindows)
				{
					if (!wnd.ClassName.CompareIgnoreCase("ToolbarWindow32")) continue;

					foreach (var combobox32 in wnd.AllChildWindows)
					{
						if (!combobox32.ClassName.CompareIgnoreCase("ComboBoxEx32")) continue;

//************************************************************************
					    bool isEdit = false;
                        foreach (var elem in wnd.AllChildWindows)
                            isEdit = elem.ClassName.CompareIgnoreCase("Edit");

                        if (!isEdit) continue;
//************************************************************************	
				    
						var listContent = combobox32.Content as ListContent;
						if (listContent == null) break;

						//Reverse для FIFO - ранние сообщения должны быть с меньшим индексом в массиве
						return listContent.GetListContentItems().Reverse();
					}
				}
			}
			catch
			{
				throw new Exception("Не удалось получить Окно сообщений");
			}

			return null;
		}


Mikhail Sukhov