Программирование - это просто
Advertisement
Главная arrow Биржевые роботы arrow Эксперименты с синтетическими котировками arrow Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере
25.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере Печать E-mail
Автор megabax   
04.09.2012 г.
New Page 1

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

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

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

Я, например, для таких извратов выбрал "USDCHF 5 мин". Вот посмотрите как выглядел график до начала эксперименто*в:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

В метатрейдере есть архив котировок*:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

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

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

и вот получаем немножко другую картинку*:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

Но как быть если  нам надо подправить много свечей или создать вообще новые котировки?  Можно использовать "Импорт" и "Экспорт"*:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

Давайте, например, экспортируем файл и ручками, в качестве эксперимента отредактируем его (до программного создания котировок мы еще дойдем)**:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

и вот теперь что получилось*:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

А теперь перейдем к программированию. Ниже приведен код на C#, который создает искусственный котировки в формате, пригодном для импорта в метатрейдер. Эта программа создает идеальный график котировок, представляющий из себя синусоиду. Вот ее исходный код:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Globalization;

 

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void btnStart_Click(object sender, EventArgs e)

        {

            StringBuilder sb = new StringBuilder();

            CultureInfo ci = new CultureInfo("en-US", true);

            DateTime dt = new DateTime(2011, 11, 2, 16, 10, 00);

            int period = 3;

            for (int i = 0; i < 55080; i++)

            {

                double open = 0.9 + Math.Sin(i / Math.PI / period) / 10;

                double close = 0.9 + Math.Sin((i + 0.95) / Math.PI / period) / 10;

                double low = 0.9 + Math.Sin((i + 0.3) / Math.PI / period) / 10;

                double high = 0.9 + Math.Sin((i + 0.6) / Math.PI / period) / 10;

                if (low > open) low = open;

                if (low > close) low = close;

                if (high < open) high = open;

                if (high < close) high = close;

                if (low > high) low = Math.Min(Math.Min(open, close), high);

                sb.AppendFormat(ci, "{0},{1},{2},{3},{4},{5},{6}\n", dt.ToString("yyyy.MM.dd"), dt.ToString("HH:mm"),

                    open.ToString("0.00000", ci),

                    high.ToString("0.00000", ci),

                    low.ToString("0.00000", ci),

                    close.ToString("0.00000", ci),555

                    );

                dt=dt.AddMinutes(5);

            }

            System.IO.File.WriteAllText("C:\\1\\rates.csv", sb.ToString());

        }

    }

}

 

Файл, созданный этой программой, просто импортируем в метатрейдер*:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

 

И получаем в качестве искусственного графика синусоиду*:

Эксперименты с синтетическими котировками. Урок 1. Как создать свои котировки в метатредере

 

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Metatrader 4", авторское право на который принадлежит "MetaQuotes Software Corp". 

Скриншоты, помеченные знаком **, являются цитатами и иллюстрациями  программного продукта "Блокнот", авторское право на который принадлежит "Microsoft". 


 

 

Последнее обновление ( 15.05.2013 г. )
 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги