Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Курс системной торговли группы трейдеров Форекс Системс


Информационный Канал Subscribe.Ru

rfs.gif

 

 

 

Часть 5

Введение в тестирование и оптимизацию систем

Немного рано об этом начинать разговор, но выпуск релиза МТ4 несколько скорректировал планы рассылки и я решил высказать некоторые свои размышления на эту тему.

Важность качественного тестирования систем и их оптимизации сложно переоценить. Неважно, будете ли вы механизировать свою систему или нет – она должна быть протестирована и оптимизирована. Один из путей – ручной тест на истории. Это очень трудоемкий, рутинный путь, который реально выполним лишь для некоторых систем и, как правило, вносит достаточно большую ошибку в результаты. Второй путь – тестирование с помощью специальных программных средств, наиболее популярныеOmega TS, Metastock, Amibroker, Metatrader. К сожалению, каждый из перечисленных инструментов имеет ряд минусов, наиболее общие это: недостаточная адекватность тестирования, низкая скорость, отсутствие продвинутых алгоритмов оптимизации (отжиг, генетические алгоритмы), слабые функциональные возможности. Все это привело к тому, что ряд трейдеров-системостроителей использует для тестирования и оптимизации собственно-разработанный софт.

Что же выбрать? В свободном доступе и не будет ничего более мощного, чем МТ. Что характерно, даже в "несвободном доступе" (в смысле, платном) очень проблематично найти мощные, функциональные и адекватные решения - я не смог. Я потратил много времени на разработку своего решения (http://forexsystems.ru/phpBB/viewtopic.php?t=757), и буду продолжать тратить на его совершенствование. Помощников не было. Да и доводить решение до уровня "для всех" - это слишком серьезная работа, на которую я вряд ли пойду. Так что тестеры вроде моего вряд-ли будут выходить из "частных коллекций" наружу. Поэтому я могу предложить только сотрудничество для совместной разработки систем, в рамках которого, от вас – начальное описание системы, а от меня – доработка, программирование, тестирование и оптимизация. На выходе вы получаете исполняемый файл, содержащий логику системы и функциональность для самостоятельного тестирования и оптимизации (т.е. я просто встраиваю систему в свой тестер и исполняемый файл передаю вам) плюс, также получаете советник для МТ4.

МТ4 меня устраивает как терминал. Тестирую и оптимизирую в своем тестере, а на выходе появляется советник для МТ4, который торгует. Метаквотесы убрали много раздражающих глюков в части терминала - так что это вполне меня устраивает.

Для примера, одна скальперная система на часовках с эмулированием минутками на моем тестере 1 прогон занимает 2-4с на истории 4.5 года (1.5 миллиона минутных баров) при количестве сделок в разных итерациях от 1000 до 7000. Считаю, это нормально. В результате, для ее оптимизации методом перебора надо около полумиллиарда итераций (а это недели тестирования), а генетические алгоритмы, встроенные в мой тестер, способны за 1-2 часа выдать хорошее решение, а за 6-7 часов - полный прогон до критерия остановки.

Полученный на выходе советник - тестирую в МТ4. Один прогон тестера занимает что-то около 10 минут. О какой оптимизации при таком времени может идти речь?! Да даже, если добавят генетические алгоритмы они - это не спасет. Думаю, что мелкие баги, типа сигналы не все - они исправят. А вот скорость - это на уровне архитектуры заложено и исправить можно будет только в МТ5L. Повторюсь - терминал (!), на мой взгляд, хороший.

Несмотря на мой некоторый скепсис в отношении тестера МТ4 – его все же можно использовать, когда нет другого выбора или система довольно простая и не требует сложной оптимизации.

Оптимизация – а нужна ли она? Иногда приходится слышать мнение – что нет, так как это подгонка под историю. Абсолютно верно – оптимищация и подгонка практически синонимы. Но давайте пойдем дальше. Если у нас есть некая система с 2-3 параметрами и мы говорим, что использовать оптимизацию не будем. Но значения параметров как-то получены и неважно как – оптимизацией или исходя из каких-то собственных умозаключений. Любая параметрическая система – является подгонкой под историю! Задача трейдера – провести оптимизацию таким образом, чтобы полученные результаты были устойчивы. Приведу здесь свой пост с форума, касающийся оптимизации систем и оценки их эффективности (http://forexsystems.ru/phpBB/viewtopic.php?t=787&start=0):

1. Была проведена неполная оптимизация (время - 24 часа), количество итераций 20 000. Из всех - только 10-15 оказались в минусе, не очень большом. Это характеризует систему, как довольно устойчивую.

2. Количество оптимизируемых параметров - 5, из них 3 - основные, а 2 - скорее подстроечные. 3 основных параметра для системы - также дает основания считать ее устойчивой.

3. Есть основания полагать, что система будет работать практически на всех рынках (ограничение - требуется высокая ликвидность рынка). Это тоже говорит об устойчивости системы.

4. Оптимизация проводилась на длительном интервале длиной в 4.5 года, что вполне приемлемо. Количество сделок в наиболее перспективных вариантах параметров - составляет не менее 1000, что вполне достаточно для того, чтобы говорить о статистической значимости полученных результатов.

5. Проводилось тестирование оптимизированной системы на выборке out of sample длиной в год - результаты не отличаются от средних на основной выборке.

6. У наиболее перспективных вариантов параметров очень привлекательная максимальная просадка и фактор восстановления. Так, у лучшей, на мой взгляд, комбинации параметры таковы: Профит 7693 пункта, ДроДаун 224 пункта, Фактор Восстановления 34.3, Количество сделок 1038 (убыточных - 405, прибыльных и безубыточных - 629). Не часто встретишь систему, которая за 4.5 года покажет максимальную просадку в 200 пунктов при 1000 сделках и профитом около 7000. Вообще, смотреть на профит в отдельности смысла не имеет, только на фактор восстановления. Так, я могу запросто играть лотом 0.3 и получить 23 000 профита и 672 пункта просадки. Система с такой крошечной просадкой очень удобна - большой простор для использования money management.

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

 

Ведущий раздела –

Дружинин Борис (aka Phantom$)

Партнер финансовой группы "ФОРЕКС СИСТЕМС"

Phantom@forexsystems.ru

Планирование в трейдинге (Продолжение)

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

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

В разделе инвестиционные инструменты и анализ рисков следует описать рынки, на которых будет вестись торговля. Сюда относятся характер рынков, время их работы (если торгуется не только форекс, но и акции, фьючерсы и т.д.), а также особенности каждого рынка. Эта информация поможет сформировать стиль торговли для каждого рынка, или, возможно, прочитав описание одного из рынков, вы решите вообще не торговать на каком-либо рынке, посчитав его либо слишком вялым, либо слишком опасным.

Следующий раздел - стратегия управления и структура активного счета. Здесь описываются общие элементы, присущие каждой используемой системе, касательно открытия, сопровождения и закрытия позиции, а также управления капиталом. Так же здесь описываются принципы переключения между рынками и стратегиями. Например, перед выходом важных новостей следует закрыть все позиции по интрадейным системам и подключить систему работающую на новостях. Для систем, работающих на дневных и более интервалах новости не окажут сильного воздействия, поэтому открытые позиции оставляем без изменения. Еще пункт, который следует обязательно включить в этот раздел – это процент просадки системы, при котором она снимается с торговли и либо переоптимизируется, либо делается пауза и торговля по ней прекращается, либо она просто выбрасывается. Чаще всего размер этого процента определяется, исходя из максимальной исторической просадки системы, полученной в результате тестирования.

Системы и принципы выбора. Здесь кратко описывается каждая рабочая система, тайм фрейм, на котором она будет использоваться, а также краткая статистика по ней (макс. просадка, профит-фактор, процент прибыльных сделок и т.д.).

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

Илья Никишин (aka Ilya)
Партнер финансовой группы "ФОРЕКС СИСТЕМС"
ilya@forexsystems.ru

 

Часть 5
О
правдывает ли цель средства?
По материалам innerworth.com, перевод investo.ru

В жестоком мире, в котором нам приходится жить, мы часто следуем девизу: "Цель оправдывает средство". В нем высоко ценятся слепые амбиции, самопожертвование и самоконтроль. Если вы способны работать, не чувствуя усталости, долго ждать и быстро восстанавливаться после неудач, вы, наверняка, будете одним из тех, кто выживет в борьбе и пожнет плоды победы. Все вышесказанное справедливо для разных сфер человеческой деятельности, в том числе для мира трейдинга с его жесткой конкуренцией. Трейдинг это тяжелое занятие. Только немногие, из занявшихся этим бизнесом, смогут достичь успеха.

Чтобы стать успешным трейдером, вы должны делать все, что необходимо, хотя подчас это невыносимо. Вам придется рисковать и жертвовать многим. Например, временем, которое вы могли бы провести со своей семьей. Вам придется выполнять дополнительную работу, чтобы увеличить капитал и проплатить торговые издержки. Часто необходимо будет сконцентрировать на занятии трейдингом все свои силы. Трейдинг не прощает пассивности. Только настойчивые и полностью посвятившие себя работе смогут выжить. Однако, в конечно счете, вам следует задать себе вопрос: оправдывает ли цель средства?

Занимаясь трейдингом, вы можете заработать огромную прибыль. Но проблема заключается в процессе выживания. Множество "рыночных волшебников" 80-х годов ушли из бизнеса. Вы можете достичь колоссального успеха, забраться на самую вершину, а через год зарегистрироваться на бирже труда. Выживание очень важно. Зачем вам становится хозяином рыночной площадки, чтобы через год сгореть на работе? Это горькая правда. Только немногим удается добиться продолжительного успеха, но и они рано или поздно сгорают. Стрессы, которые приходится преодолевать на пути к успеху, колоссальны. На кону стоят деньги и ваше собственное "я". Вам придется тратить свое свободное время на изучение новых торговых методов. Когда вам захочется отдохнуть, вы будете нервничать, думая о том, что происходит сейчас на рынке. Даже отдыхая с друзьями, вы не сможете быть полностью спокойным. Жизненно важно, для вас найти способ не пополнить ряды клуба "сгоревших" трейдеров.

Как можно избежать этого? Во-первых, свести к минимуму стрессы, насколько это возможно, попробовать выдерживать стрессовые ситуации. Не притворяйтесь, что для вас стрессов не существует. Трейдинг по своему существу является стрессовым занятием. Многие отрицают стрессы именно потому, что не могут с ними справляться. Игнорирование стресса может только усугубить его влияние на ваш организм. Лучше признать, что вам приходится рисковать и что исход ваших сделок является весьма неопределенным. Гораздо полезнее признать риск и принять меры по снижению его вероятности. Во-вторых, необходимо сконцентрироваться на полезных и приятных аспектах трейдинга. Если вам не нравится то, что вы делаете, ваши занятия не продлятся долго. Трейдинг стимулирует работу интеллекта. Очень интересно проверить свои собственные гипотезы в отношении рынка и узнать соответствуют ли они реальности. Иногда об итогах этой проверки лучше забыть, особенно, если в результате, вы получили большую просадку. Но трейдинг должен приносить удовольствие, лучше наслаждаться своей работой, чем нести ее как тяжелую ношу. В-третьих, не забывайте о балансе между работой и личной жизнью. Конечно же, важно посвящать как можно больше времени разработке торговых методов и совершенствованию навыков. Вам будет трудно найти компромисс между личной жизнью и трейдингом, так как достижение успеха требует больших жертв, но ни в коем случае нельзя прерывать связь с окружающим миром и людьми. Четвертое, и самое важное, вам необходимо поставить собственную цель. Зачем вы тратите столько времени и сил на торговлю? Ответ на этот вопрос имеет первостепенную значимость. На него нет единственно правильного ответа. Для некоторых это способ поддержать материально семью, для других возможность заработать деньги, чтобы направить их на благотворительность и внести свой вклад в развитие общества. Вы сами должны ответить на этот вопрос. Вы должны быть уверенны в том, что ваши усилия имеют значение для вас.

Трейдинг - сложное занятие. Оно требует много времени и усилий и, главное, цели. Средства далеко не всегда оправдывают цель. Важно, чтобы цель стоила того, чтобы ее достичь. Ответ на эти трудные личные вопросы, поможет вам достичь и удержать финансовый успех.

Валерий Сучков (aka vs33)
Партнер финансовой группы "ФОРЕКС СИСТЕМС"
vs33@forexsystems.ru

 

Часть 3
Утилита Tracert.mqh

Вышел тестер в МТ4, и хотя будут выходить новые билды с исправлениями, то что я хочу показать уже работает и вряд ли перестанет работать в будущих версиях.

Когда-то я пытался разобраться с Аллигатором и написал "простого" советника, который оказался достаточно большим. Для этого я сделал индикатор для раскрашивания баров в зоне (чтобы визуально было легче определять эту самую зону). После прогона советника в тестере на дневном тайм-фрейме на графике оказывалось множество стрелочек красного и синего цвета. Рассматривая эти стрелочки уже на недельном тайм-фрейме, я недоумевал - как же так, покупки идут в основном на восходящем тренде, продажи в основном на нисходящем тренде, а прибыль была не такой уж и большой, как могло быть. К тому же этих стрелочек-открытий так много, к открытым позициям добавлялись новые, что можно было запутаться. Было понятно, что на каком-то этапе добавляться в тренде становиолось уже опасно, а в какие-то моменты пора было думать и о подтягивании стопов, по примеру того, как это описано у Вильямса. При тестировании на истории отследить одну позицию не так уж и сложно, но когда становится две, три и более позиции... Тогда у меня появилась идея высчитывать среднюю цену открытых позиций, причем взвешенную. Сделал я это в МТ3, посмотреть можно здесь - http://www.alpari-idc.ru/ru/forum/viewtopic.php?p=56693#56693

Кроме того, я хотел видеть как закрываются те или иные сделки - с профитом или лоссом. Для этого я после каждой закрытой сделки рисовал крупные кружочки : черный кружочек - сделка закрылась с убытком, зеленый - с прибылью. Получив кучу таких цветных меток и набросив на график подходящий индикатор, можно было визуально проверить - насколько оправдан был тот или иной вход.

Но внедрять такое рисование в каждого советника - занятие не очень интересное, поэтому, фактически, больше я нигде этого не использовал. Но с выходом МТ4 и тестера в нем, стало возможным повторное использование однажды написанного кода. Таким образом, даже новичок, который может пока написать только простенького советника, может воспользоваться тем, что уже написано другими. Такие куски кода еще называют библиотеками или пакетами. Утилита tracert.mqh и является такой библиотекой. Достаточно поместить ее в папку ./experts/include и добавить пару строчек в код своего советника.
Сам код утилиты

//+------------------------------------------------------------------+
//|                                                      Tracert.mq4 |
//|                                                             Rosh |
//|                           http://forexsystems.ru/phpBB/index.php |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link      "http://forexsystems.ru/phpBB/index.php"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double tr_AOPLong,tr_AOPShort;
double tr_LongLots,tr_ShortLots;
int tr_CurrLongOrders,tr_CurrShortOrders;
int tr_Total,tr_Counter;
int tr_PrevLongOrders,tr_PrevShortOrders;
int tr_CurrTotalOpenedOrders,tr_PrevTotalOpenedOrders;
double tr_CurrBalance,tr_PrevCurrBalance;
color tr_ProfitColor=Lime, tr_LossColor=DeepPink,tr_LongAOPColor=Blue,tr_ShortAOPColor=Red, tr_CurrCloseColor;
int tr_CloseLabelArrow=108, tr_AOPLabelArrow=159;
bool tr_CloseLong,tr_CloseShort;
double tr_CloseLabelPrice;
int tr_CloseLabelShift=20;
int tr_CounterCloseLabel=0,tr_CounterAOPLabel=0;
int tr_Bars;

void SetTrace()
  {
//----
   if (IsTesting()&&(tr_Bars!=Bars))
      {
      tr_CloseLong=false;
            tr_CloseShort=false;
      tr_AOPLong=0.0;
      tr_AOPShort=0.0;
      tr_LongLots=0.0;
      tr_ShortLots=0.0;
      tr_CloseLabelShift=iATR(NULL,0,50,1)*3.0/10.0/Point;
      if (tr_CurrBalance==0.0)   
         {
         tr_CurrBalance=AccountBalance();
         tr_PrevCurrBalance=AccountBalance();
         }
//----------------
Проверка открытых позиций ---------------------------
      tr_CurrLongOrders=0;
      tr_CurrShortOrders=0;
      tr_CurrTotalOpenedOrders=0;
      tr_Total=OrdersTotal();
      if (tr_Total>0)//
есть открытые позиции
         {
         for (tr_Counter=0;tr_Counter<tr_Total;tr_Counter++)//
подсчет открытых позиций
            {
            OrderSelect(tr_Counter, SELECT_BY_POS, MODE_TRADES);
            if (OrderType()==OP_BUY)
               {
               tr_CurrLongOrders++;
               tr_AOPLong=tr_AOPLong+OrderLots()*OrderOpenPrice();
               tr_LongLots=tr_LongLots+OrderLots();
               }
            if (OrderType()==OP_SELL)
               {
               tr_CurrShortOrders++;
               tr_AOPShort=tr_AOPShort+OrderLots()*OrderOpenPrice();
               tr_ShortLots=tr_ShortLots+OrderLots();
               }
            }//
подсчет открытых позиций


            //--------------- 
усреднение ---------------------
           
         if (tr_CurrLongOrders>0) tr_AOPLong=tr_AOPLong/tr_LongLots;
         if (tr_CurrShortOrders>0)tr_AOPShort=tr_AOPShort/tr_ShortLots;
           
            //--------------- 
усреднение ---------------------
           
         if (tr_AOPLong>0.0)
            {
            ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPLong);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_LongAOPColor);
            tr_CounterAOPLabel++;
            }

         if (tr_AOPShort>0.0)
            {
            ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPShort);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_ShortAOPColor);
            tr_CounterAOPLabel++;
            }



//         Print("Long=",tr_CurrLongOrders,"  tr_AOPLong=",tr_AOPLong,"    ***   Short=",tr_CurrShortOrders,"   tr_AOPShort=",tr_AOPShort);           
         tr_CurrTotalOpenedOrders=tr_CurrLongOrders+tr_CurrShortOrders;
         if ((tr_CurrTotalOpenedOrders!=tr_PrevTotalOpenedOrders)||(tr_PrevLongOrders!=tr_CurrLongOrders)||(tr_PrevShortOrders!=tr_CurrShortOrders)) //
изменилось колчиство ордеров в рынке
            {
            if (tr_PrevLongOrders>tr_CurrLongOrders) //
изменилось число ордеров в Long
               {
               tr_CloseLong=true;           
               tr_CloseLabelPrice=High[1]+tr_CloseLabelShift*Point;
               }
            if (tr_PrevShortOrders>tr_CurrShortOrders) //
изменилось число ордеров в Short
               {
               tr_CloseShort=true;           
               tr_CloseLabelPrice=Low[1]-tr_CloseLabelShift*Point;
               }
            tr_PrevLongOrders=tr_CurrLongOrders;
            tr_PrevShortOrders=tr_CurrShortOrders;
            tr_PrevTotalOpenedOrders=tr_CurrTotalOpenedOrders;
            }
         }//
есть открытые позиции

//----------------
Проверка изменения Баланса

      tr_CurrBalance=AccountBalance(); 
      if (tr_CurrBalance!=tr_PrevCurrBalance)//
проверка изменения Balance
         {
         if (tr_CurrBalance-tr_PrevCurrBalance>0.0) tr_CurrCloseColor=tr_ProfitColor; else tr_CurrCloseColor=tr_LossColor;
         tr_PrevCurrBalance=tr_CurrBalance;
         //------------------
установка Метки закрытия --------------------
         ObjectCreate("Close"+tr_CounterCloseLabel,OBJ_ARROW,0,Time[1],tr_CloseLabelPrice);
         ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_ARROWCODE,tr_CloseLabelArrow);
         ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_COLOR,tr_CurrCloseColor);
         tr_CounterCloseLabel++;
         //------------------
установка Метки закрытия --------------------
         }//
проверка изменения Balance   
      }//(IsTesting())
//----
   tr_Bars=Bars;
   return(0);
  }
//+------------------------------------------------------------------+

Как использовать:

1. Записать этот файл с расширением mqh - Tracert.mqh в папку experts\include\

2.
Добавить в своего советника в самом начале строчку #include <Tracert.mqh>

Quote:

#property copyright "Rosh, conversed only"
#property link "http://*****************"
#include <stdlib.mqh>
#include <Tracert.mqh>
extern double TakeProfit = 200;
extern double Lots = 0.1;
extern double TrailingStop = 0;
extern double StopLoss = 65;



3. В самом начале в блоке start() вставить функцию SetTrace();

Quote:

int start()
{
int ticket, total,totalExpert;
//------------------------------------------------------
// ради упрощения и ускорения кода, сохраним необходимые
// данные индикаторов во временных переменных

SetTrace();



4. После прогона советника открыть файл и получить что-то вроде этого:

<>

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

Ведущий раздела –
Rosh
Партнер финансовой группы "ФОРЕКС СИСТЕМС"
rosh@forexsystems.ru

______________________________________________________

В заключение хотелось бы еще раз попросить наших читателей обязательно поддерживать с нами обратную связь – что понравилось, что нет, ваши советы и комментарии очень нам пригодятся!

 С уважением к вам,
Трейдеры финансовой группы "ФОРЕКС СИСТЕМС"
http://forexsystems.ru/phpBB

 

 

 

 

 

 

 


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: fin.forex.forexsystems
Отписаться
Вспомнить пароль

В избранное