Как в Aeon Trader добавить собственный индикатор

    • 09 марта 2016, 17:00
    • |
    • Dzam
  • Еще

Как в Aeon Trader добавить собственный индикатор

 

 

Документация к данному терминалу мне показалась очень скудной. Особенно в части разработки индикаторов, роботов. Хотел бы описать процесс создания/добавления собственного индикатора на простом примере.


Для работы с собственными индикаторами в терминале идем в меню Charts& Quotes -> Custom Indicators -> Indicator Store:

 Как в Aeon Trader добавить собственный индикатор



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

Многопоточная оптимизация в Wealth-lab 6.4

    • 03 марта 2016, 16:26
    • |
    • Dzam
  • Еще

Многопоточная оптимизация в Wealth-lab 6.4

 

Оптимизация в Wealth-lab, как известно, использует только одно ядро одного процессора и только один поток одновременно. Такой подход не позволяет использовать всю мощь современных компьютеров, что очень расстраивает алготрейдеров. Многие устали атаковать службу поддержки с вопросом «Когда многопоточность будет внедрена в Wealth-lab» и разработчики написали свою библиотеку для оптимизации.


Я выкладываю скомпилированную библиотеку, а также проект на Visual Studio 2015, с открытым кодом. Ссылка на форум, где обсуждался и разрабатывался этот код.

 

После того, как вы скачали библиотеку, скопируйте ее в папку с Wealth-lab (по умолчанию программа расположена по слудующему пути: «c:\Program Files\MS123\Wealth-Lab Developer 6\»)

Если Wealth-lab у вас был запущен, то перезапустите его.  После перезапуска в разделе оптимизации у вас появится новый пункт Parralel Optimizer (Exhaustive):

 

Многопоточная оптимизация в Wealth-lab 6.4

 



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

Брокерский беспредел #2

    • 04 февраля 2016, 23:44
    • |
    • Dzam
  • Еще

Брокерский беспредел #2

 

Давно замечал за моим брокером отставание графика. Т.е. данные на график поступают с задержкой. Первый раз обнаружил при поиске косяка в одном из роботов. Потом увидел на графике, но задержки были не большими. Сегодня задержка была длительной и отставание от реального времени составило более 5 минут. Скорость интернета:



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

Брокерский беспредел

    • 27 января 2016, 16:16
    • |
    • Dzam
  • Еще
Сегодня получил письмо от брокера своего. Это просто какой то беспредел. С ГО жмут, ликвидных инструментов все меньше и меньше, а тут еще и по транзакциям ограничение. И это при отсутствии нормального тестового сервера. Теперь если робот дал сбой, то можно сидеть и куковать до следующего дня… Слов нет.

Дополнительно информируем Вас о том, что в соответствии с пп. 40.7, 40.8. Регламента оказания услуг на рынке ценных бумаг Общества с ограниченной ответственностью «Компания Брокеркредитсервис» (далее – Регламент), являющегося неотъемлемой частью Генерального соглашения «О комплексном обслуживании на рынке ценных бумаг», заключенного между Вами и ООО «Компания БКС»  (далее – Генеральное соглашение), уведомляем Вас об изменении с «01» февраля 2016 года (включительно) условий Генерального соглашения в части порядка приема и исполнения ООО «Компания БКС» поручений (заявок) Клиента.
В случае если число транзакций на выставление и (или) на снятие заявки и (или) изменение условий ранее выставленной заявки, направленных (совершенных) Клиентом в течение 1 (одной) секунды с помощью программного обеспечения, предоставленного Клиенту в рамках Генерального соглашения в соответствии с Регламентом, Приложениями к нему и (или) на основании дополнительного соглашения к Генеральному соглашению, составляет 30 (тридцать) штук или более, ООО «Компания БКС» вправе не принимать и (или) не исполнять поручения (заявки) Клиента, поданные в соответствующий период времени в количестве, превышающем установленное выше количество – 30 заявок / сек. При направлении (совершении) транзакций в целях изменения условий направленной ранее заявки каждая из транзакций, выполняемая в указанных целях, в том числе транзакция по снятию ранее направленной заявки и вводу новой заявки, определяется как самостоятельная (отдельная) транзакция и учитывается отдельно. 

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

Новая фигура технического анализа.

    • 22 января 2016, 14:08
    • |
    • Dzam
  • Еще
Предлагаю к обсуждению новую фигуру теханализа. Я назвал ее BadMan. Считаю, что эта фигура говорит о начале понижательного тренда. Если вы находитесь в лонгах, то рекомендуется выйти из позиции и готовиться к шортовым сигналам.
BadMan

Готов разрабатывать новых роботов.

    • 21 октября 2015, 00:45
    • |
    • Dzam
  • Еще
Всем доброго вечера.

Завершился очередной проект и я готов принимать заказы на разработку роботов.
Отзывы о моей работе можно посмотрет тут

NinjaTrader 7. "Невозможно загрузить файл или сборку..." при использовании своей библиотеки.

    • 18 сентября 2015, 23:36
    • |
    • Dzam
  • Еще

NinjaTrader 7. "Невозможно загрузить файл или сборку..." при использовании своей библиотеки.

Занимался разработкой сигнального сервиса. Вся работа на получение и отправку сообщений легла в отдельную .dll. На чарте висит индикатор, который подключает эту .dll и через нее отправляет информацию о сделках. Сигналы отправлялись нормально, но получать библиотека ничего не хотела. Вываливалась с исключением «Невозможно загрузить файл или сборку...» и ссылалась на имя моей библиотеки. Я долго не понимал, как это так. Сама библиотека внутри себя ищет себя же… И при этом не может найти. Писал в поддержку нинзи, на что получил ответ, что ваша библиотека закрыта и ее сложно отладить… :) Начал копаться сам и нашел следующее: когда я в индикаторе использую библиотеку, то NinjaTrader грузит ее из папки «C:\Users\[UserName]\Documents\NinjaTrader 7\bin\Custom\», но когда в этой библиотеке вызывается определенный код, то NinjaTrader ищет эту библиотеку в папке «С:\Program Files (x86)\NinjaTrader 7\bin64\».



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

Хочу обратить внимание....

    • 10 июля 2015, 11:34
    • |
    • Dzam
  • Еще
Столкунлся с не честносью одного из форумчан. Я работаю (работал) без предоплаты, если сумма заказа менее 500$. Но как я понял, чем меньше сумма, тем меньше хочется с ней расставаться. Не буду никого оскорблять и поливать грязью, но хотел бы обратить ваше внимение, что человек с ником Винету Карабасович Монетка, (ник в скайпе Mike) может подвести вас. Советуюю в сотрудничестве с ним составлять точные ТЗ и брать предоплату.
P.S. Оскорбительные комментарии в адрес любого участника буду удалять. Не обижайтесь.

Разработка торговых систем

    • 01 июля 2015, 15:34
    • |
    • Dzam
  • Еще
Занимаюсь разработкой торговых систем под заказ и под ключ. С некоторыми участниками форума мы уже поработали. Отзывы можно посмотреть на сайте. Работаю с различными платформами: Ninjatrader, Metatrader, Quik, Amibroker, Wealth-lab, Multicharts. Пишу на различных языках. Готов рассмотреть ваши предложения по платформам, которые не указаны в списке. Пишите. Договоримся. С 1 июня разработка ПО для торговли — это мое основное рабочее направление. Доступен в сети почти в течение всего дня. Работы выполняю быстрее, так как все время уделяю именно разработке. Обращайтесь!
Ну и как всегда намусорите в комментах. Без этого никак. :)

Получаем данные из Excell для использования в Wealth-lab, Ninjatrader и так далее.

    • 27 июня 2015, 14:43
    • |
    • Dzam
  • Еще
Получаем данные из Excell для использования в Wealth-lab, Ninjatrader и так далее.
Есть задачи, когда необходимо читать внешние данные для работы роботов или индикаторов. Например, можно в Excel лист занести уровни, от которых будет торговать робот. Либо список тикеров, по которым необходимо собирать информацию.



Для чтения данных из Excel нам потребуется библиотека Microsoft.Office.Interop.Excel.dll. В моей Windows7 она расположилась в папке:

C:\Program Files (x86)\Microsoft Office\Office15\DCF

В проект необходимо добавить ссылку на эту библиотеку. Код чтения данных простой:


//Читаем их Excel данные в массив
List getParamsFromExcel(string filePath)
{
    //С какой строки начинаем читать данные
    int start_from_row = 2;
    //Индекс колонки с Тикером
    int symbol_index = 1;
    //Индекс колонки с типом ордера
    int order_type_index = 2;
    //Индекс колонки с ценой входа
    int entry_price_index = 4;
    //Индекс колонки с ценой стопа
    int stop_price_index = 5;
    //Индекс колонки с временем входа
    int entry_time_index = 7;
    int current_index = start_from_row;

    //Текущий символ графика
    string read_symbol = Bars.Symbol;
    //Текущий считанный из Excel символ
    string current_symbol;

    //Список параметров считанный из Excell
    List result;
    result = new List();

    //Переменная Excel приложение
    Excel.Application xlApp;
    //Переменная рабочая книга
    Excel.Workbook xlWorkBook;
    //Переменная рабочий лист
    Excel.Worksheet xlWorkSheet;
    //Переменная диапазон
    Excel.Range range;

    //Инициализируем переменные
    xlApp = new Excel.Application();
    xlWorkBook = xlApp.Workbooks.Open(filePath);
    xlWorkSheet = xlWorkBook.Worksheets.get_Item(1);

    range = xlWorkSheet.UsedRange;

    //Считываем тикер из Excel
    current_symbol = (string)(range.Cells[current_index, symbol_index] as Excel.Range).Value2;
    //Читаем тикеры, пока не наткнемся на пустую строку
    while(current_symbol != null)
    {
        //Если считанный тикер совпадает с тикером графика, на котором запустили робота
        if(read_symbol == current_symbol)
        {
            //Читаем и добавляем параметры ордера
            result.Add(new OrderParams
            {
                ePrice = Convert.ToDouble((range.Cells[current_index, entry_price_index] as Excel.Range).Value2),
                sPrice = Convert.ToDouble((range.Cells[current_index, stop_price_index] as Excel.Range).Value2),
                eTime = DateTime.FromOADate((range.Cells[current_index, entry_time_index] as Excel.Range).Value2),
                pType = ((string)(range.Cells[current_index, order_type_index] as Excel.Range).Value2 == "Short" ? PositionType.Short : PositionType.Long)
            });
        }

        current_index++;
        //Считываем очередной тикер
        current_symbol = (string)(range.Cells[current_index, symbol_index] as Excel.Range).Value2;                
    }

    //Закрываем рабочую книгу
    xlWorkBook.Close(true, null, null);
    //Выходим из приложения
    xlApp.Quit();

    //Уничтожаем созданные объекты
    releaseObject(xlWorkSheet);
    releaseObject(xlWorkBook);
    releaseObject(xlApp);

    return result;
}

//Уничтожаем переданный объект
private void releaseObject(object obj)
{
    try
    {
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
        obj = null;
    }
    catch (Exception ex)
    {
        obj = null;                
    }
    finally
    {
        GC.Collect();
    }
} 

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

теги блога Dzam

....все тэги



UPDONW
Новый дизайн