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



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

СообщениеДобавлено: Сб Июн 27, 2015 12:42 am Ответить с цитатой Вернуться к началу

000 писал(а):
Да хрен его знает. Трудно так по кускам кода...
Ну допиши выше
SAR1 = SAR2 = 0;

Да затупил сам. Неверно писал название переменной в строке присвоения значения и в самой формуле. Удалил вопрос.
Другой вопрос. Как написать, чтобы сделка закрывалась в 18-45 по закрытию этой свечки в 18-45 ?
Вот есть у меня условие на открытие, которое через AND добавляется к условию входа:
Код:

TradeTime=TimeNow()>=100000 and TimeNow()<=184500

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


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

СообщениеДобавлено: Сб Июн 27, 2015 9:07 am Ответить с цитатой Вернуться к началу

1. Нет такой функции TimeNow()
2. Если нужен выход в 18:45 то так и пиши
Код:
Sell = ... OR TimeNum() == 184500;

или даже надежнее ... OR TimeNum() > 184400;
Если входа не было то выход Ами проигнорирует автоматически.

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



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

СообщениеДобавлено: Вс Июн 28, 2015 9:49 pm Ответить с цитатой Вернуться к началу

Вот еще засада.
Код:

Sell = H>=exit_long AND Ref(Parab<C,-1) OR Cross(Parab,O)  OR TimeNum()==184400;

Выходим из лонга, когда цена выше параболика и достигла определенного уровня. Если же уровень не достигнут, то выходим из лонга на обратном перевороте параболика. Далее записываем цену выхода:
Код:

SellPrice=exit_long OR C;

Если уровень exit_long достигнут, то записывает цену выхода корректно. Если не достигнут, то пишет почему-то лоу свечи, которая после перескока параболика. А мне надо, чтобы close записался. Если пишу так
Код:

SellPrice=exit_long;

тогда пишет хай свечи после параболика. Никак не хочет close писать. Что не так ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Июн 28, 2015 11:10 pm Ответить с цитатой Вернуться к началу

А уровень exit_long у тебя точно внутри свечки?
См мой ответ 18 июня.

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



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

СообщениеДобавлено: Пн Июн 29, 2015 1:00 am Ответить с цитатой Вернуться к началу

000 писал(а):
А уровень exit_long у тебя точно внутри свечки?
См мой ответ 18 июня.

Если ты про Max Min в присвоении SellPrice, то это не подходит. exit_long - это хай первой свечи после перескока параболика. Как только хай любой следующей свечи выше хая первой свечки, то продаем лонг. И продаем его в тесте именно по хаю первой свечки. В квике я выставляю лимитированную заявку после формирования первой свечи точно по уровню хая. Если я напишу так
Код:

SellPrice=Max(exit_long,C);
или
SellPrice=Min(exit_long,C);

Тогда уровень выхода будет плавать. А мне надо, чтобы в момент:
Код:

Sell = Cross(H,exit_long) AND Ref(Parab<C,-1);

запоминалась именно цена exit_price, т.е. именно цена хая первой свечи.
Или я чего не догоняю ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Июн 29, 2015 5:10 am Ответить с цитатой Вернуться к началу

Меня некоторое время тут не будет. Вернусь - продлжим....

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



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

СообщениеДобавлено: Пн Июн 29, 2015 10:32 am Ответить с цитатой Вернуться к началу

Попробовал вот так упростить выход (без всяких уровней):
Код:

Sell =Ref(H,-1)>Ref(H,-2) AND Ref(Parab<C,-2) OR Cross(Parab,O)  OR TimeNum()>=184400;
SellPrice=O OR Min(C,Parab);

Т.е. если хай предыдущей свечи выше хая пред-предыдущей, то выходим на открытии текущей, либо на обратном перескоке параболика. Опять нифига. По первому условию (по хаям) выдает вместо открытия текущей ее лоу. А при перескоке параболика выдает лоу свечи, которая стоит перед параболиком. При чему тут лоу вообще ? Откуда он его берет ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Июл 02, 2015 10:55 pm Ответить с цитатой Вернуться к началу

И как это понимать?
Код:
SellPrice=O OR Min(C,Parab);


То, что тестер выдает в качестве цены сделки лой однозначно говорит только об одном. Цена заявленная в коде ниже лоя свечи на которой осуществляется выход. тестер Ами автоматически сдвигает цену до цены которая реально была на рынке. Поэтому лой.

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



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

СообщениеДобавлено: Пт Июл 03, 2015 12:34 pm Ответить с цитатой Вернуться к началу

000 писал(а):
И как это понимать?
Код:
SellPrice=O OR Min(C,Parab);


То, что тестер выдает в качестве цены сделки лой однозначно говорит только об одном. Цена заявленная в коде ниже лоя свечи на которой осуществляется выход. тестер Ами автоматически сдвигает цену до цены которая реально была на рынке. Поэтому лой.


Ну как понимать. Если предыдущий хай выше пред предыдущего, тогда выходим на открытии текущей свечи. При этом цена выше параболика. За это отвечает
Код:

Sell=O.

А вот если находясь выше параболика цена новый хай не показала (т.е. только первая свечка после параболика была самой высокой), тогда закрываемся сразу после перескока параболика. Т.е. когда цена оказалась уже ниже параболика, тогда выходим по закрытию текущей. За это отвечает
Код:

Sell=Min(C,Parab);

Неправильно мыслю ? Могу график загрузить с пояснением по свечам.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Июл 03, 2015 3:35 pm Ответить с цитатой Вернуться к началу

Ну так и пиши что SellPrice = если .... то Open в противном случае Min(C,Parab);

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



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

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

000 писал(а):
Ну так и пиши что SellPrice = если .... то Open в противном случае Min(C,Parab);

Это условный цикл надо писать через if или через IIf ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Июл 03, 2015 8:19 pm Ответить с цитатой Вернуться к началу

Это не цикл. Это работа с массивом цен. Надо IIf
Код:
SellPrice = IIf( УСЛОВИЕ,Open,Min(C,Parab));

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



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

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

Спасибо. Понял. Едем дальше ) Как описать вход по такому условию. Есть два вычисляемых уровня-Уровень1 и Уровень2. Если разница между параболиком в момент перескока и Уровнем1 менее 200 пунктов, тогда входим по уровню 2. Написал так, но считает входы неправильно:
Код:

...
SAR = ValueWhen( Cross(Parab, O), Ref(Parab, -1));
BuyLevel_1=формула расчета уровня;
BuyLevel_2=формула расчета уровня;
Buy =Cross(BuyLevel_1,L) OR Cross(BuyLevel_2,L) AND  Ref(Parab > C, -1) AND TradeTime;
BuyPrice = IIf(SAR-BuyLevel_1<200,BuyLevel_2,BuyLevel_1);
...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Июл 19, 2015 12:19 am Ответить с цитатой Вернуться к началу

Непонятно описал.

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



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

СообщениеДобавлено: Вс Июл 19, 2015 12:59 am Ответить с цитатой Вернуться к началу

000 писал(а):
Непонятно описал.

Я скорее неправильно написал сам код.
Дано - SAR (фиксируем его один раз в момент перескока параболика), Уровень1, Уровень2. Как описать условие для случая:
Если (SAR-Уровень1)<=200, тогда входим по Уровень2. Иначе входим по Уровню1.
Скриншот графика сейчас не могу сделать.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen