Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Как правильно писать в файл? Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Павел



Зарегистрирован: 28.07.2011
Сообщения: 6

СообщениеДобавлено: Пн Авг 15, 2011 6:16 pm Ответить с цитатой Вернуться к началу

Робот совершает сделки, но в файле замещает старые (перезаписывает),
как сделать чтоб робот сохранял историю в текстовом файле?
делаю так:

Otstup=50;
FileName = "C:/test.txt";
fh = fopen(filename, "w");
feof( fh );
if( fh )
if(Buy=True)
{
price = Close[BarCount-1] + Otstup;
fputs("BUY="+price+"\n",fh);
}
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пн Авг 15, 2011 6:26 pm Ответить с цитатой Вернуться к началу

Надо так:
Код:
f = fopen(filename, "a");
Посмотреть профиль Отправить личное сообщение ICQ Number
Павел



Зарегистрирован: 28.07.2011
Сообщения: 6

СообщениеДобавлено: Вт Авг 16, 2011 6:39 am Ответить с цитатой Вернуться к началу

Да, так идут в файл, если загоняю в тестер, то сделки идут но пустые без сумм, как это исправить?
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Вт Авг 16, 2011 8:51 am Ответить с цитатой Вернуться к началу

Нужно price преобразовать в тип "строка". Глянь функцию NumToStr()
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Авг 16, 2011 9:35 am Ответить с цитатой Вернуться к началу

Вставляешь в код вот такую процедуру.
Код:

procedure Wr( w, q ) {
   fh = fopen( "имя файла", "a");
   fputs( w + "=" + NumToStr( q, 1.0, False ) + "\n", fh);
   fclose( fh );
 }

и потом в коде можно вызывать типа
Код:

Wr("Buy", 5);

В результате в файл запишется Buy=5

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Павел



Зарегистрирован: 28.07.2011
Сообщения: 6

СообщениеДобавлено: Вт Авг 16, 2011 10:38 am Ответить с цитатой Вернуться к началу

За процедуру большое спасибо!

У меня маленько в другом проблема я хотел сделать так:
Когда наступает событие Buy в текстовый файл попадали данные покупка по такой цене, Sell продажа по такой цене.

Когда делаю условие if(Buy=True) Wr("buy=",Close[BarCount-1] + Otstup);
попадает в текст не все Buy и результаты в тестере изменяются, и в файл пишутся не все сделки. Может я не правильно отслеживаю(отлавливаю событие) на Buy?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Авг 16, 2011 10:47 am Ответить с цитатой Вернуться к началу

Ну так Buy=True оно вообще странно что работает. Надо или так
if(Buy)
или так
if(Buy==True)

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Авг 16, 2011 10:52 am Ответить с цитатой Вернуться к началу

Вообще можешь вот с этого робота
(сообщение Пт Июн 10, 2011 3:25)
много чего взять.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Павел



Зарегистрирован: 28.07.2011
Сообщения: 6

СообщениеДобавлено: Вт Авг 16, 2011 1:17 pm Ответить с цитатой Вернуться к началу

Спасибо за ответ!

Когда я ставлю if(Buy==True) -ошибка Error 6. Condition in IF, WHILE, FOR statements has to be Numeric or Boolean type. You can not use array here, please use [] (array subscript operator) to access array elements

Когда я ставлю if(Buy) - та же ошибка, может что то нужно включить или выключить?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Авг 16, 2011 2:03 pm Ответить с цитатой Вернуться к началу

Конечно нужно. По умолчанию Buy это массив, а функция if работает только с переменными. Для робота надо взять последнее значение массива LastValue(Buy)

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen