назад Оглавление вперед


[Старт] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [ 103 ] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145]


103

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

Как видно нз рис. 84, последовательное применение простейших методик дает иногда хороший результат. За тестируемый период доходность составила 110,7% (начальный депозит 10 ООО долларов, на конец периода тестирования депозит увеличился до 21 070). Еще раз подчеркнем, что это не гарантирует подобных результатов в будущем и ситуация при тестировании отличается от ситуации реальной торговли. Поэтому к результатам тестирования необходимо относиться как к справочному материалу.

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

Формальные условия пересечения снизу вверх: значение МА8 три бара назад от текущего меньше значения МА13; значение MAS два бара назад от текущего равно илн больше значения МА13; значение MAS больше значения МА13 на прошлом баре. В этом случае формируется сигнал для покупки по текущей цене, Иначе говоря, пришло строгое подтверждение, что МА пересеклись еще на прошлом баре. При пересечении сверху вниз все ана..10гично.

Приведенная система более достоверна: если открывать позицию на текущем баре, то, строго говоря, входе формирования бара может сформироваться сигнал на открытие позиции, а затем цена может развернуться и сигнал исчезнет, хотя позиция уже будет открыта. В случае открытия позиции на следующем баре после того как на предыдущем сформировавшемся баре появился сигнал к Открытию, такое развитие событий менее вероятно. Исследования проводились на простых МА8 и МА13.



Советник 2:

1, Как и Б предыдущем случае сначала установочные данные

Кате NA8-13 cross

Author := Copyright © 2003, Ketaqaotes Software Corp Link := http; /www. me taquotes . net / 3

Lots •= 1-00 M

Stop Loss : = 0

Take Profit := 0 V

Trailing Stop := 0 ]]*/ I

2. В данном варианте советника используются следующие переменные:

PrevTime - числовая переменная, используется программой для распознавания текущего бара, формирование которого еще не закончилось, и предыдущего бара, который уже сформировался. Начальное значение переменной равно О, т. е. текущий бар на момент начала работы советника является несформировавшимся «по определению», что означает, что предыдущий бар уже сформировался и советник начинает свою работу. После этого prevTime присваивается значение, равное времени начала текущего бара, т. е. prevTime - Time. Это означает, что предыд\щий бар уже исследован советником на предмет соответствия критериям пересечения МА и дальнейшей работы с ним проводить не надо. Рано или поздно текущий бар заканчивает свое формирование, появляется 1ювый бар, время начала которого уже не равно preveTime. Это означает, что советник может начинать работу с баром, формирование которого только что закончилось. Цикл повторяется,

MaSCurrent (0) и другие переменные МА и cnt(O). Эти переменные описаны в пояснениях к Советиику 1.

WasClosedSell - данная переменная является логической и принимает значения либо <Да>> (True), либо "Нет» (False). Это означает, что при работе советника обнаружены открытые короткие позиции, одна из которых была закрыта в ходе работы советника. Поскольку советник за один запуск может проводить только одну торговую операцию, то необходимо повторить процедуру, так как могут быть еще открытые позиции; если же позиций для закрытия при очередной проверке не обнаружено, то признак WasClosedSell = True означает необходимость открытия новой позиции, в данном случае Buy. Строго говоря, можно написать советник так, что он сразу поймет, сколько имеется открытых позиций и есть ли необходимость



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

WasOosedBuy - ана-тогично предыдущему, только значение переменной WasCIosedBuy = True определяет необходимость проверки наличия незакрытых длинных позиций и открытия новой позиции Sell,

IsCrossDown - также логическая переменная, принимает те же значения, что и предыдущая {"Да«. -Нет»), "Да» означает, что условия пересечения М.А. выполнились в том смысле, в каком это условлено при описании методики торговли на сформировавшемся баре. «Нет» - значит нет:

Variables: PrevTime{О) ;

Variables: MaSCurrent (0), MaSPrevious(0), MaSPrevious2(0); variables: Mal3Current (0) , Mal3Previou5 (0) , Mal3Pi:evious2 CO) ; variables: cnt{0}, WasClosedSell (False}, WasCIosedBuy{False} ; variables: IsCrossDown(False), IsCrossUp(False);

If PrevTimeTime And

WasClosedSell=False And WasClosedBuy=False Then exit;

спи на текущем баре предыдущий бар уже обработан, выходим, ничего делать не надо.

,PrevTime=Time;-- -

3. Описание свойств переменных, аналогично Советнику!.

Ma8Current = iMA(8,MODE SMA, 1) / •г-

Ma8Previous-iMA(8,M0DE SMA,2)/ ..........

Ма8РгеУ1оиз2=1Ш(8,МО0Е 5МА, 3}.- ; Л .: Mal3Current=iMA(13,MODE SMA,1);

Mal3Previous = iMA(13,WODi sm, 2) ;

Mal3Previous2 = iMA(13, MODE SMA,3) ;

Описание условий пересечения МА (на каком баре от текущего значение МА8 больше значения МА13 и т. д.):

IsCrossDown=MaSCurrent<MaI3Current And Ma8Previous>=Mal3Previous And! Ma8Previous2>Mal3Previous2; *

IsCrossUp = Ma8Current>Mal3Current And Ma8Prevlous<=Mal3Previous And} Ma8Previous2<Mal3Previous2;

[Старт] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [ 103 ] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145]