Обсуждение статьи "Разработка торгового советника с нуля (Часть 11): Система кросс-ордеров"

 

Опубликована статья Разработка торгового советника с нуля (Часть 11): Система кросс-ордеров:

Создание системы кросс-ордеров. Есть один вид активов, который очень усложняет жизнь трейдерам — это активы фьючерсных контрактов. Но почему они усложняют жизнь трейдеру?

Изображение слева представляет собой типичный фьючерсный контракт, в данном случае MINI DOLLAR FUTURE, который стартовал несколько дней назад, как видно на графике. А график справа показывает тот же контракт и содержит дополнительные данные, которые на самом деле являются значениями истекших контрактов, поэтому график справа является графиком истории. Для анализа старых уровней поддержки и сопротивления предпочтительнее использовать именно график справа. Но проблема появляется проблема, когда мы доходим до торговли. Её можно увидеть ниже:

          

Автор: Daniel Jose

 

Поздравляю с этой отличной статьей Дэниела.


Я думаю, что единственная проблема возникнет на рубеже года, когда функции "CurrentSymbol" нужно будет искать название символа следующего года. Мне кажется, что значение i1 всегда будет возвращать номер текущего года (22), но в декабре мы уже начнем использовать символ, заканчивающийся на 23.


 
Guilherme Mendonca название символа следующего года. Мне кажется, что значение i1 всегда будет возвращать номер текущего года (22), но в декабре мы уже начнем использовать символ, заканчивающийся на 23.


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

                                for (int i0 = 0, i1 = mdt1.year - 2000;;)
                                {
                                        m_Infos.szSymbol = StringFormat("%s%s%d", sz0, StringSubstr(sz1, i0, 1), i1);
                                        m_Infos.szFullSymbol = StringFormat("%s%s%d", sz2, StringSubstr(sz1, i0, 1), i1);
                                        if (i0 < StringLen(sz1)) i0++; else
                                        {
                                                i0 = 0;
                                                i1++;
                                        }
                                        if (macroGetDate(dt) < macroGetDate(SymbolInfoInteger(m_Infos.szSymbol, SYMBOL_EXPIRATION_TIME))) break;
                                }

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

 
Daniel Jose #:

На самом деле, эта проблема не возникнет, и именно из-за нее TIE закончит свое существование.....

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

Вы правы.

Я не обратил внимания на строку, увеличивающую значение i1.