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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Код:
//////////// Убираем лишние сигналы /////////////////////////////
Buy=ExRem(Buy,Sell);               
Sell=ExRem(Sell,Buy);               
Short=ExRem(Short,Cover);           
Cover=ExRem(Cover,Short); 
Cond1 = BarsSince(Buy);
Cond2 = BarsSince(Short);
//////////////////титры///////////////////////////////////////
Title = Name() + Interval()/60 + " мин.   " + Date()+"\n\n"+
"Buy баров :"+Cond1+"\n"+
"Цена  Buy :"+BuyPrice+"\n"+


///////////// Рисуем всякое ///////////////////////////////////

Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("cтиль =", defaultval = styleCandle, mask = maskPrice ) );
Plot(Top, "Top", colorRed);
Plot(Bot, "Bot", colorRed);
Plot(Mid, "Mid", colorRed);

Plot(Buy OR Sell OR Short OR Cover, "", colorLavender, styleHistogram|styleOwnScale);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L);                   //стрелка на покупку
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H+H*0.005);          //стрелка назакрытие покупки
PlotShapes(IIf(Short, shapeHollowDownArrow,shapeNone),colorRed,0,H);          //стрелка на продажу
PlotShapes(IIf(Cover,shapeHollowUpArrow,shapeNone),colorGreen,0,L-L*0.005);   //стрелка на закрытие продажи


Ну и по анологии, только вот, не знаю как переписать (т.е. я с таким не сталкивался, но логика понятна будет), нужно заменить оператор, на нужный, но принцип что я хотел сказать надеюсь понятен.

Код:
Title = Name() + Interval()/60 + " мин.   " + Date()+"\n\n"+
IIf(Cond1<Cond2,"Buy баров :" +Cond1+"2\n","Short баров :" +Cond2+"2\n")+
IIf(Cond1<Cond2,"Buy цена :" +BuyPrice+"2\n","Short цена :" +ShortPrice+"2\n")+


Надеюсь кто нибудь подскажет.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

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

Вот это
Код:

BuyStart = BarsSince(Buy);                   // определяет сколько баров назад произошло событие покупки
FlipBuy = Ref(Flip(Buy, Sell), -1);          // определяем непрерывный BUY-массив тригером
SinceBuy = IIf(FlipBuy, BuyStart, 0);        // если есть BUY-массив отображаем бар начала массива
BuyStart = IIf(FlipBuy, Ref(Open , - SinceBuy +1) ,0 );    // присваиваем BuyStart значение Open бара покупки

Я бы написал так
Код:

FlipBuy = Ref(Flip(Buy, Sell), -1);
BuyStart = IIf(FlipBuy, ValueWhen(Buy, Open), 0);

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



Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург

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

000 писал(а):
Вот это
Код:

BuyStart = BarsSince(Buy);                   // определяет сколько баров назад произошло событие покупки
FlipBuy = Ref(Flip(Buy, Sell), -1);          // определяем непрерывный BUY-массив тригером
SinceBuy = IIf(FlipBuy, BuyStart, 0);        // если есть BUY-массив отображаем бар начала массива
BuyStart = IIf(FlipBuy, Ref(Open , - SinceBuy +1) ,0 );    // присваиваем BuyStart значение Open бара покупки

Я бы написал так
Код:

FlipBuy = Ref(Flip(Buy, Sell), -1);
BuyStart = IIf(FlipBuy, ValueWhen(Buy, Open), 0);


Согласен, что код более изящен, но он делает покупку по цене Open ,бара на котором сформировался сигнал, т.е. как бы "заранее", а я бы хотел купить по Open следующего за сигналом бара (прогнал в тестере).

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


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

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

Цитата:
Согласен, что код более изящен, но он делает покупку по цене Open ,бара на котором сформировался сигнал, т.е. как бы "заранее"

Да, действительно. Я был не внимателен. Smile

Код:

FlipBuy = Ref(Flip(Buy, Sell), -1);
BuyStart = IIf(FlipBuy, ValueWhen(Buy, Ref(Open, 1)), 0);

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Никто не подсказал, меня заинтересовала отрисовка, пришлось чуть поизучать, я не понимаю зачем Cover и Sell нужно отрисовывать(можно отрисовывать, смотрим если в позе отображаем значение соответствующей линии она и будет показывать предпологаемую цену выхода из позы, ну естественно что писать будем не название линии, а"Sell цена :"), поэтому и нестал, если надо можно по анолигии сделать, мне было интересно в какой позе (если 0 баров и нет цены значит мы не в позе) и сколь же баров прошло, H,L,O,C не так интересны, но оставил и еще чуток поработал над выходом, но у меня почемуто слипается верхняя строка куда девается промежуток понять не могу:
Код:


bars=Optimize("bars",10,5,60,1);
bars1=Optimize("bars1",18,5,30,1);


Top = Ref(HHV(H, bars), -1); 
Bot = Ref(LLV(L, bars), -1);   
Top1 = Ref(HHV(H, bars1), -1);     
Bot1 = Ref(LLV(L, bars1), -1);

Buy = Cross(H, Top);
Sell = Cross(Bot1 , L);
Short = Cross(Bot, L);
Cover = Cross(H, Top1);

BuyPrice = IIf(O>=Top,O,Top);
SellPrice = IIf(O<=Bot1,O,Bot1);
ShortPrice = IIf(O<=Bot,O,Bot);
CoverPrice = IIf(O>=Top1,O,Top1);



//////////// Убираем лишние сигналы /////////////////////////////
Buy=ExRem(Buy,Sell);               
Sell=ExRem(Sell,Buy);               
Short=ExRem(Short,Cover);           
Cover=ExRem(Cover,Short); 


Equity(1);
count1 = BarsSince(Buy);
count2 = BarsSince(Short);
FlipBuy = Flip(Buy, Sell);
FlipShort = Flip(Short, Cover);
BuyStart = IIf(FlipBuy, BuyPrice ,0 );
ShortStart = IIf(FlipShort, ShortPrice ,0 );
Buyx = IIf(FlipBuy, count1 ,0 );
Shortx = IIf(FlipShort, count2 ,0 );

///////////// Рисуем всякое ///////////////////////////////////

///////////// Рисуем всякое ///////////////////////////////////
SetChartOptions(0,chartShowArrows|chartShowDates);

Title = Name() + StrFormat("{{INTERVAL}}") + Date()+"\n\n"+
"Buy баров :" +Buyx+"\n"+
"Buy цена :" +BuyStart+"\n"+
"Short баров :" +Shortx+"\n"+
"Short цена :" +ShortStart+"\n"+
"High:  "+NumToStr(H,1.3)+"\n"+
"Low:   "+NumToStr(L,1.3)+"\n"+
"Open:  "+NumToStr(O,1.3)+"\n"+
"Close: "+NumToStr(C,1.3);


Plot(C,"Price",colorBlack,styleCandle); 
 
Plot(Top, "Top", colorRed);
Plot(Bot, "Bot", colorRed);
Plot(Top1, "Top1", colorBlue);
Plot(Bot1, "Bot1", colorBlue);

PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15);

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Господа подскажите пож-ста почему в первой строке нет отступа между интервалам и именем.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


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

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

Вставь его тудуа.
Напимер так
Код:

...Name() + "   " + StrFormat("{{INTERVAL}}")...

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

000 писал(а):
Вставь его тудуа.
Напимер так
Код:

...Name() + "   " + StrFormat("{{INTERVAL}}")...


Спасибо

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Romoti



Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург

СообщениеДобавлено: Пн Июн 09, 2008 5:25 pm Ответить с цитатой Вернуться к началу

Уважемый commenced, только сейчас заметил, что титры действительно написал криво, у Вас более правильно.

Обратите внимание, в Вашем коде:

