Простые задачки для трейдеров

Архив курьезных публикаций на форумах клуба
Аватара
elite
ГУРУ
Сообщения: 2503
Зарегистрирован: 21 сен 2004, 11:35
Откуда: Москва
Контактная информация:

Непрочитанное сообщение elite » 12 янв 2006, 20:51

Я не буду больше в этом топике отвечать на вопросы, не касающихся задачек

Аватара
Kobra007
Эксперт
Сообщения: 1987
Зарегистрирован: 22 июн 2002, 22:57

Непрочитанное сообщение Kobra007 » 13 янв 2006, 01:16

x4x писал(а): Все недосуг было, игрался, понимаешь, на случайных движениях евры, ;-) третий раз с начала года. :D Неплохо, скажем прямо... По элитным меркам - годовой план сделан, можна курить бамбук... :D :D :D
Вам то хорошо, вон у вас какой протектор и повышенная проходимость, сказал безнадежно больной из небезызвестного к/ф. :)

Аватара
elite
ГУРУ
Сообщения: 2503
Зарегистрирован: 21 сен 2004, 11:35
Откуда: Москва
Контактная информация:

Непрочитанное сообщение elite » 13 янв 2006, 08:23

Зафлудили тему и в итоге перенесли в кунскамеру.

Сейчас пойду новую тему создавать по задачкам - буду жаловаться если будете флудить там, а не здесь.

Аватара
elite
ГУРУ
Сообщения: 2503
Зарегистрирован: 21 сен 2004, 11:35
Откуда: Москва
Контактная информация:

Re: elite, Простые задачки для трейдеров

Непрочитанное сообщение elite » 14 янв 2006, 19:05

Ispitatel писал(а):
Олег писал(а):Это не для трейдеров задачки.
Олег, а можно из Вашего сундучка пару задачек или головоломок.
Если конечно есть время и желание.
Присоединяюсь к просьбе.

Аватара пользователя
Олег
Lord of the Pits™
Сообщения: 2601
Зарегистрирован: 22 фев 2002, 14:14
Откуда: Москва
Контактная информация:

Непрочитанное сообщение Олег » 22 мар 2007, 16:58

Избавляю от денег. Дорого.

Аватара
kei
Новичок
Сообщения: 16
Зарегистрирован: 28 окт 2007, 10:04

Непрочитанное сообщение kei » 30 окт 2007, 21:21

А у мну тоже задача, какова вероятность того, что тратя время на решение н задач, чтобы получить каких=то 200 виртуальных баксов я обнулю свой счет? Тому, кто угодает отдам весь вирутальный счет :mrgreen:

Аватара
Bazil
Новичок
Сообщения: 19
Зарегистрирован: 27 ноя 2008, 19:57

Непрочитанное сообщение Bazil » 07 июн 2009, 21:52

