DDE Delphi MT4
Простите, что в эту тему, но не сможет ли кто прояснить мне вопрос:
Что за HIGH и LOW отправляет DDE-сервер MT4 ???
High и Low - это за какое время?
Спасибо.
Для реакции вашей процедуры Timer1Timer не по таймеру, а по событию изменения цены достаточно прописать процедуру OnChange в вашем DdeClientItem1. Тогда при изменении цены, каждый раз будет вызываться ваша процедура обработки.
Доброго всем времени суток.
пишу програмку на дельфи для того чтобы брать текущии котировки (ASK, BID, HIGH, LOW)
Если делать вот таким образом ->
DdeClientConv1
DDeService:='MT4'
DDEtopic:='ASK'
DdeClientItem1
DDEItem:='EURUSD'
procedure TForm1.DdeClientItem1Change(Sender: TObject);
begin
SG.Cells[1,1]:=' ' + DdeClientItem1.Text;
end;
То работает всё ок - но это всего лишь одна пара и одна цена
Если я делаю вот таким образом->
var
Form1: TForm1;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
SG.Cells[1,0]:=' Ask';
SG.Cells[2,0]:=' Bid';
SG.Cells[3,0]:=' High';
SG.Cells[4,0]:=' Low';
SG.Cells[0,1]:='EURUSD';
SG.Cells[0,2]:='EURGBP';
SG.Cells[0,3]:='USDJPY';
SG.Cells[0,4]:='GBPJPY';
SG.Cells[0,5]:='GOLD';
end;
procedure TForm1.DdeClientItem1Change(Sender: TObject);
begin
SG.Cells[1,i]:=' ' + DdeClientItem1.Text;
end;
procedure TForm1.DdeClientItem2Change(Sender: TObject);
begin
SG.Cells[2,i]:=' ' + DdeClientItem2.Text;
end;
procedure TForm1.DdeClientItem3Change(Sender: TObject);
begin
SG.Cells[3,i]:=' ' + DdeClientItem3.Text;
end;
procedure TForm1.DdeClientItem4Change(Sender: TObject);
begin
SG.Cells[4,i]:=' ' + DdeClientItem4.Text;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
for i:=1 to SG.RowCount-1 do begin
DdeClientItem1.DdeItem:=SG.Cells[0,i];
DdeClientItem2.DdeItem:=SG.Cells[0,i];
DdeClientItem3.DdeItem:=SG.Cells[0,i];
DdeClientItem4.DdeItem:=SG.Cells[0,i];
end;
end;
Всё работает отлично - но примерно через 2-10-15 минут вылетает сообщение - "Access violation at address 0049b6f7 in module read of address 00000048" - и прога вешается .
я понимаю что через таймер получать котировки неправильно, но с другой стороны я невижу как сделать это без таймера
подскажите пажалусто как получать котировки по изменению цены а не по запросу таймера .
заранее всем благодарен.
С Уважением Сергей