Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день! Подскажите, такой вопрос- по мотивам EqualVolumeBars и PeriodConverter накидал простой советник, создающий на ходу тиковый график. Все вроде работает, но при удалении советника с графика, или просто отключения dll в его свойствах- МТ молча закрывается. Наступает такое состояние неуравновешенное после выполнения PostMessageA(hwnd, WM_COMMAND, 33324, 0 );
Можно ли побороть эту неприятность, во избежание других сюрпризов?
И еще- есть ли возможность открывать автономные графики? ChartOpen() не помогает
#property strict
/*
Советник создает автономный тиковый график, где размер свечи соответствует
разнице Bid-Ask.
*/
#include <WinUser32.mqh> //в общем-то ненужен
#import "user32.dll"
// int RegisterWindowMessageA(string lpstring);
int PostMessageA( int hWnd, int Msg, int wParam, string lParam );
#import
#define WM_COMMAND 0x0111
int ExtHandle = -1; // file arrow
string c_comment;
string c_symbol;
string FileName;
string ObjName;
double d_open=0, d_low=0, d_high=0, d_close=0, d_volume=0;
int hwnd = 0, cnt = 0, LastError = 0, i_time=60;
int HistoryHandle = -1;
int Tmp=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
// открываем тиковый файл
c_symbol=Symbol();
FileName = StringConcatenate( "Tick", c_symbol, 1, ".hst" );
HistoryHandle = FileOpenHistory( FileName,FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ);
if ( HistoryHandle < 0 )
{
LastError = GetLastError();
Alert( "FileOpenHistory( \"", FileName, "\", FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ)", " - Error #", LastError );
return(-1);
}
// записываем заголовок файла
int i_period = 1;
int i_digits = Digits;
int i_unused[13];
FileWriteInteger(HistoryHandle, 400, LONG_VALUE);
FileWriteString(HistoryHandle, "(C)opyright 2014, ***", 64);
FileWriteString(HistoryHandle, StringConcatenate("Tick",c_symbol), 12);
FileWriteInteger(HistoryHandle, i_period, LONG_VALUE);
FileWriteInteger(HistoryHandle, i_digits, LONG_VALUE);
FileWriteInteger(HistoryHandle, 0, LONG_VALUE); // timesign
FileWriteInteger(HistoryHandle, 0, LONG_VALUE); // last_sync
FileWriteArray(HistoryHandle, i_unused, 0, 13);
FileFlush(HistoryHandle);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
if ( HistoryHandle > 0 )
{
// закрываем файл
FileClose( HistoryHandle );
HistoryHandle = -1;
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
i_time +=60;
d_open=Bid;
d_low=Bid;
d_close=Ask;
d_high=Ask;
d_volume=1;
FileWriteInteger(HistoryHandle, i_time, LONG_VALUE);
FileWriteDouble(HistoryHandle, d_open, DOUBLE_VALUE);
FileWriteDouble(HistoryHandle, d_low, DOUBLE_VALUE);
FileWriteDouble(HistoryHandle, d_high, DOUBLE_VALUE);
FileWriteDouble(HistoryHandle, d_close, DOUBLE_VALUE);
FileWriteDouble(HistoryHandle, d_volume, DOUBLE_VALUE);
FileFlush(HistoryHandle);
RefreshWindow();
}
void RefreshWindow()
{
//---- Поиск автономного графика
if ( hwnd == 0 )
{
hwnd = WindowHandle( StringConcatenate( "Tick", c_symbol ),0 );
if ( hwnd != 0 )Comment( "< - - - График ", "Tick", c_symbol,0, " найден! - - - >" );
else
{
Comment ("График не найден");
ChartOpen(StringConcatenate( "Tick", c_symbol ),1 );
Tmp=GetLastError();
Print(Tmp);
}
}
//---- Если найдено- обновить
if ( hwnd != 0 )
{
PostMessageA( hwnd, WM_COMMAND, 33324, 0 );
ObjName=StringConcatenate( "Tick", c_symbol );
Tmp=iBars(ObjName,1);
c_comment=DoubleToStr(Tmp,0);
Comment(c_comment);
}
}