count1 = BarsSince(Buy);
count2 = BarsSince(Short);
FlipBuy = Flip(Buy, Sell);
FlipShort = Flip(Short, Cover);
BuyStart = IIf(FlipBuy, BuyPrice ,0 );
ShortStart = IIf(FlipShort, ShortPrice ,0 );
Buyx = IIf(FlipBuy, count1 ,0 );
Shortx = IIf(FlipShort, count2 ,0 );

что то не так, потомучто сигналы которые он выдает прыгают ! Погоняйте по графику, сразу заметно.
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Июн 09, 2008 5:42 pm Ответить с цитатой Вернуться к началу

Romoti писал(а):
Уважемый commenced, только сейчас заметил, что титры действительно написал криво, у Вас более правильно.

Обратите внимание, в Вашем коде:

count1 = BarsSince(Buy);
count2 = BarsSince(Short);
FlipBuy = Flip(Buy, Sell);
FlipShort = Flip(Short, Cover);
BuyStart = IIf(FlipBuy, BuyPrice ,0 );
ShortStart = IIf(FlipShort, ShortPrice ,0 );
Buyx = IIf(FlipBuy, count1 ,0 );
Shortx = IIf(FlipShort, count2 ,0 );

что то не так, потомучто сигналы которые он выдает прыгают ! Погоняйте по графику, сразу заметно.


Не досмотрел, в дальнейшем на ты пож-ста, я такой же лузер как и остальные, к Олегу не относиться, он наше все и надежда и поддержка и т.д. (надеюсь прогиб засчитан как 3 бутылки) Smile:
Код:
Equity(1);
count1 = BarsSince(Buy);
count2 = BarsSince(Short);
FlipBuy = Flip(Buy, Sell);
FlipShort = Flip(Short, Cover);
BuyStart = IIf(FlipBuy, Ref(BuyPrice,-count1),0 );
ShortStart = IIf(FlipShort, Ref(ShortPrice,-count2) ,0 );
Buyx = IIf(FlipBuy, count1 ,0 );
Shortx = IIf(FlipShort, count2 ,0 );

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Romoti



Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург

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

Добавил в старый код немного красивостей,
- Меняется цвет баров в зависимости от направления сделки,
чтобы отрисовывалось красиво надо установить в AMI в настройках:
Preferences => Candlesticks => из выпадающего списка выбрать самое нижнее значение, чтобы бары заливались цветом контура.
- Линией отрисовывается уровень входа и выхода из сделки.
- Под сделкой рисуется фон:
Для Buy - если закрытие выше покупки - зеленый, ниже - серый;
для Short - если закрытие ниже покупки - розовый, выше - серый.
Тока если на последнем баре сделка не закрыта, все равно отрисовывает уровень закрытия, впрочем я это дела чтобы было проще анализировать прошедшие сделки.

Код:
SetTradeDelays(1, 1, 1, 1); //сделки по Open следующей свечи
bars=Optimize("bars",14,5,100,1);

Top = Ref(HHV(H, bars), -1);     
Bot = Ref(LLV(L, bars), -1);     
Mid = (Top+Bot)/2;

BuyPrice=Open;
SellPrice=Open;
ShortPrice=Open;
CoverPrice=Open;         

Buy = Cross(C, Top);    // вход при закрытии выше верхнего прайс-ченала, выход при закрытие ниже середины  канала, на продажу наоборот.
Sell = Cross(Mid, C); 
Short = Cross(Bot, C);
Cover = Cross(C, Mid);

Equity(1); // вычислит и отфильтрует остановки
//BuyBar  = IIf(Ref(Buy, -1),  BarIndex(), Null); //определяем номер бара если есть сигнал Buy

FlipBuy  =  Ref(Flip(Buy, Sell), -1);                             // определяем непрерывный BUY-массив тригером
BuyStart =  IIf(FlipBuy, ValueWhen(Buy, Ref(Open, 1)), Null);     // присваиваем переменной значение: Open бара покупки
BuyStop  =  IIf(Sell, Ref(Open, 1), IIf(FlipBuy, ValueWhen(Sell,Ref(Open, 1),-0), Null));  // присваиваем переменной значение: Open бара закрытия покупки
SinceBuy =  IIf(FlipBuy, BarsSince(Buy) , 0);                     // определяет сколько баров назад ,был Buy-сигнал

FlipShort = Ref(Flip(Short, Cover), -1);                          // определяем непрерывный Short-массив тригером
ShortStart= IIf(FlipShort,ValueWhen(Short, Ref(Open, 1)), Null);  // присваиваем переменной значение: Open бара продажи
ShortStop = IIf(Cover, Ref(Open, 1), IIf(FlipShort, ValueWhen(Cover,Ref(Open, 1),-0), Null));// присваиваем переменной значение: Open бара закрытия продажи
SinceShort= IIf(FlipShort,BarsSince(Short) , 0);                  // определяет сколько баров назад ,был Short-сигнал

Plot(BuyStart, "Buy",    colorBlue,  styleDots); // рисует горизонтальную линию на уровне  Buy
Plot(BuyStop,  "Sell",   colorCustom12,styleDots); // рисует горизонтальную линию на уровне  Sell
Plot(ShortStart, "Short",colorRed,   styleDots); // рисует горизонтальную линию на уровне  Short
Plot(ShortStop, "Cover", colorLightOrange,styleDots); // рисует горизонтальную линию на уровне  Cover

ColorBar =IIf (FlipBuy  ,colorDarkBlue, IIf(FlipShort,colorDarkRed,colorGrey40)); // задает цвет,баров в сделке.


// определяем цвет и уровни отрисовки фона при Buy-сделке
ColorBuy = IIf (FlipBuy,IIf(Close >= BuyStart, colorPaleGreen, IIf(Close <BuyStart>= BuyStart, HHV(H, SinceBuy),BuyStart );
BotBuy = IIf (Close >= BuyStart, BuyStart ,LLV(L, SinceBuy) );

// определяем цвет и уровни отрисовки фона при Short-сделке
ColorShort = IIf (FlipShort,IIf(Close >= ShortStart, colorLightGrey, IIf(Close <ShortStart>= ShortStart, HHV(H, SinceShort),ShortStart );
BotShort = IIf (Close >= ShortStart, ShortStart ,LLV(L, SinceShort) );



//////////////////титры///////////////////////////////////////
Title = "Система на пробой ПРАЙС-ченал, вход на OPEN следующего бара + уровни входов/выходов  \n"+
Name() + " " + Interval()/60 + " мин.   " + Date()+"\n\n"+
"Buy баров   :"+SinceBuy+"\n"+
"Buy цена     :"+BuyStart+"\n"+

"Short баров:"+SinceShort+"\n"+
"Short цена  :"+ShortStart+"\n\n"+

"High:   "+H+"\n"+
"Low:    "+L+"\n"+
"Open:  "+O+"\n"+
"Close: "+C;

///////////// Рисуем всякое ///////////////////////////////////

Plot( Close, "Price", ColorBar, 64 );
Plot(Top, "Top", colorRed, styleStaircase);
Plot(Bot, "Bot", colorRed, styleStaircase);
Plot(Mid, "Mid", colorBlue, styleStaircase);

Plot(Buy OR Sell OR Short OR Cover, "", colorLavender, styleHistogram|styleOwnScale);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-12);         
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-28);       
PlotShapes(IIf(Short, shapeHollowDownArrow,shapeNone),colorRed,0,H,-12);
PlotShapes(IIf(Cover,shapeHollowUpArrow,shapeNone),colorGreen,0,L,-28);
PlotOHLC(BotBuy, BotBuy,TopBuy,TopBuy, "", ColorBuy, styleCloud +styleStaircase);           // разрисовывает фон под Buy-сделкой
PlotOHLC(BotShort, BotShort,TopShort,TopShort, "", ColorShort, styleCloud +styleStaircase); // разрисовывает фон под Short-сделкой

_________________
Romoti.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen