Автор |
Сообщение |
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Код: |
//////////// Убираем лишние сигналы /////////////////////////////
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
|
Вот это
Код: |
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
Откуда: Екатеринбург
|
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
|
Цитата: |
Согласен, что код более изящен, но он делает покупку по цене Open ,бара на котором сформировался сигнал, т.е. как бы "заранее" |
Да, действительно. Я был не внимателен.
Код: |
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
Откуда: от "Верблюда"
|
Никто не подсказал, меня заинтересовала отрисовка, пришлось чуть поизучать, я не понимаю зачем 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
Откуда: от "Верблюда"
|
Господа подскажите пож-ста почему в первой строке нет отступа между интервалам и именем. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вставь его тудуа.
Напимер так
Код: |
...Name() + " " + StrFormat("{{INTERVAL}}")...
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Вставь его тудуа.
Напимер так
Код: |
...Name() + " " + StrFormat("{{INTERVAL}}")...
|
|
Спасибо |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Romoti
Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург
|
Уважемый 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
Откуда: от "Верблюда"
|
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 бутылки) :
Код: |
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
Откуда: Екатеринбург
|
Добавил в старый код немного красивостей,
- Меняется цвет баров в зависимости от направления сделки,
чтобы отрисовывалось красиво надо установить в 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. |
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|