AIS1 Trading Robot: Инструкция Дата выпуска: 14.02.2009 Номер выпуска: 1 Содержание 1. Введение 2. Общие сведения 3. Торговая стратегия 4. Настройка торговой стратегии 5. Настройка управления рисками 6. Шаг трейлинг-стопа 7. Заключение 1. Введение 1.1. Данная инструкция ссылается на оригинальный код http://codebase.mql4.com/5260. 1.2. AIS1 Trading Robot предназначен для работы с торговым символом EURUSD. 2. Общие сведения 2.1. Программа содержит 10 элементов данных с предопределенными значениями, предназначенных для возможных изменений: 2.1.1. 5 констант, строки 16-21; 2.1.2. 5 переменных, строки 28-32. 2.2. Константа "acs.Symbol" определяет торговый символ, с которым работает программа. 2.3. В случае надобности ей можно присвоить другое значение, например "EURUSDm". 2.4. Константа "aci.OrderID" определяет параметр "magic" функции "OrderSend ()" в строках 219-220. 2.5. В случае надобности ей можно присвоить другое значение. 2.6. Константа "acd.TrailStepping" определяет в строке 118 шаг трейлинг-стопа в единицах спреда. 2.7. В случае надобности ей можно присвоить другое значение. 2.8. Константы "aci.Index.1" и "aci.Index.2" определяют в строках 98 и 99 размерности рабочих таймфреймов. 2.9. Значение "aci.Index.1 = 7" указывает в массиве "aci.Timeframe" строки 22 на дневной таймфрейм. 2.10. Значение "aci.Index.2 = 6" указывает в массиве "aci.Timeframe" строки 22 на 4-часовой таймфрейм. 2.11. Встроенная торговая стратегия "A System: EURUSD Daily Metrics" использует только вышеуказанные таймфреймы. 2.12. Константы "acs.Symbol", "aci.Index.1" и "aci.Index.2" определяют сущность данной торговой стратегии. 2.13. Поведение робота с другими значениями вышеуказанных констант требует дополнительных исследований. 2.14. Переменная "aed.AccountReserve" означает размер резерва депозита на возможные потери. 2.15. Резерв депозита определяет в строке 50 предел снижения депозита "Relative drawdon". 2.16. Резерв депозита служит защитой капитала от рыночных рисков. 2.17. Автоматическое управление резервом депозита находится в строках 77-78. 2.18. Переменная "aed.OrderReserve" означает размер резерва на возможные потери, создаваемый на каждую сделку. 2.19. Переменная "aed.OrderReserve" в строках 192-200 ограничивает размер принимаемых рыночных рисков на сделку. 2.20. Резерв на сделку служит защитой резерва депозита. 2.21. Назначение и порядок выбора размеров вышеуказанных резервов раскрывается в следующем примере: " < Пример. Возможный способ взаимоотношений с инвестором > 1. Управляющий. Имеются две системы А1, А2. Вот их характеристики, вот демо-отчеты, вот отчеты реалов. 2. Инвестор. Ознакомился. Выбираю А1. 3. Управляющий. Выберите: 1) размер резерва депозита; 2) размер резерва на сделку. 4. Инвестор. Поясните. 5. Управляющий. 5.1. Размеры резервов измеряются в процентах от размера депозита. 5.2. Пусть Вы открываете депозит на $100000. 5.3. Пусть Вы устанавливаете резерв депозита в размере 20%. 5.4. Следовательно, Ваш капитал равен $80000, резерв депозита $20000. 5.5. Пусть открыта торговая позиция. 5.6. Пусть депозит вырос до $110000. 5.7. Тогда Ваш капитал равен $88000, резерв депозита $22000. 5.8. Пусть депозит снизился до $105000. 5.9. Тогда Ваш капитал равен $88000, резерв депозита $17000. 5.10. Пусть депозит вырос до $200000. 5.11. Тогда Ваш капитал равен $160000, резерв депозита $40000. 5.12. Пусть далее депозит только снижался. 5.13. При сумме депозита $180000 Ваш капитал равен $160000, резерв депозита $20000. 5.14. При сумме депозита $170000 Ваш капитал равен $160000, резерв депозита $10000. 5.15. При сумме депозита $160000 Ваш капитал равен $160000, резерв депозита исчерпан, торговля остановлена. 5.16. При остановке торговли по Вашему приказу резерв депозита восстанавливается. 5.17. Сумма депозита при остановке становится Вашим капиталом. 5.18. Пусть торговля остановлена при сумме депозита $170000, тогда Ваш капитал равен $170000. 5.19. Таким образом, резерв депозита защищает Ваш капитал от возможных потерь. 5.20. Все наши системы управляют резервами автоматически. 6. Инвестор. Понятно. 7. Управляющий. 7.1. Резерв сделки защищает резерв депозита по вышеуказанной схеме. 7.2. От размера резерва на сделку зависит ожидаемая продолжительность работы системы. 7.3. Пусть Вы устанавливаете резерв на сделку 10% и резерв депозита в размере 20%. 7.4. Тогда система А1 может выдержать последовательность примерно 2 убыточных сделок подряд. 7.5. Из отчетов видно, что для системы А1 более длинные последовательности возникают примерно 4 раза в год. 7.6. Пусть Вы устанавливаете резерв на сделку 5% и резерв депозита в размере 20%. 7.7. Тогда система А1 может выдержать последовательность примерно 4 убыточных сделок подряд. 7.8. Из отчетов видно, что для системы А1 более длинные последовательности возникают примерно 1 раз в год. 7.9. От размера резерва сделки также зависят размеры сделок и, следовательно, суммы ожидаемых доходов от них. 7.10. Порядок расчета размера сделки можно посмотреть здесь в строках 192-216. 8. Инвестор. Понятно. Я устанавливаю резерв депозита 20% и резерв на сделку 4%. 9. Управляющий. При данном размере резерва на сделку для системы А1 требуется депозит в размере от $50000. 10. Инвестор. Сервер *******, логин *******, пароль *******, сумма $100000, с другими условиями договора согласен. 11. Управляющий. Ваш инвест-пароль А1234. " 2.22. Одновременно может быть открыта только одна торговая позиция. 2.23. Переменные "aed.TakeFactor", "aed.StopFactor" и "aed.TrailFactor" являются настройками торговой стратегии. 2.24. Их назначение разъясняется в следующих разделах. 3. Торговая стратегия 3.1. Торговая стратегия "A System: EURUSD Daily Metrics" состоит из двух частей: 3.1.1. принятие решения об открытии торговой позиции, строки 161-181; 3.1.2. управление рыночными рисками открытой торговой позиции способом "трейлинг-стоп", строки 132-159. 3.2. При принятии решения об открытии торговой позиции используется 14 переменных: 3.2.1. на входе - 9 переменных: 3.2.1.1. "ald.QuoteAsk" - текущая цена покупки Ask, строка 84; 3.2.1.2. "ald.QuoteBid" - текущая цена продажи Bid, строка 85; 3.2.1.3. "ald.Low.1" - цена Low дневного таймфрейма номер 1, строка 101; 3.2.1.4. "ald.High.1" - цена High дневного таймфрейма номер 1, строка 102; 3.2.1.5. "ald.Close.1" - цена Close дневного таймфрейма номер 1, строка 103; 3.2.1.6. "ald.Average.1" - средняя цена дневного таймфрейма номер 1, строка 109; 3.2.1.7. "ald.Range.1" - дневной диапазон цен дневного таймфрейма номер 1, строка 111; 3.2.1.8. "ald.QuoteTake" - дистанция от текущей цены до ценового уровня TakeProfit, строка 114; 3.2.1.9. "ald.QuoteStop" - дистанция от текущей цены до ценового уровня StopLoss, строка 115; 3.2.2. на выходе - 5 переменных: 3.2.2.1. "ali.Command" - вид торговой операции; 3.2.2.2. "ald.Price" - цена операции; 3.2.2.3. "ald.Stop" - ценовой уровень StopLoss; 3.2.2.4. "ald.Take" - ценовой уровень TakeProfit; 3.2.2.5. "ald.Risk" - размер принятого рыночного риска в единицах цены. 3.3. Правила покупки, строки 165-166: 3.3.1. цена закрытия "ald.Close.1" больше средней цены "ald.Average.1"; 3.3.2. текущая цена покупки "ald.QuoteAsk" больше наибольшей цены "ald.High.1"; 3.3.3. при одновременном выполнении этих двух условий рассчитываются значения выходных переменных, строки 167-171. 3.4. Правила продажи, строки 173-174: 3.4.1. цена закрытия "ald.Close.1" меньше средней цены "ald.Average.1"; 3.4.2. текущая цена продажи "ald.QuoteBid" меньше наименьшей цены "ald.Low.1"; 3.4.3. при одновременном выполнении этих двух условий рассчитываются значения выходных переменных, строки 175-179. 3.5. Для управления трейлинг-стопом используется 11 переменных: 3.5.1. на входе - 10 переменных: 3.5.1.1. "OrderType ()" - вид открытой позиции; 3.5.1.2. "OrderProfit ()" - текущая прибыль открытой позиции; 3.5.1.3. "OrderTakeProfit ()" - текущий ценовой уровень TakeProfit открытой позиции; 3.5.1.4. "OrderStopLoss ()" - текущий ценовой уровень StopLoss открытой позиции; 3.2.1.5. "ald.QuoteAsk" - текущая цена покупки, строка 84; 3.2.1.6. "ald.QuoteBid" - текущая цена продажи, строка 85; 3.5.1.7. "ald.QuoteStops" - минимально допустимая дистанция до стоп-уровня, строка 88; 3.2.1.8. "ald.Range.2" - 4-часовой диапазон цен таймфрейма H4 номер 1, строка 112; 3.2.1.9. "ald.QuoteTrail" - дистанция от текущей цены до нового ценового уровня StopLoss, строка 116; 3.5.1.10. "ald.TrailStep" - минимально допустимый шаг трейлинг-стопа, строка 118; 3.5.2. на выходе - 1 переменная: 3.5.2.1. "ald.Stop" - новый ценовой уровень StopLoss. 3.6. Правила управления трейлинг-стопом: 3.6.1. для открытой позиции Buy - строки 139-143; 3.6.2. для открытой позиции Sell - строки 139-143. 3.7. Попытка трейлинга производится в случае изменения значения выходной переменной "ald.Stop", строки 153-157. 4. Настройка торговой стратегии 4.1. Настройка торговой стратегии заключается в определении лучшего набора значений трех следующих переменных: 4.1.1. "aed.TakeFactor" - коэффициент для вычисления дистанции TakeProfit, строки 30 и 114; 4.1.2. "aed.StopFactor" - коэффициент для вычисления дистанции StopLoss, строки 31 и 115; 4.1.3. "aed.TrailFactor" - коэффициент для вычисления дистанции трейлинг-стоп, строки 32 и 116. 4.2. Понятие "лучший" зависит от поставленных при настройке целей и используемых итоговых показателей. 4.3. Изложенный далее порядок настройки является одним их возможных. 4.4. Порядок настройки торговой стратегии: 4.4.1. в окне тестера стратегий "Expert Properties/Testing" установить "Initial deposit = 100000 USD"; 4.4.2. увеличить размер резерва депозита установкой в строке 28 "double aed.AccountReserve = 0.99 ;"; 4.4.3. выключить трейлинг-стоп установкой в строке 32 "double aed.TrailFactor = 0.0 ;"; 4.4.4. объявить переменные "aed.TakeFactor" и "aed.StopFactor" внешними: 4.4.4.1. в строке 30 "extern double aed.TakeFactor = 0.8 ;", 4.4.4.2. в строке 31 "extern double aed.StopFactor = 1.0 ;"; 4.4.5. скомпилировать код; 4.4.6. произвести одновременную оптимизацию значений переменных "aed.TakeFactor" и "aed.StopFactor"; 4.4.7. присвоить переменным "aed.TakeFactor" и "aed.StopFactor" выбранные значения; 4.4.8. снять с переменных "aed.TakeFactor" и "aed.StopFactor" объявления "extern": 4.4.8.1. в строке 30 "double aed.TakeFactor = 0.8 ;", 4.4.8.2. в строке 31 "double aed.StopFactor = 1.0 ;"; 4.4.8. объявить переменную "aed.TrailFactor" с строке 32 внешней "extern double aed.TrailFactor = 0.0 ;"; 4.4.9. скомпилировать код; 4.4.10. произвести оптимизацию значения переменной "aed.TrailFactor"; 4.4.11. присвоить переменной "aed.TrailFactor" выбранное значение; 4.4.12. снять с переменной "aed.TrailFactor" объявление "extern" - "double aed.TrailFactor = 5.0 ;"; 4.4.13. восстановить в строке 28 размер резерва депозита "double aed.AccountReserve = 0.20 ;"; 4.4.14. скомпилировать код. 4.5. Настройка торговой стратегии завершена. 5. Настройка управления рисками 5.1. Настройка управления рисками заключается в определении значений набора двух следующих переменных: 5.1. "aed.AccountReserve" - размер резерва депозита, строка 28; 5.1. "aed.OrderReserve" - размер резерва на сделку, строка 29; 5.2. Общие правила установки размеров резервов раскрываются в п. 2.21 настоящей инструкции. 6. Шаг трейлинг-стопа 6.1. Для оптимизации шага трейлинг-стопа в строке 18 следует объявить "extern double acd.TrailStepping = 1.0 ;". 7. Заключение 7.1. Настройки "aed.TakeFactor = 0.8" и "aed.StopFactor = 1.0" очень хорошо отражают долгосрочное поведение EURUSD. 7.2. Параметры "aed.TrailFactor" и "acd.TrailStepping" требуют дальнейшего изучения.