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



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

СообщениеДобавлено: Пн Дек 08, 2008 11:03 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:

Олег привет, подскажи тебе доводилось встречать неправильную работу функции applystop с параметром volatile =True

Нет. Не доводилось. Зато доводилось видеть неправилную работу всего Ами после многочисленных тестов и прогонов разных кодов AFL. Перезагрузка как правило спасает.

Перегружал ами, короче везде соблюдает условие, выходит на заданном проценте, а тут фиксанул по открытию новой свечки, я в шоке, незнаю что делать, к формуле притензий нет там все предельно ясно, а вот на этой свечке ему приспичило выйти по опену.. пипец
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Дек 08, 2008 11:50 pm Ответить с цитатой Вернуться к началу

А можешь дать похожий код с таким же косяком?

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



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

СообщениеДобавлено: Вт Дек 09, 2008 12:24 am Ответить с цитатой Вернуться к началу

000 писал(а):
А можешь дать похожий код с таким же косяком?

Отписал в личку
Посмотреть профиль Отправить личное сообщение
Disperados



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

СообщениеДобавлено: Вс Янв 11, 2009 6:46 am Ответить с цитатой Вернуться к началу

прошу помочь разобраться
местами дыры, хз почему
Код:
_SECTION_BEGIN("VA");
TrueLow=IIf(Ref( Close,-1) < Low,(Ref( Close,-1)),Low);
TrueHigh=IIf(Ref (Close,-1) >High,(Ref( Close,-1)), High);
Xt =((Close - TrueLow)-(TrueHigh - Close) )/(TrueHigh - TrueLow);
TV = Sum(Volume, 11);
TVA = Sum( Volume * Xt, 11);
VA = (TVA / TV) * 100;
Plot(VA,"VA",4,1);
Plot(0,"0",4,1);
Buy = VA>Ref(VA,-1) AND VA>0;
Sell = VA<Ref(VA,-1) AND VA<0;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
_SECTION_END();


добавляю в код пивоты, вообще перестает работать

Код:
DayH = TimeFrameGetPrice("H", inDaily, -1);      // yesterdays high
DayL = TimeFrameGetPrice("L", inDaily, -1);      //            low
DayC = TimeFrameGetPrice("C", inDaily, -1);      //            close

PP = (DayL + DayH + DayC)/3 ;
R1  =  (2 * PP) - DayL;
S1  =  (2 * PP)  - DayH;
R2  =  (PP - S1) + R1;
S2  =  PP - (R1 - S1);
R3 =  DayH+2*(PP-DayL) ;
S3 = DayL-2*(DayH-PP) ;
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 9:04 am Ответить с цитатой Вернуться к началу

Посмотрел код. Все написано совершенно правильно и у меня работает.
Возможно косяки в данных. Иногда бывает, что если данные не определены (например Volume), то код косячит.
Кроме того если тут
Код:

Xt =((Close - TrueLow)-(TrueHigh - Close) )/(TrueHigh - TrueLow);

По какой либо причине TrueHigh = TrueLow, то получается деление на ноль.
В таких случаях помогает функция NZ()

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



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

СообщениеДобавлено: Пн Янв 12, 2009 10:12 am Ответить с цитатой Вернуться к началу

000 писал(а):
Посмотрел код. Все написано совершенно правильно и у меня работает.
Возможно косяки в данных. Иногда бывает, что если данные не определены (например Volume), то код косячит.
Кроме того если тут
Код:

Xt =((Close - TrueLow)-(TrueHigh - Close) )/(TrueHigh - TrueLow);

По какой либо причине TrueHigh = TrueLow, то получается деление на ноль.
В таких случаях помогает функция NZ()

Боюсь показаться идиотом, но спрошу, Олег а это как?
И еще вопрос данный код перестает работать с пивотами.
У меня уже третий день камасутра с двумя кусками системы.
По отдельности работают, вместе никак.
Пивоты тоже пробовал переписывать(TimeFrameExpand, TimeFrameCompress) результат тот-же.
Таки склоняюсь к мысли, что с фильтром что-то не то.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 10:23 am Ответить с цитатой Вернуться к началу

Цитата:

Боюсь показаться идиотом, но спрошу, Олег а это как?

Напиши в начале кода
Код:

Volume = Nz(Volume);

Чтобы исключить косяки с объемом если он совсем не определен (это на всякий случай)
и измени строку
Код:

Xt =((Close - TrueLow)-(TrueHigh - Close) )/(TrueHigh - TrueLow);

на
Код:

Xt =Nz(((Close - TrueLow)-(TrueHigh - Close) )/(TrueHigh - TrueLow));

Чтобы убрать возможные косяки с делением на ноль.
Цитата:
И еще вопрос данный код перестает работать с пивотами.
У меня уже третий день камасутра с двумя кусками системы.
По отдельности работают, вместе никак.

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



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

СообщениеДобавлено: Пн Янв 12, 2009 12:04 pm Ответить с цитатой Вернуться к началу

А если в условие добавить
Код:
PlotShapes(IIf(Buy,shapeUpArrow,0),27,0,Graph0,20);
PlotShapes(IIf(Sell,shapeDownArrow,0),19,0,Graph0,-20);

и сравнить вариант с пивотами и без...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 12:18 pm Ответить с цитатой Вернуться к началу

Disperados писал(а):
А если в условие добавить
Код:
PlotShapes(IIf(Buy,shapeUpArrow,0),27,0,Graph0,20);
PlotShapes(IIf(Sell,shapeDownArrow,0),19,0,Graph0,-20);

и сравнить вариант с пивотами и без...

Не вопрос.
Правда чуток код подшаманил.
Код:

TrueLow  = IIf(Ref( Close,-1) < Low,(Ref( Close,-1)), Low);
TrueHigh = IIf(Ref (Close,-1) > High,(Ref( Close,-1)), High);
Xt =Nz(((Close - TrueLow)-(TrueHigh - Close))/(TrueHigh - TrueLow));
TV = Nz(Sum(Volume, 11));
TVA = Sum( Volume * Xt, 11);
VA = (TVA / TV) * 100;
//Plot(VA,"VA",4,1);
//Plot(0,"0",4,1);
Buy = VA > Ref(VA,-1)AND VA > 0;
Sell = VA < Ref(VA,-1) AND VA < 0;
Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell, Buy);

DayH = TimeFrameGetPrice("H", inDaily, -1);  // yesterdays high
DayL = TimeFrameGetPrice("L", inDaily, -1);  //            low
DayC = TimeFrameGetPrice("C", inDaily, -1);  //            close

PP = (DayL + DayH + DayC)/3 ;
R1 = (2 * PP) - DayL;
S1 = (2 * PP)  - DayH;
R2 = (PP - S1) + R1;
S2 = PP - (R1 - S1);
R3 = DayH + 2*(PP - DayL) ;
S3 = DayL - 2*(DayH - PP) ;
Plot(C, "", colorBlack, styleCandle);
Plot(S2, "", colorRed);
PlotShapes(Buy*shapeUpArrow,colorGreen,0,Close,-20);
PlotShapes(Sell*shapeDownArrow,colorRed,0,Close,-20);

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



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

СообщениеДобавлено: Пн Янв 12, 2009 12:46 pm Ответить с цитатой Вернуться к началу

Олег, ответил в личку, посмотри пожалуйста.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 1:35 pm Ответить с цитатой Вернуться к началу

Напишу. Может кому пригодится.
Как ни странно был косяк с функцией Sum()
Строка
Код:
TVA = Sum( Volume * Xt, 11);

Нифига не работала. Пробую понять в чем дело.

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


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

СообщениеДобавлено: Пн Янв 12, 2009 1:57 pm Ответить с цитатой Вернуться к началу

А дело было именно в том, что суммировались значения которые иногда становились недействительными потому, что не совсем правильно стояли скобки ф-ции Nz().

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



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

СообщениеДобавлено: Пн Янв 12, 2009 2:06 pm Ответить с цитатой Вернуться к началу

Спасибо, а то я уж и не знал, что еще делать.
Как только код не переписывал, извращался.
Буду дальше скрипты переписывать...
Еще раз большое спасибо!
Посмотреть профиль Отправить личное сообщение
Disperados



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

СообщениеДобавлено: Пн Янв 12, 2009 2:41 pm Ответить с цитатой Вернуться к началу

В последнем варианте только индюк отрицательное значение не принимает.И шорты не работают, потому как VA<0.
Я воспользовался первым вариантом.
Сравнил с данными Мульта, значение разные, но кривая получается примерно та-же.
Еще раз спасибо!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 12, 2009 2:49 pm Ответить с цитатой Вернуться к началу

Это потому, что скобки опять не правильно стояли. Весь числитель надо в скобки. Так.
Код:

Xt  = Nz(((Close - TrueLow)-(TrueHigh - Close))/(TrueHigh - TrueLow));

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen