Избранное трейдера chuikapridi

по

Бери и торгуй! Крайне ценная книга!

Ланс Бегс — «Курс по price action»

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


( Читать дальше )

Не кочегары мы, не плотники...

Не кочегары мы, не плотники...



Диву даюсь, сколько алготрейдеров развелось. На смартлабе. Даже я туда пытаюсь затесаться со своим рылом.
Только никакие это не алготрейдеры. Один только Горчаков достоин этого звания. Остальные как-то не просматриваются.

Кто такой алготрейдер?
Это человек, который включил робот по заданному торговому алгоритму и не лезет в его работу. По крайней мере часто и без должных на то оснований. Так работает Горчаков. Так Работают роботы в фонде Михаила Ханова. Наверное еще где-то работают.

А на смартлабе найти человека, который не зафиксирует в конеце дня 30 пунктов профита по сделке, открытой роботом, и не заявит гордо, что он алготрейдер, та еще проблема. Поискать нужно. И вряд ли кого найдешь, кроме того же Горчакова.

Нет, я не против такого подхода. Ибо только агрессивной торговлей можно заработать что-то серьезное с минимальными стартовым капиталом. Но это не алготрейдейдинг в классическом его понимании. 

( Читать дальше )

#пора_граммировать [5] ... цена последней сделки по Si с биржи.

Для получения последней сделки нужно изменить порядок запроса на обратный добавив
reversed=1
и оставить только строчку номер 15 в запросе
limit=1
получим запрос вида
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?reversed=1&limit=1
Вариант автоматизации упрощенно:
using System;
using System.Net;
using System.IO;
using System.Text;

namespace GetLastPrice
{
    class Program
    {
        static void Main(string[] args)
        { 
            string newLine;
            string[] lastLine;
            string link = "https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?reversed=1&limit=1";
            int count = 0;           
            for (;;) {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link);
                request.ContentType = "text/plain; charset=utf-8";
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;        
                using (Stream responseStream = response.GetResponseStream())
                {                    
                    StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);                   
                    while ((newLine = sr.ReadLine()) != null) {                        
                        if (count == 14) {
                            if (newLine =="") break;
                            else {                        
                                lastLine =  newLine.Split(",");
                                Console.WriteLine("Volume is " + lastLine[6] +" at Price " + lastLine[5]);
                            }                                                   
                        }
                        count++;                                            
                    }                                                               
                }
                count = 0;
                response.Close();
            }            
        }
    }
}


( Читать дальше )

Список ресурсов для начинающего инвестора на ММВБ

Список ресурсов для начинающего инвестора на ММВБ

Это мой первый пост на Смарт-Лабе. Пишу скорее для себя, давно хотел в одном месте собрать ссылки на ресурсы, которыми регулярно пользуюсь. На рынке с 2011 года, с самого начала – как долгосрочный инвестор. Был небольшой опыт спекуляций, даже в плюс, но затраты времени и нервов совершенно не окупаются. То есть заработать можно, но быстро утомляешься, нервничаешь, снижается качество жизни.



( Читать дальше )

#пора_граммировать [4] тики с сайта МосБиржи, ну и минутки тоже :)

Если закинуть вот такую строчку в браузер, то получим тики по SiZ7 текущей сессии
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json
— если добавить 
?start=0&limit=100
то начиная с первой сточки (номер ноль) получим только первые 100 сделок:
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?start=0&limit=100
следующие 100 сделок:
?start=100&limit=100
Минутки получить можно так:
http://iss.moex.com/iss/engines/futures/markets/forts/boards/RFUD/securities/SiZ7/candles.json?from=2017-11-08&till=2017-11-08&interval=1&start=0
Если заменить .json --> .csv, то скачивается файл:

http://iss.moex.com/iss/engines/futures/markets/forts/boards/RFUD/securities/SiZ7/candles.json?from=2017-11-08&till=2017-11-08&interval=1&start=0
Программный пример:
using System;
using System.Net;
using System.IO;

namespace GetDataSmpl
{
    class Program
    {
        static void Main(string[] args)
        {   
            string link = "https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?start=0&limit=10";
            string dataLine; 
            int count = 0;           
            using (WebClient wc = new WebClient())
            {  
                Stream stream = wc.OpenRead(link);
                StreamReader sr = new StreamReader(stream);                
                while ((dataLine = sr.ReadLine()) != null) {
                    if (count >= 14 && count <= 23) Console.WriteLine(dataLine);
                    count +=1;
                }                        
                stream.Close();             
            }                
        }
    }
}


( Читать дальше )

Quik. Индикатор корреляции

    • 02 ноября 2017, 16:21
    • |
    • Karim
  • Еще
Написал на досуге по просьбе одного из участников смартлаба индикатор корреляции.
Индикатор простенький, считает коэффициент корреляции Пирсона
для двух выбранных инструментов на заданном таймфрейме.
Выкладываю исходный код. Может кому то пригодится.

Settings= 
{ 
Name = "Piton", 
N = 100,
legend = "price2",
line = 
	{ 
		{ Name = "Sint", 
		  Color = RGB(0, 132, 0), 
		  Type = TYPE_LINE, 
		  Width = 1 
		}		
	} 
} 

function Init() 
return 1
end 

Candles = {};


function OnCalculate(index) 
	local numCandles = getNumCandles(Settings.legend);
	if index <= Settings.N or numCandles <= Settings.N then
		return nil;
	end
	
	Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N);
	if n ~= Settings.N then
        return nil;
    end
	
	-- Предварительный расчет
	sum1, sum2, sum3 = advancePaynemt(index);
	
	-- расчет коэффициента корреляции Пирсона
	r = sum3/math.sqrt(sum1*sum2);
	
	return r;
end

--  Предварительный расчет
----------------------------------------
function advancePaynemt(index)	
	local sum1 = 0;
	local sum2 = 0;	
	local sum3 = 0;
	local j    = 0;
	
	--  Вычислить среднее арифметическое
	for i=index - Settings.N + 1, index, 1 do
		sum1 = sum1 + C(i);			
		sum2 = sum2 + Candles[j].close;
		j = j + 1;
	end
	aver1 = sum1/Settings.N;
	aver2 = sum2/Settings.N;
	
	-- Вычислить сумму квадратов отклонений
	sum1 = 0;
	sum2 = 0;
	j 	 = 0;
	for i=index - Settings.N+1, index, 1 do
		sum1 = sum1 + math.pow(C(i) - aver1, 2);
		sum2 = sum2 + math.pow(Candles[j].close - aver2, 2);
		j = j + 1;
	end
	
	--  Вычислить сумму произведений разности
	j=0;
	for i=index - Settings.N+1, index, 1 do
		sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close);
		j = j + 1;
	end
	
	return sum1, sum2, sum3;
end

Как запустить и настроить:


Архив исходника на QLua: https://yadi.sk/d/OxDvAekV3PLn2z
  • обсудить на форуме:
  • QUIK

мой список мест откуда брались алго идеи

Всем привет.
Решил выложить все источники инфы и идей по алго и трейдингу которыми пользовался, так как недавно появлялся такой вопрос.
Мне абсолютно не жалко, и ничего не зажал, может просто не всё сразу вспомнил и лень вспоминать.
На чтение и исследования потрачено несколько лет фултайм работы и чтобы кто-то сделал роботов лучше то ему скорее всего придётся потратить времени и сил ещё больше, но и я ведь тоже на месте не сижу, поэтому конкуренции особо не боюсь.


( Читать дальше )

Торговая система своими руками. Часть 10. IoC, защита от сбоев, логгирование.

    • 26 октября 2017, 12:32
    • |
    • k100
  • Еще

     Привет всем! В предыдущих статьях я описывал свой тестер, разработанный на C#, и, несколько раз подчёркивал, что переключение между двумя режимами (тестирование/торговля) может быть простым. Код стратегий не должен зависеть от того, кто поставщик маркет-даты и куда уходят заявки – в тестовую базу или на сервер брокера. Конечно, это лишь один из подходов, и кому-то он покажется странным, но, главное его достоинство заключается в том, что тестирование приближается к реальности, что даёт более достоверные результаты. Вопрос в следующем: как, имея один и тот же код, получать разные по функциональности программы? Один из вариантов – использовать инверсию управления и внедрение зависимостей! Об этом сегодня и пойдёт речь.

    Приведу пример нехорошего (иногда, говорят – с запашком) кода:

class Strategy
{
   public Strategy()
   {
     var mgr = new TestOrderManadger();
     mgr.PlaceOrder(...);
   }
}

     Здесь плохо то, что класс Strategy зависит от класса TestOrderManadger. В такой реализации нельзя начать использовать какой-нибудь другой менеджер заявок (AnotherOrderManadger) без перекомпиляции библиотеки с классом Strategy. Тем более тут нарушается принцип единства ответственности – класс Strategy, помимо своей прямой обязанности, также, создаёт внутри себя зависимости. Чтобы исправить ситуацию, можно использовать интерфейсы:

interface IOrderMandger
{
   void PlaceOrder();
}

class TestOrderManadger : IOrderMandger
{
   public void PlaceOrder(){}
}

class Strategy
{
   public Strategy(IOrderMandger orderMandger)
   {
     var mgr = orderMandger;
     mgr.PlaceOrder(...);
   }
}


( Читать дальше )

Торговая система своими руками. Часть 8. Формирование закрытых позиций и подсчёт статистики.

    • 09 октября 2017, 15:14
    • |
    • k100
  • Еще

     Добрый день. В предыдущих частях я описывал, как на C# сделал собственный тестер, применяя объектно-ориентированный подход, рассказывал про интерфейсы, про их реализации, и, рассказывал про работу с БД. На данный момент осталось совсем немного. В этом топике я опишу вариант расчёта результатов работы стратегии.

     Чтобы не запутаться, даже не читая предыдущие топики, поясню, что есть и к чему надо придти. Есть стратегии – это некий объект программы, который выставляет заявки на основе получаемой маркет-даты. Заявки (Order) регистрируются системой. Также, регистрируются сделки прошедшие по заявке (каждая заявка имеет список сделок — List<Trades> trades). После прогона стратегии, все заявки и сделки сохраняются в БД, и после, их можно извлечь и посчитать по ним статистику работы стратегии. По сути, эта статистика состоит из двух аспектов: сами закрытые позиции и оценка эффективности на их основе. Начнём с первого. Вот интерфейс, который принимает заявки со сделками, и, выдаёт, собственно, список закрытых позиций:

interface IClosePositionManager
{
   List<ClosePosition> ClosePositions (List<Order> orders);
}


( Читать дальше )

Practice_chips #1. Изменение спроса и предложения

Я пишу финансовые чипсы (novice_chips) для новичков, они пользуются вниманием, более сложный материал я излагаю в fin_chips (более 100 штук), торговые приемы и нюансы, к которым можно прийти за 3-5 лет торговли.

Сегодня я решил обнародовать свой первый practice_chip, открывающий серию из 70 практических нюансов, которые мы выводили на тренингах с постоянной группой.

 

ПРАКТИЧЕСКИЕ НЮАНСЫ ТОРГОВЛИ:
ИЗМЕНЕНИЕ СУММАРНОГО СПРОСА И ПРЕДЛОЖЕНИЯ КАК  ПОДСКАЗКА О НАПРАВЛЕНИИ БУДУЩЕГО ДВИЖЕНИЯ И СМЕНЫ ТЕНДЕНЦИИ.

Изменение суммарного спроса и предложение (СиП) может выступать опережающим индикатором для интрадейщика, давая ему подсказку о том, в каком направлении планируется/готовится сдвиг по цене (на процент и более) в самое ближайшее время, стоит ли рассчитывать на продолжение явленной утром тенденции до конца дня, поставлены ли хай (вершина) и лой (дно) на этот день в акции и многое другое.

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



( Читать дальше )

....все тэги
UPDONW
Новый дизайн