Открытие файла

Подробнее
9 года 1 мес. назад #302 от m1911
m1911 создал тему: Открытие файла
function Make_Order(TransactionOper)
{
	local data, fh;

	fh = fopen("C:\\Quick\\file.TXT","w"); 
	if (fh) 
	{
		data = "X"+TransactionOper;
		fputs(data,fh); 
		fclose(fh);
	} 
	else 
	{ 
		printf("Error opening file"); 
	}

 	return;
}

Может, у меня глаз замылился, но я никакого криминала здесь не наблюдаю. Однако в моменты подачи сигналов вылазит "Error opening file". Странно, что один раз это сработало и файл создался, а в последующие разы - никак.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #306 от admin
admin ответил в теме Открытие файла
Похоже, ошибка где-то раньше. Поставьте в настройках амиброкера опцию "прекращать исполнение скрипта на первой ошибке"

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад - 9 года 1 мес. назад #307 от m1911
m1911 ответил в теме Открытие файла
Какого рода может быть та ошибка, которая раньше, и как она может влиять на fopen() ?

Опцию поставил, ничего нигде не вылезло и не изменилось. Эта опция какие ошибки ловит?
Последнее редактирование: 9 года 1 мес. назад пользователем m1911.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #308 от m1911
m1911 ответил в теме Открытие файла
Убрал директорию, оставил только имя файла - стало все ok, файл создается. Странно.

Еще заметил такую штуку. Я сделал вывод Close в область сообщений. Так вот, если ткнуть мышкой на чарте в какой-нибудь бар, то выдается сообщение с Close этого бара. Т.е. скрипт в этот момент выполняется "на этом баре". Меня это немного смущает - на самом последнем-то баре скрипт продолжает выполняться или как? Не хотелось бы "попасть" на то, что тычок мышкой в чарт сломает робота.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #309 от admin
admin ответил в теме Открытие файла
Амиброкер на каждом проходе рассчитывает ВСЕ бары.

Конечно, на самом деле перерасчитывается только вновь пришедшая информация, неизменная кэшируется. Но для программиста на AFL все выглядит как ПОЛНЫЙ перерасчет

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #310 от m1911
m1911 ответил в теме Открытие файла
Крутая штука этот ваш Амиброкер. :)

Странная штука с директориями. Скрипту Qpile пофиг, конечно, где лежит файл с командой, но бардак не хотелось разводить.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад - 9 года 1 мес. назад #312 от m1911
m1911 ответил в теме Открытие файла
Решил одну проблему, обнаружилась вторая: если в свече случился сигнал, то скрипт постоянно создает файл и пишет в него команду на протяжении всего таймфрейма, в котором был сигнал. Посмотрел еще раз на вашу статью, на соответствующий кусок кода...
// Смотрим текущую позицию и отрабатываем сигналы. CurrentPosition хранит 0, если позиции нет и размер позиции, если она есть
CurrentPosition = StrToNum(StaticVarGetText("POSITION"));
if (CurrentPosition == 0)
   {  if (LastValue(Buy))
      { Make_Order(ClassCode,SecCode,"Buy",Size);
        StaticVarSetText("POSITION","" + Size);
      }
   }
else
   {  if (LastValue(Sell))
      { Make_Order(ClassCode,SecCode,"Sell",CurrentPosition);
         StaticVarSetText("POSITION","0");
      }
   }

...и не понял - несмотря на то, что тут сначала анализируется переменная CurrentPosition и позиции открываются только в лонг, в половине случаев все-равно должна происходить повторная отправка транзакции, но она, очевидно, не происходит. Или происходит?

В общем, что-то я в непонятках.
Последнее редактирование: 9 года 1 мес. назад пользователем m1911.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #313 от AlexLan
AlexLan ответил в теме Открытие файла
Добрый день.
" в половине случаев все-равно должна происходить повторная отправка транзакции"- не будет так как
значение CurrentPosition будет =1.
И if (CurrentPosition == 0) - ложно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #314 от m1911
m1911 ответил в теме Открытие файла
Разобрался. У вас, кстати, для хранения числовой переменной применена StaticVarSetText(), хотя можно было применить StaticVarSet(), тогда и приводить к другому типу не понадобилось бы. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #315 от m1911
m1911 ответил в теме Открытие файла
Вот опять. Вроде не вижу криминала в логике - а не работает. Я что-то упустил?
CurrentPosition = StaticVarGet("POSITION");

if (CurrentPosition == 0)
{
	if (LastValue(Buy))
	{
		Make_Order("B");
		StaticVarSet("POSITION",1);
	}
	if (LastValue(Sell))
	{
		Make_Order("S");
		StaticVarSet("POSITION",-1);
	}
}
if (CurrentPosition == 1)
{
	if (LastValue(Sell))
	{
		Make_Order("S");
		StaticVarSet("POSITION",-1);
	}
}
if (CurrentPosition == -1)
{
	if (LastValue(Buy))
	{
		Make_Order("B");
		StaticVarSet("POSITION",1);
	}
}

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #317 от admin
admin ответил в теме Открытие файла
CurrentPosition = StaticVarGet("POSITION");

замените на

CurrentPosition = NZ(StaticVarGet("POSITION"));
Спасибо сказали: m1911

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад - 9 года 1 мес. назад #318 от m1911
m1911 ответил в теме Открытие файла
Да, до такого самостоятельно я бы не додумался... темная лошадка этот AFL...
Последнее редактирование: 9 года 1 мес. назад пользователем m1911.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 1 мес. назад #319 от admin
admin ответил в теме Открытие файла
Во многих языках значение Null не равно 0. И это правильно. AFL один из таких языков.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin