Виктор 2007
New member
Подумал еще немного о твоей проблеме. Теоретически вторая заявка может не попадать вот по какой причине. Возможно, в AmiBroker'е обработка графиков реализована параллельно. В момент одновременного возникновения нескольких сигналов соответствующий код индикатора обращается к файлу. Поскольку в AmiBroker'е используются древние функции для работы с файлами, то они открывают файл в монопольном режиме и поэтому когда первый индикатор открыл файл на запись или на чтение, то другой индикатор уже не может получить доступ к этому файлу. Если несколько сигналов поступило на последней минуте текущего бара, то сигнал, который был не обработан по причине заблокированного файла, останется необработанным. Соответственно, решение этой проблемы может состоять в увеличении попыток доступа к файлу транзакций, например так:Понял ты ограничил генерацию сигналов, а я подумал что ты систему транзакции правил.![]()
procedure savetrifile(stransid,sstr) {
f = 0; n = 100;
while (n > 0 AND f = 0)
{
f=fopen(FileName,"r");
n--;
}
found=0;
if (f) {
while (!feof(f)) {
s=fgets(f);
if (StrFind(s,stransid)>0) {
found=1;
}
}
fclose(f);
}
if (found==0) {
n = 100;
while (n > 0 AND f = 0)
{
f=fopen(FileName,"a");
n--;
}
if (f) {
fputs(sstr+"\n",f);
fclose(f);
}
}
}