Автор |
Сообщение |
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
Уважаемые товарищи, использовал все 3 варианта AFL-кода записи в файл, безусловно и сам оптимизировал до упрощения. Однако результат крайне странный:
1. то напишет одну запись сделки в tri-файл и прервется - Missing arguments;
2. то напишет несколько записей и прервется в условиях вызова функций записи типа на текст: if (buy) Make_and_save (...) - missing arguments fclose (fh), type mismatch (buy) is boolean variable ит.д.
По личным ощущениям - все упирается в какой-то нюанс в чтении-записи файла.
Известно ли разница между fopen (..."w") и fopen ("a") - если нет файла он должен быть создан с собщением об ошибке? в чем разница между этими функциями?? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
"w" для записи. Если файл открыт для записи, то при записи его содержимое полностю перепишется
"a" это для дополнения. Если открыт для дополнения, то при записи новая информация добавится к старой.
У меня подозрение, что косяки от того, что файл заблокирован для редактирования ( например уже открыт ) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
Попробовал поочереди 3 варианта кода, представленных на сайте и у от автора 2004-го года - так файл даже никакой не создается , в действущий ничего не пишется.
Упростил до совершенства:
function Save_Tri_Action( straction )
{
fha = fopen( TriFileName, "a");
if ( fha )
{
fputs( straction, fha );
fclose ( fha );
}
}
Ни фига ))) - что-то пишется, но появляются выше описанные ошибки.
Неделю тренеровки и уже вышел к вам на сайт.
Что может быть не так?
Полностью переустановил AmiBroker - результат тот же, с базовыми 3-мя примерами и с выше приведенным упрощенным кодом.
Могут бы быть какие-лио установки Vista? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Попробуй вот такой код в качестве индикатора
Код: |
qq = Param("test", 0, 0, 8, 1);
function read() {
fh = fopen( "test.test", "r");
p = fgets( fh );
fclose( fh );
p = StrToNum(p);
return p;
}
procedure write( q ) {
fh = fopen( "test.test", "w");
if( !fh ) {
fh = fopen( "test.test", "w");
fputs( NumToStr( 0 ), fh);
fclose( fh );
}
fputs( NumToStr( q ), fh);
fclose( fh );
}
write(qq);
Plot(read(), "test", colorRed);
|
Он создает файл test.test в папке куда установлен Ами и рисует линию соответствубщую цифре в этом файле. Цифру можно менять из параметров. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А вот на счет Висты не подскажу. Я её в глаза не видел |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
000 писал(а): |
А вот на счет Висты не подскажу. Я её в глаза не видел |
Записан 0.000, красную линию нарисовал |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Погоняй, поменяй цифру из параметров (правой кнопкой на график и там Parameters).
Этот код осуществляет сначала запись цифры в файл а затем чтение из файла и вывод этой цифры.
Код написал именно потестировать запись в файл. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
000 писал(а): |
Погоняй, поменяй цифру из параметров (правой кнопкой на график и там Parameters).
Этот код осуществляет сначала запись цифры в файл а затем чтение из файла и вывод этой цифры.
Код написал именно потестировать запись в файл. |
Пишет, читает
Записал 6, 8,7 и т.д.
Прочитал блокнотом. Все идет без сбоев |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А почему при записи в tri ругается? Может tri заблокирован чем? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
000 писал(а): |
А почему при записи в tri ругается? Может tri заблокирован чем? |
Вот в чем вопрос!
Ничем и никак и не трогал ни Квик ничего.
Попробую еще раз с нуля.
Могут ли к три-файлу одновременно обращаться несколько систем, работающих в разных окнах?? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Alexei писал(а): |
Могут ли к три-файлу одновременно обращаться несколько систем, работающих в разных окнах?? |
Это не знаю.
Я вообще сторонник робота работающего из АА. А в АА может быть только один код и он, разумеется, не может одновременно несколько раз обращаться к tri |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Alexei писал(а): |
000 писал(а): |
А почему при записи в tri ругается? Может tri заблокирован чем? |
Вот в чем вопрос!
Ничем и никак и не трогал ни Квик ничего.
Попробую еще раз с нуля.
Могут ли к три-файлу одновременно обращаться несколько систем, работающих в разных окнах?? |
Меховский робот также не может, провенено на себе при возникновении сигнала одновремено на 2х индикаторах пройдет скорее всего один, воперых из-за того что номер заявки совпадает, попробуй в разных окнах поменять цыфры, во вторых проблема озвученная Олегом, хотя как мне кажется если решить первую решиться и вторая просто одна из систем при одновременном сигнале будет его отправлять на 2 сек позже. Путь к файлу проверь кстати, установки перепроверь как у меха расписано.
К примеру в первом индюке такой набор цыфр
Код: |
if(Buy)
{
price = Close[BarCount-1] + Otstup;
makeandsave("B", 1, price);
}
if(Sell)
{
price = Close[BarCount-1] - Otstup;
makeandsave("S", 2, price);
}
if(Short)
{
price = Close[BarCount-1] - Otstup;
makeandsave("S", 3, price);
}
if(Cover)
{
price = Close[BarCount-1] + Otstup;
makeandsave("B", 4, price);
} |
такой во втором
Код: |
if(Buy)
{
price = Close[BarCount-1] + Otstup;
makeandsave("B", 5, price);
}
if(Sell)
{
price = Close[BarCount-1] - Otstup;
makeandsave("S", 6, price);
}
if(Short)
{
price = Close[BarCount-1] - Otstup;
makeandsave("S", 7, price);
}
if(Cover)
{
price = Close[BarCount-1] + Otstup;
makeandsave("B", 8, price);
} |
|
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
000 писал(а): |
Alexei писал(а): |
Могут ли к три-файлу одновременно обращаться несколько систем, работающих в разных окнах?? |
Это не знаю.
Я вообще сторонник робота работающего из АА. А в АА может быть только один код и он, разумеется, не может одновременно несколько раз обращаться к tri |
Тогда два вопроса:
1. А как АА реализует стопы - в buy/sell/short/cover они отражаются?
2. Во время включенного АА, написанный мной интерфейс принудительного закрытия/открытия позиции будет работать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Alexei писал(а): |
Тогда два вопроса:
1. А как АА реализует стопы - в buy/sell/short/cover они отражаются? |
Прочитай в хелпере про функцию Equity() Она и в АА и в индикаторе работает одинаково, а без неё стопы не будут работать ни там ни там.
Alexei писал(а): |
2. Во время включенного АА, написанный мной интерфейс принудительного закрытия/открытия позиции будет работать? |
Мне про него ничего не известно, но скорее всего будет. Работа кода в АА и в индикаторе практически идентична. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexei
Зарегистрирован: 15.05.2009
Сообщения: 17
|
000 писал(а): |
Alexei писал(а): |
Тогда два вопроса:
1. А как АА реализует стопы - в buy/sell/short/cover они отражаются? |
Прочитай в хелпере про функцию Equity() Она и в АА и в индикаторе работает одинаково, а без неё стопы не будут работать ни там ни там.
Alexei писал(а): |
2. Во время включенного АА, написанный мной интерфейс принудительного закрытия/открытия позиции будет работать? |
Мне про него ничего не известно, но скорее всего будет. Работа кода в АА и в индикаторе практически идентична. |
Спасибо за поддержку. Все пишет.
Могу сказать одно - очень капризная штука этот интерпретатор АМИ.
Ошибки выдаются не очевидно. Плюс, конечно, вызывают озабоченность отсылки по некоторым операторам к Википедиа switch - case, например.
Одну проблему решить не могу - как получить для Trans_ID секунды?
И Now () и Second () почему-то превращаются в 00 при переделке numstr (). |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|