Узнать из dll тип счета

 

Пробовал ли ктонибудь узнать какой тип счета сейчас активен в терминале (демо или реал), из dll ?

Пока нашел только один способ - смотреть в заголовке терминала. Но мне кажется что он не надежен.

Заранее спасибо

 
furmanOFF писал(а) >>

Можно написать простенький скрипт пишущий большими красными буквами в чарте к какому счету подключен терминал. Как-то по неопытности было тоже счета попутал, получися интересный трейдинг на реальном счете напрочь лишенный психологической составляющей, озолотился прям)

Просили разработчиков как-нибудь выделить терминал подключенный к реальному счету, но видно они посчитали что этолишние, сейчас и сам так думаю....

 

Вы меня не совсем поняли.

Я имел ввиду НЕЯВНО узнать тип счета, без функций типа IsDemo().

Это требуется для коммерческого проекта.

dll работает по разному для демо и для реала.

Но если определение будет явным (в mq4 коде) то злобные малазийцы сразу додумаются заменить запрос с IsDemo() на true.

 
furmanOFF >>:

Пробовал ли ктонибудь узнать какой тип счета сейчас активен в терминале (демо или реал), из dll ?

Пока нашел только один способ - смотреть в заголовке терминала. Но мне кажется что он не надежен.

Заголовок точно не пойдет - его можно переписать. А другого ничего в голову не лезет...

 
Figar0 >>:

Просили разработчиков как-нибудь выделить терминал подключенный к реальному счету, но видно они посчитали что этолишние, сейчас и сам так думаю....

В заголовке терминала всю жизнь пишется тип счета: Demo или Contest. Если таких описаний нет, значит счет не демо и не конкурс.

 

Вот, удобная фича. И, главное, в тему:

#include <WinUser32.mqh>

#import "user32.dll"
	int GetParent( int hWnd );
#import

int start()
{
	int		hwnd_parent1	= 0;
	int		hwnd1				= WindowHandle( Symbol(), Period() );
	string	curr				= StringConcatenate( " ", AccountCurrency() );
	string	text;
	int		len;

	while ( !IsStopped() )
	{
		hwnd1 = GetParent( hwnd1 );
		if ( hwnd1 == 0 ) break;
		hwnd_parent1 = hwnd1;
	}
	if ( hwnd_parent1 != 0 )
	{
		while ( !IsStopped() )
		{
			text	= StringConcatenate( "Eq: ", DoubleToStr( AccountEquity(), 2 ), curr, ", ", 
                                                  OrdersTotal(), " order(s), ML: ", 
                                                  DoubleToStr( AccountEquity()/MathMax(AccountMargin(),1)*100, 2 ), "%" );
			len	= StringLen( text ) - 17;
			for ( int s = -5; s < len; s ++ )
			{
				if ( IsStopped() ) break;
				SetWindowTextA( hwnd_parent1, StringSubstr( text, s ) );
				Sleep(135);
			}
			Sleep(1000);
		}
		SetWindowTextA( hwnd_parent1, text );
	}
   return(0);
}
 
komposter >>:

Вот, удобная фича. И, главное, в тему:

Вот вы и переписали заголовок...

 
Не считая того что "Демо" в заголовке написано на языке терминала - это тоже проблема.
 
furmanOFF >>:
Не считая того что "Демо" в заголовке написано на языке терминала - это тоже проблема.

---

неплохо бы из DLL определить до этого на каком языке стоит МТ4

--

как вариант пробежать по всем языкам

и получить коды - Demo или Contest. и если совпало принимать решение

--

а вообще конечно это как работа с недокументированными функциями

скажем в релизе 228 вдруг возьмут к примеру и перестанут выводить фразу демо там где вы ее ждете

и начнут ее выводить где то в другом месте


конечно любая програма работает в некоторых условиях

--

если что то удается точно определять то это в хорошо поддерживаемых продуктах

вроде мт4 таковым и являчется

а раз так - то в заголовке - слово демо не должно пропасть к примеру 228 релизе

Причина обращения: