Построить советник для виртуального straddle. У советника должны быть следующие входные параметры а также интерфейс на графике МТ4: (обьяснения в --Указания для Входных Параметров-- и в --Указания для Интерфейса--) Входные Параметры: LotSize=x Straddle=true/false Date=xx/xx Time=xx:xx:xx PointsAway=x* UseCancelSec=true/false CancelSec=x UseTP=true/false TP=x* UseSL=true/false SL=x* UseVSL=true/false VSL=x (in $) UseBE=true/false BE=x* UseTrailing=true/false Trailing=x* AutoClosing=true/false AutoClosingTime=xx:xx:xx AutoClosingDate=xx/xx CloseA=__** CloseB=__ CloseC=__ UseTimeFrom=Broker/Local UseMaxDeviation=true/false MaxDeviation=x* * х вводится в points. 10 points = 1 standart pip. Кроме параметра VSL где вводится в $. ** __ Здесь пользователь может ввести размер лота для частичного закрытия позиции. (обьяснение каждого входного параметра в --Указания для Входных Параметров--) Интерфейс на Графике: Робот должен иметь интерфейс на графике МТ4. Этот интерфейс должен состоять из следующих кнопок: Buy, Sell, CloseA [ ]***, CloseB [ ], CloseC [ ], BE, Cancel *** [ ] это место где отображено введенное в соответствующем входном параметре. (обьяснение каждой кнопки в --Указания для Интерфейса--) --Указания для Входных Параметров-- 1. LotSize - Размер лота. на пример - 0.1 (минилот = 10,000 units) 2. Straddle, Date, Time, PointsAway - эти входные параметры должны работать как в следующем примере: Входные параметры: Straddle=true, Date=01/12, Time=15:30:00, PointsAway=30 То что должно произойти: Точно в заданное время на графике появляются две линии straddle - зеленая и красная - зеленая 3 пипа (30 points) над ценой Ask, а красная 3 пипа под ценой Bid. Если цена Ask движется вверх и соприкасается с зеленой линией то отправляется приказ купить. Если цена Bid движется вниз и соприкасается с красной линией то отправляется приказ продать. В момент соприкасания (отправления приказа) обе линии straddle немедленно отключаются и исчезают, и не появляются снова до снятия робота с графика.**** Oрдеры посланные линиями straddle должны контролироватся входным параметром MaхDeviation (Интеракция линий straddle с кнопками buy и sell интерфейса обьясняется в --Указания для Интерфейса--) **** Всюду где сказано "до снятия робота с графика" имеется в виду исключительно физическое снятие робота юзером. Например, если платформа внезапно отключается от сети и затем подключается снова то линии straddle не должны появится снова если перед этим они уже были и исчезли. 3.CancelSec Количество секунд по прошествии которых линии straddle отключаются и исчезают с графика, и не появляются снова до снятия робота с графика. Секунды отсчитываются от времени введеного во входном параметре Time. 4.TP (take profit) Обычный take profit 5.SL (stop loss) Обычный stop loss 6.VSL Виртуальный stop loss Робот должен закрыть любую из существующих позиций если ее потеря равна или превысила количество $ введенное в этом параметре. Дожна быть возможность ввести число меньшее чем целое. Например 0.1 - 10 центов. 7.BE Tочка Безубыточности (break even) Когда иммется введенное Х points в прибыли робот должен передвинуть stop loss в точку безубыточности. 8.Trailing Trailing Stop Loss Когда иммется введенное Х points в прибыли робот должен передвинуть stop loss в точку безубыточности и продолжать поддерживать его на этом расстоянии от цены (естественно только когда она движется в сторону прибыли). 9. AutoClosingTime, AutoClosingDate, Автоматическое полное закрытие позиции в заданное время и дату. 10. CloseA, CloseB, CloseC Ето вводы для частичного закрытия позиции. Введенные здесь данные могут быть реализованы посредством соответствующих кнопок на интерфейсе. Важно чтобы ети кнопки не могли открывать новую позицию а исключительно только закрывать существующую.***** ***** в момент когда эти кнопки будут использованы будет существовать только одна позиция с конкретным символом. Возможно будет паралельная позиция но она будет с другим символом и будет контролироваться другой копией робота на другом графике. 11. UseTimeFrom Позволяет выбрать будет ли робот использовать серверное время брокера или же местное время компьютера пользователя. 12. MaxDeviation Этот входной параметр является клоном "Allow Maximum Deviation from Quoted Price" который находится в окне ордера у брокеров поддерживающих instant eхecution (FxPro, FXCM). Будучи включеным (true) он должен контролировать ордеры посланные линиями straddle а также ордеры посланные кнопками buy и sell на интерфейсе. --Указания для Интерфейса-- Этот интерфейс должен состоять из следующих кнопок на графике МТ4: Buy, Sell, CloseA [ ]***, CloseB [ ], CloseC [ ], BE, Cancel Кнопки должны быть расположены вертикально на правой стороне графика. Каждая кнопка должна быть чуствительна для кликания на всей ее площади. *** [ ] - место где должно быть отображено введенное в соответствующем входном параметре 1.Кнопки Buy и Sell: Это клоны соответсвуюших кнопок МТ4. Oрдеры посланные этими кнопками должны контролироватся входным параметром MaхDeviation, так же как и ордеры посланые линиями straddle. Кнопки buy и sell должны иметь следующую интеракцию с линиями straddle: 1. Если цена ask соприкасается с зеленой линией то кнопка buy немедленно отключается и не работает до снятия робота с графика. Исключение: Если же приказ отправленный вышеуказанным соприкосновением отклонен брокером (requote) то кнопка buy немедленно возвращается в рабочее состояние. 2. Если цена bid соприкасается с красной линией то кнопка sell немедленно отключается и не работает до снятия робота с графика. Исключение: Если же приказ отправленный вышеуказанным соприкосновением отклонен брокером (requote) то кнопка sell немедленно возвращается в рабочее состояние. 3. В момент кликанья на кнопку buy или кнопку sell линии straddle немедленно отключаются и исчезают, и не появляются снова до снятия робота с графика. Исключение: Если же приказ отправленный кликаньем кнопки buy отклонен брокером (requote) + при этом цена ask находится ниже исходного положения зеленой линии = зеленая линия немедленно возвращается в рабочее состояние, появляясь на уровне где была изначально. Красная линия не возврашается! Если же приказ отправленный кликаньем кнопки sell отклонен брокером (requote) + при этом цена bid находится выше исходного положения красной линии = красная линия немедленно возвращается в рабочее состояние, появляясь на уровне где была изначально. Зеленая линия не возврашается! 2. Кнопки CloseA [ ], CloseB [ ], CloseC [ ]: Кнопки для частичного закрытия позиции в соответствии с данными введенными во входных параметрах CloseA, CloseB, CloseC . Важно чтобы ети кнопки не могли открывать новую позицию а исключительно только закрывать существующую.***** [ ] = место где видно данное введенное в соответствующем входном параметре. ***** в момент когда эти кнопки будут использованы будет существовать только одна позиция с конкретным инструментом. Возможно будет паралельная позиция но она будет с другим инструментом и будет контролироваться другой копией советника на другом графике. 3. Кнопка BE Включатель Tочки Безубыточности (break even). В момент кликанья на эту кнопку входной параметр UseBe становится true (если перед этим было введено false). Eсли положениесоответстует введенному во входном параметре BE (если имеется Х или больше points в прибыли) то робот передвигает stop loss в точку безубыточности. Эффект кликанья на эту кнопку должен быть одинаковым в любой ситуации (когда нет открытой позиции, когда есть открытая позиция в убытке или в прибыли, до времени указанного во входном параметре Time или после и т.д.). 4. Кнопка Cancel В результате кликанья на эту кнопку линии straddle должны быть немедленно отключены и исчезнуть, и не появляться снова до снятия робота с графика. --Дополнительные Качества-- 1. Log file Робот должен записывать в лог каким образом был отправлен приказ и точное время отправления. требуемый формат - час:мин:сек:миллисек (Серверное время брокера или время PC пользователя, в соответствии с указанным в соответствующем входном параметре) Пример: 12:30:00:000 straddle 13:00:00:000 click 2. Робот должен управлять только тем графиком на котором он расположен. 3. Робот должен управлять (SL, TP, VSL, BE и т.д.) любой сущетсвующей позицией того инструментa на чьем графике он расположен, в независимости от того как эта позиция была открыта. -Конец-