1. Курс инструмента задается следующим образом.
В начальный момент цена равна 1.0000
В каждый новый тик кидается монетка, если орел p = p*1.0001, если решка p = p/1.0001
Спред равен 2 пипсам. Трейдер обладает суммой в 100000 долларов. Максимальное плечо 1:100
Доказать, что в данной ситуации для трейдера не существует прибыльной стратегии.
Почему же не существует прибыльной стратегии? Существует, смотрите сами:
Описанная система является 100% стохастической. Таким образом система будет постоянно находится в узком коридоре значений. Коридор будет находится в диапозоне трех сигм, и его очень хорошо будет описывать функция-колокол распределения случайных значений (к сожалению математика не мой конек, формулами доказать не могу, зато могу доказать на практике). Таким образом, все что нам надо это дождаться, когда аккумулятивное значения инструмента подойдет близко к границе коридора. Затем необходимо использовать классическую стратегию на отбой от канала. Будем продавать когда значения будут высокими и покупать, когда значения булут низкими. Для наглядности посмотрим на рисунок:
Изображение
на уровен 1.994 можно купить инструмент с выставлением стопа на 1.990 и целью 1.004 или даже 1.006. Итого имеем цель в 12 пунктов, риск 4+2 спред=6 пунктом. Вероятность того, что цена дойдет до уровня 0.990 и исполнит стоп будет крейне мала, так как она будет значительно выходить за пределы нормального распределения. Тоже самое действенно в отношении продаж. Мы продадим на уровне 1.006 со стопом на 1.012 и целью в 1.994. В принципе стопы можно смело не ставить, цена никогда не уйдет слишком далеко (максимум пунктов на десять), и это может позволить даже не слишком богатый инвестор.
Важное замечание, система на картинке прибавляет и отнимает к изначальному активу 1.0000 значение 0.001 а не 0.0001. (Зделано специально, что бы лучше было похоже на настоящие графики, так как устойчивый диапозон случайных блужданий был неожиданно узок (всего 12 пунктов).
Из сказанного выше можно сделать вывод что система никогда не достигнет нулевых значений (вероятность настолкьо мала что потребовались бы миллионы лет на это).
Последний раз редактировалось Bazil 07 июн 2009, 22:06, всего редактировалось 1 раз.

Аватара
RedRat
Завсегдатай
Сообщения: 1081
Зарегистрирован: 01 дек 2005, 01:23

Re:

Непрочитанное сообщение RedRat » 07 июн 2009, 22:04

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

Аватара
Bazil
Новичок
Сообщения: 19
Зарегистрирован: 27 ноя 2008, 19:57

Непрочитанное сообщение Bazil » 07 июн 2009, 22:21

Да, так объясните мне тогда суть вашего "случайного блуждания".

Ладно, скажу так, без всяких там сигм и тому подобной физики высоких материй:
ЗНАЧЕНИЯ ВСЕГДА БУДУТ СТРЕМИТСЯ К 1. ВСЕ ЗНАЧЕНИЯ ВСЕГДА БУДУТ РЯДОМ С НЕЙ. ЗНАЧЕНИЯ НИКОГДА И НЕ ПРИ КАКИХ ОБСТОЯТЕЛЬВАХ НЕ СМОГУТ ПОКИНУТЬ ГРАНИЦУ ЕДИНИЦЫ. РАЗБРОС ВСЕГДА БУДЕТ, И ОН БУДЕТ ВСЕГДА ОЧЕНЬ НАЗНАЧИТЕЛЬНЫМ, КОЛИЧЕСТВО ТИКОВ НЕ ИЗМЕНИТЬ СИТУАЦИЮ. ЕСЛИ ДИАПОЗОН ПРИ 10 000 ТИКОВ БЫЛ 12 ПУНКТОВ ТО ПРИ КОЛ-ВЕ ТИКОВ 10 000 000 ДИАПОЗОН ТОЖЕ БУДЕТ 12 ПУНКТОВ.

Или я снова не прав? Если нет, тогда докажите свою точку зрения. Я например свою точку зрения доказал. Да, я подрбарсывал монету 10 000 раз и в этом мне помог компьютер. Я воочую убедился в своей правоте.

З.Ы. Я понятия не имею чем ваше случайное блуждание отличается от моего случайного блуждания, и если честно то и знать не хочу. Я просто дал решение поставленной задачи. Если "случайное блуждание" отличается от условий задачи то я здесь не причем. Если можете опровергнуть решение доказав что тактика убыточна - признаю свою правоту. В противоном случае, нет смысла разводить флуд.

Аватара
RedRat
Завсегдатай
Сообщения: 1081
Зарегистрирован: 01 дек 2005, 01:23

Непрочитанное сообщение RedRat » 07 июн 2009, 23:48

если вы не хотите знать, зачем тогда спрашиваете?
перед тем как подбрасываете монету, попробуйте инициализировать генератор случайных чисел


отклонение от начальной точки пропорционально квадрату времени
пускай при бросании 10 000 раз отклонение было 12 пунктов
10 миллионов раз в 1000 раз больше, корень будет 32

12*32 сами посчитайте
Мышки плакали, кололись, но продолжали грызть кактус.

Аватара
elite
ГУРУ
Сообщения: 2503
Зарегистрирован: 21 сен 2004, 11:35
Откуда: Москва
Контактная информация:

Непрочитанное сообщение elite » 08 июн 2009, 11:59

Bazil, не позорьтесь и внимательно слушайте RedRat'а

никакого коридора здесь нет - увеличьте число бросаний в 2-8 раз и все ваши коридоры будут пробиты
Knock, Knock, Neo.....
The Martingale has you Neo...
Neo follow the Buffet

Аватара
Bazil
Новичок
Сообщения: 19
Зарегистрирован: 27 ноя 2008, 19:57

Непрочитанное сообщение Bazil » 08 июн 2009, 13:59

Хорошо, позориться не буду. Зделаю как вы говорите, резульаты представлю в студию.

Аватара
Bazil
Новичок
Сообщения: 19
Зарегистрирован: 27 ноя 2008, 19:57

Непрочитанное сообщение Bazil » 08 июн 2009, 16:06

если вы не хотите знать, зачем тогда спрашиваете?
Извините за мой заносчивый тон в предыдущем топике. На самом деле знать хочеться, еще как хочется, в конце концов я здесь именно для того что бы узнать тему из первых рук. Просто мое скалазубство вызвано тем что до адептов случайного блуждания порою бывает не достучаться. На всех кто знаком с математикой по наслышки они (адепты случайного блуждания) смотрят с высока, они ничего не объясняют, считая это ниже своего внимания, отписываясь словами "вы ничего не понимаете" или "почитайте лучше Феллера" или "сам дурак". Вот и приходится злить вас что бы добиться хоть какого-нибудь ответа. Надеюсь что наше общение все-таки будет более конструктивным и интересным.
перед тем как подбрасываете монету, попробуйте инициализировать генератор случайных чисел
Понял Вашу мысль. Разумеется перед серией бросков я каждый раз инициализирую генератор в разных точках, даже точку инициализации вывел во внешнюю переменную, что бы каждый раз ее можно было менять. Да, есть серии где цена актива не изменяется, но сути это не меняет (см. ниже).

Итак моя методология решения задачи:
1. Берется генератор случайных чисел MetaTrader и инициализируется в случайной точке.
2. Если число получаемое от генератора четное, то считается что выпал орел, и к стоимости актива прибавляется 0.0001, если число не четоное то от стоимости актива отнимается 0.0001. Начальная стоимость аткива 1.0000.
3. Среди 10 000 бросков (можно указать любое кол-во) подсчитывается 4 значения: максимальная достигнутая цена (High), минимальная достигнутая цена(Low), цена открытия(Open), цена закрытия(Close). Эти четыре значения записываются в файл-CSV в формате OHLC (то есть мы получаем классическую свечу)
4. Опирация повторяется до тех пор пока не будет получено нужное кол-во свечей.
5. Полученный файл CSV экспортируется в Excel, в нем же строится свечной график.

Я попросил программу сгенерировать 1000 свечей в каждой из которой 10 000 тиков (думаю 10 000 000 тиков должно хватить на любые нужды). Первые сто свечей я изобразил на свечном графике. Вот результат этого эксперимента:

Изображение

Как видно на графике, стохастическая система невероятно устойчива и почти правильным геометрическим зигзагом колеблется вокруг базовой стоимости актива. Правда если приглядеться внимательно, можно заметить небольшое стабильное смещение в отрицательную сторону. Нижний коридор проходит на уровне 1.9660 (дельта -340 пунктов), в то время как верхний коридор проходит на уровне 1.0260 (дельта +260 пунктов). Возможно это связано с неправильной реализацией генератора случайных чисел. В любом случае коридор становиться виден еще лучше. Рисунок из 1 000 000 тиков не может быть случайным.

Если у вас есть сомнения по поводу измерения, могу предоставить исходный код системы.

Аватара
RedRat
Завсегдатай
Сообщения: 1081
Зарегистрирован: 01 дек 2005, 01:23

Непрочитанное сообщение RedRat » 08 июн 2009, 16:36

Вы неправильно используете генератор случайных чисел
Инициализация генератора должна происходить один раз при запуске и зависеть от текущего времени системы

я как-нибудь сгенерю свою версию
Мышки плакали, кололись, но продолжали грызть кактус.

Аватара
Bazil
Новичок
Сообщения: 19
Зарегистрирован: 27 ноя 2008, 19:57

Непрочитанное сообщение Bazil » 08 июн 2009, 17:10

Инициализация генератора происходит только один раз, во время запуска скрипта.
Вовсе необязательно использовать текущее время для установки точки генератора, это может быть любое число а не только текущее время.

Черт, лучше один раз увидеть чем заниматься разными домыслами, публикую код генератора тиков:

Код: Выделить всё

//Тиковый генератор случайной последовательности на аккумулятивной основе. К начальной стоимости инструмента RND 1.0000 прибавляется
// 0.0001 если выпадает четное число, и отнимается 0.0001 если выпадает не четное

#property copyright "Copyright © 2009, Bazil, All Rights Reserved."
#property link      "vs-box@mail.ru"
#property show_inputs

extern int tiks=10000;                 //Количество тиково в одном баре
extern int i_bars=1000;                //кол-во баров
extern int SetRandGenerator=49500;
extern int DarkEnergyPercent=0;

int handle;

double RND=1.0000;
double rnd_high=1.0,
       rnd_low=1.0,
       rnd_close=1.0,
       rnd_open=1.0;

double rez;
int sum;

void init()
{
   handle=FileOpen("RandomTikGenrator-"+i_bars+"_t"+tiks+".csv",FILE_WRITE|FILE_CSV, ";");
   if(handle==0)Print("Не удалось открыть файл, причина:", GetLastError());
   MathSrand(SetRandGenerator);
   if(DarkEnergyPercent==0||tiks==0)rez=-1;
   else rez=MathRound(tiks/(tiks*DarkEnergyPercent/100.0));
   Print(rez);
}

int start()
{
   for(int k=0;k<i_bars;k++){
      rnd_open=RND;
      rnd_low=RND;
      rnd_high=RND;
      for(int i=1;i<tiks;i++){
         if(DarkEnergy(i)==true){RND+=0.001;sum++;}
         else{
            if(MathMod(MathRand(),2)==1)RND+=0.0001;
            else RND-=0.0001;
         }
         if(RND>rnd_high)rnd_high=RND;
         if(RND<rnd_low)rnd_low=RND;
      }
      rnd_close=RND;
      FileWrite(handle,DoubleToStr(rnd_open,4),DoubleToStr(rnd_high,4),DoubleToStr(rnd_low,4),DoubleToStr(rnd_close,4));
   }
   return(0);
}

bool DarkEnergy(int i)
{
   if(rez==-1)return(false);
   //Print(MathMod(i,rez), " ", rez);
   if(MathMod(i,rez)==0)return(true);
   else return(false);
}

void deinit()
{
   Print("Работа скрипта завершена. Сгенерированная последловательность записана в файл ", sum);
   FileClose(handle);
}

p.s. Функция DarkEnergy генерирует искуственные положительные смещения. (По умолчанию не используется)

Ответить