Здравствуйте. Пытаюсь программировать в тосе. Понимаю, что в чем-то проявил криворукость, но вот в чем ни как не пойму. Помогите понять почему не работает код. Смысл кода в том чтобы отрисовывать на графике индикатор отражающий сумму low+atr. Если CCI выше нуля тогда значение индикатора может только увеличиваться. Если low+atr менише предыдушего значения индикатора тогда текущее значение должно быть равно предыдущему. Иными словами индикатор либо растет либо ползет в бок. При отрицательном CCI всё с точностью до наоборот. input CCIPeriod = 30; input ATRPeriod = 5; plot UPTrend; def UPTrendTrue = CCI(CCIPeriod) > 0; def UPTrendTek = Low - AverageTrueRange(ATRPeriod); if UPTrendTrue then { UPTrend = Low - AverageTrueRange(ATRPeriod); if UPTrend[1]
попробуем разобраться.....
Июн 20 2012, 22:41посмотрите вот этоhttp://www.rpg-club.com/x1000m?h=content.scre.../21.06.png
Июн 21 2012, 00:39в данном случае отображаются максимумы low+atr
в период когда CCI положительный, рассчитываемый индикатор не должен снижаться, он либо равен high+atr либо равен предыдущему значению себя же
Июн 21 2012, 01:39если cci>0 тогда
uptrend=high+atr
если uptrend[1]<uptrend тогда
uptrend=uptrend[1]
конецесли
конецесли
прошу прощения если я невнятно объясняю
growex, Вы похоже хорошо в тосе разбираетесь, если Вас не затруднит ответьте пожалуйста на пару вопросов. Почему он забраковал мой код? Правильно ли я понимаю, переменной можно только один раз присвоить какое либо значение? При попытке повторно присвоить ей какое-либо значение выдается ошибка.
Июн 21 2012, 01:50Вы берете предыдущее значение, которое так же как и текущее постоянно изменяется....
Июн 21 2012, 09:26Насколько я вас понял, вы хотите сохранить максимальное значение, то есть должна получится ступенчатая кривая состоящая из максимумов high+atr которая отображается в момент когда CCI > 0......насколько я понял, после пересечения cci нуля вниз значение high+atr должно обнулиться и в следующем цикле когда cci>0 все повторяется сначала.....я правильно понял?
Точно! Именно так. Только при перевороте CCI с "+" на "-" индикатор не обнуляется а просто начитает рассчитываться как low-atr. Но суть Вы абсолютно чётко уловили "должна получится ступенчатая кривая"http://www.rpg-club.com/x1000m?h=tradelikeapr...er-system/
Июн 21 2012, 10:11Если говорить глобально о задаче то я пытаюсь переделать под тос, систему предназначенную для метатрейдера. Мне кажется она довольно любопытная.
вот с этого и надо начинать.....теперь понятно что нужно делать...
Июн 21 2012, 10:44хотелось самостоятельно сделать, уперся правда в конструкцию if then else. так и не понимаю почему в моем отрезке кода выдается ошибка?
Июн 21 2012, 10:54обязательно разберитесь с рекурсией и циклами ...они вам понадобятся при написании этого индикатора.
Июн 21 2012, 11:11Спасибо за ссылку) Этот ресурс я тоже изучал.
Июн 21 2012, 11:21правда в нем я не смог найти ответа почему такой отрезок не будет работать
plot aaa = 1;
plot bbb = 2;
if bbb == 2
{aaa = bbb;}
else
{bbb = 2;}
хотя возможно всему виной языковой порог)
также внутри If доступны стандартные мат.операции
Июн 21 2012, 12:45def aaa = if bbb==2 then bbb+2 else 1+1
если же вы имеете в виду вот такой вид
Июн 21 2012, 12:52plot <plot_name>;
if <condition> [then] {
<plot_name> = <expression1>;
} else {
<plot_name> = <expression2>;
}
то здесь также изменяется только одна основная переменная
да именно такая конструкция нужна,
Июн 21 2012, 12:57только при этом перед условной конструкцией требуется присвоить основной переменной некое значение
а позже его изменить в зависимости от выполненного условия
если уж совсем предметно говорить то вот этот кусок меня ставит в тупик.
Июн 21 2012, 13:08казалось бы, что может быть проще? Аннет.
input CCIPeriod = 30;
input ATRPeriod = 5;
plot UPTrend;
def UPTrendTrue = CCI(CCIPeriod) >= 0;
if UPTrendTrue then
{
UPTrend = Low - AverageTrueRange(ATRPeriod);
if UPTrend[1] < UPTrend Then
{
UPTrend = UPTrend[1];
}
}
Сначала нужно определиться с Uptrend......если cci >= 0 то ей присваивается Low - Atr.....где else?
Июн 21 2012, 13:43в том то все и дело, else мне не нужен. Согласно логике моего условия else не требуется.
Июн 21 2012, 14:02а если так?
Июн 21 2012, 14:10input CCIPeriod = 30;
input ATRPeriod = 5;
def UPTrend = CCI(CCIPeriod) >= 0;
plot Trend;
if UPTrend then
{Trend = Low - AverageTrueRange(ATRPeriod);} else {Trend = High + AverageTrueRange(ATRPeriod);};
обычно если else не требуется то записываем пустое значение типа .........else Double.Nan
с максимумами будем потом разбираться, давайте сначала с определением тренда закончим
Июн 21 2012, 14:15так подходит,
Июн 21 2012, 14:20теперь при аптренде нужно не давать снижаться
а при даунтренде не давать подниматься
может попытаться использовать switch case?
Июн 21 2012, 14:23так как то?
http://www.rpg-club.com/x1000m?h=content.scre...condup.png
Июн 21 2012, 15:26Да, очень похоже не правду
Июн 21 2012, 15:28Кодом поделитесь?)
Июн 21 2012, 15:30конечно только это не то что нужно.....
Июн 21 2012, 15:41здесь надо правильно задать условия иначе он лажает крупно
простая условная рекурсия будет выглядеть примерно как
rec conddn = if Trend > high and trend[1] > trend then matrend, conddn[1]) else conddn[1];
plot condline = conddn;
max (trend
Июн 21 2012, 15:42лучше так: if !Uptrend
Июн 21 2012, 15:47ай.....опять неправильно.....там не максимум должен быть
Июн 21 2012, 15:51.....сейчас некогда уже....поковыряйте пока его
отлично! похоже это то что нужно) СПАСИБО!
Июн 21 2012, 15:56Вам спасибо.
Июн 21 2012, 16:15))))) за что?
Июн 21 2012, 16:20Спасибо Вам ОГРОМНОЕ! Вы мне реально помогли лучше понимать возможности тоса!
http://www.rpg-club.com/x1000m?h=hamaha.net/i...d633c7.png
Июн 21 2012, 19:52Вот такой получился код
input CCIPeriod = 30;
input ATRPeriod = 5;
def atr = AverageTrueRange(ATRPeriod);
def dir = if CCI(CCIPeriod) > 0
then Low - atr
else high + atr;
rec trend = if CCI(CCIPeriod) > 0
then madir,trend[1])
else min(dir,trend[1]);
plot TekTrend=trend;
def col = if CCI(CCIPeriod) > 0 then 6 else 5;
TekTrend.AssignValueColor(getColor(col));
А вот так он выглядит
Довольно неплохо выглядит......
Июн 21 2012, 21:58вверху только дописать
Июн 21 2012, 22:09declare upper;
чтобы он по умолчанию на чарт вставал.....
вы на реале торгуете?
Июн 21 2012, 22:53Теперь да, также всегда дублирую сделки на демо... иногда акции но в основном опционы....правда по опционам мне доступны только лонги, так как чтобы торговать спредами нерезам нужен достаточно мощный депо.
Июн 22 2012, 12:55ТОС конечно лучший в плане анализа, но также активно пользуюсь софтом от Hoadley.
Есть своя разработанная стратегия на основе так же собственных тех.индикаторов...как правило позиции открываются не более чем на три дня....относительно возможностей трейдинговой системы....как видите все довольно гибко, большим плюсом является встроенный язык, возможность написания собственных индикаторов, запросов, сканер по кастом кьюрис, да еще и приспособленность именно к опционному рынку...все это делает тос для меня лично лучшим вариантом даже несмотря на довольно высокие сопутствующие расходы.
Что касается рынка то здесь моя позиция простая - не жадничать...
Опционы для меня пока темный лес) знаю о них крайне мало да и только поверхностно. Пытаюсь пока на форексе определиться как мне торговать, интрадей или на дневках. Пока мне больше по душе дневки. На них, как мне показалось, теханализ четче срабатывает. А Вы на реле давно торгуете?
Июн 22 2012, 14:00с 2009 на ммвб, тогда же начал изучать опционы но быстро понял что американская теория и практика ценообразования на нашем рынке просто не работают, нет масштаба, толком нет инструментов...... короче вот это был действительно темный лес. А тут рынок, все вписывается в определенные модели а если не вписывается то здесь и появляется возможность заработать.
Июн 22 2012, 14:38Форекс.....хех.....можно начать конечно и с форекса , но денег на это тратить точно не нужно. Имхо информативнее и полезнее для развития в этой области начать на российских площадках торговать акциями....ну или сразу на американских если есть финансовая возможность.....вот здесь насколько мне известно люди пользуются услугами одного из брокеров...хотя я особо не вникал в суть......
Спросите у местных, я вам гарантирую что опыта получите больше чем на этом как его....."форексе"
я очень хочу начать работать на америке, средства правда не позволяют открыть приличный счет. Исходя из Вашего личного опыта, как думаете какой должен быть минимальный депозит, что бы можно было начать учиться(не зарабатывать на жизнь) торговле с соблюдение манименеджмента?
Июн 22 2012, 16:08для реального счета $2000....как у наших брокеров так и у американских.......
Июн 22 2012, 16:21Еще раз благодарю за помощь и за ответы)
Июн 22 2012, 17:00