Помощь в написании индикаторов и советников на платформе cTrader
Страница 1 из 5 1 2 3 4 5 ПоследняяПоследняя
Показано с 1 по 10 из 50

Тема: Помощь в написании индикаторов и советников на платформе cTrader

  1. #1
    Уважаемый Аватар для viktan
    Регистрация
    18.09.2014
    Адрес
    Far, far away...
    Сообщений
    3,014
    Promo (¢)
    11,590
    Благодарности
    Получено: 2,423
    Отправлено: 1,314

    Question Помощь в написании индикаторов и советников на платформе cTrader

    Не секрет, что база индикаторов и советников для платформы cTrader в разы меньше таковой для платформы Metatrader. При этом технические возможности платформы cTrader превосходят Metatrader. И если от перехода на cTrader вас удерживает только отсутствие нужных для работы индикаторов, то эта тема для вас.
    И пока уважаемый форумчанин Azizkin ведет курс по основам, мы в этой теме будем решать следующие практические вопросы:
    - Перевод существующих индикаторов с языка MQL на язык С#
    - Написание новых индикаторов и советников (cBot -ов)
    - Другие вопросы по языку C# и платформе cAlgo

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

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

    Вы не можете благодарить!
    Хоть и не ново, я напомню снова: перед лицом и друга и врага, Ты - господин несказанного слова, а сказанного слова - ты слуга.
    ©Омар Хайам

  2. #2
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 254
    Отправлено: 48
    Цитата Сообщение от viktan Посмотреть сообщение
    Не секрет, что база индикаторов и советников для платформы cTrader в разы меньше таковой для платформы Metatrader. При этом технические возможности платформы cTrader превосходят Metatrader. И если от перехода на cTrader вас удерживает только отсутствие нужных для работы индикаторов, то эта тема для вас.
    И пока уважаемый форумчанин Azizkin ведет курс по основам, мы в этой теме будем решать следующие практические вопросы:
    - Перевод существующих индикаторов с языка MQL на язык С#
    - Написание новых индикаторов и советников (cBot -ов)
    - Другие вопросы по языку C# и платформе cAlgo

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

    Если эти ссылки вам не помогли - оставляйте свой вопрос в теме, прикладывайте исходный код (а при его отсутствии - максимально подробное описание работы индикатора/советника). Заявки будут исполняться при наличии свободного времени и хорошего настроения
    Увы, конвертер не поддерживает роботов, состоящих из нескольких файлов. Даже отдельный класс на MQL4 отказывается компилировать. То есть эта поделка только для простейших вариантов.

    Вы не можете благодарить!

  3. #3
    Уважаемый Аватар для viktan
    Регистрация
    18.09.2014
    Адрес
    Far, far away...
    Сообщений
    3,014
    Promo (¢)
    11,590
    Благодарности
    Получено: 2,423
    Отправлено: 1,314
    Цитата Сообщение от Алексей Волчанский Посмотреть сообщение
    Увы, конвертер не поддерживает роботов, состоящих из нескольких файлов. Даже отдельный класс на MQL4 отказывается компилировать. То есть эта поделка только для простейших вариантов.
    Да, класс это наследие MQL5, который с недавних пор стали интегрировать в 4 версию языка. Поддерживается конвертация только чистого MQL4.
    Собственно для всех остальных случаев эта темка и создана

    Вы не можете благодарить!
    Хоть и не ново, я напомню снова: перед лицом и друга и врага, Ты - господин несказанного слова, а сказанного слова - ты слуга.
    ©Омар Хайам

  4. #4
    Новичок
    Регистрация
    01.02.2015
    Сообщений
    5
    Promo (¢)
    525
    Благодарности
    Получено: 1
    Отправлено: 0

    Был бы благодарен...

    Здравствуйте!

    Был бы Вам очень благодарен за болванку для робота с парой нестандартных функций:

    Slippage = (возможное проскальзывание pips)
    StartHour = 0
    EndHour = 24
    TradeMonday = 0/1
    TradeFriday = 0/1
    TodayOrders = (максимальное количество ордеров в торговый день, не открывать больше указанного значения)
    TodayProfit = (Не открываться больше указанного количества профитных сделок в текущий торговый день)
    TodayLoss = (Не открываться больше указанного количества убыточных сделок в текущий торговый день)
    Vol = фиксированный объем позиции
    Use_MM = 0/1 (если 0 - открываемся по Vol, если 1 - открываемся по MM)
    MM = 1 (% от текущего депозита на 100 pips)
    TP =
    SL =
    Tral = 0/1 (Тралим Нет/Да)
    TralingStart = (pips)
    TralingStep = (pips)
    Breakeven = 0/1 (безубыток False/True)
    BreakStart = (когда включается в pips от цены)
    BreakPips = (на сколько pips ставится от цены)
    ///// И для примера сигнала на открытие - инициализация, допустим, стохастика////
    Period_K =
    Period_D =
    Slowing =
    St_Ma_Type =

    Заранее благодарю!

    Вы не можете благодарить!

  5. #5
    Уважаемый Аватар для viktan
    Регистрация
    18.09.2014
    Адрес
    Far, far away...
    Сообщений
    3,014
    Promo (¢)
    11,590
    Благодарности
    Получено: 2,423
    Отправлено: 1,314
    Вы хотите практически готовый советник, о функционале которого можно лишь догадываться по списку входных параметров?
    Извините, но это нереально.
    Попробую подсказать по некоторым функциям:
    ограничение работы по часам и дням
    PHP код:
                if(Time.Hour StartHour || Time.Hour EndHour)
                    return;
                if(!
    TradeMonday && Time.DayOfWeek == DayOfWeek.Monday//TradeMonday должна иметь тип bool
                    
    return; 
    Подсчет ордеров
    PHP код:
                int allOrders 0profitOrders 0lossOrders 0;
                foreach(var 
    trade in History)
                    if(
    trade.EntryTime.Date == Time.Date)
                    {
                        
    allOrders ++;
                        if(
    trade.NetProfit 0)
                            
    profitOrders ++;
                        else
                            
    lossOrders ++;
                    }
                
    allOrders += Positions.Count// к закрытым ордерам прибавляем еще открытые
                
                
    if(allOrders >= TodayOrders || profitOrders >= TodayProfit || lossOrders >= TodayLoss)
                    return; 
    Расчет размера лота от риска:
    PHP код:
                //extRisk =   риск в процентах
                //extSL =  стоп лосс в пунктах
                
    long volume = (long)Math.Round((Account.Balance 100 extRisk) / extSL Symbol.PipValue 1000) * 1000;
                
    volume = ?(volume Symbol.VolumeMin Symbol.VolumeMin volume); //если лот меньше минимального - повышаем до минимума 

    Инициализация и использование индикатора

    PHP код:
           //объявление дескриптора в области глобальных переменных
           
    private StochasticOscillator _SOC;

            protected 
    override void OnStart()
            {
                
    //инициализация дескриптора 
                
    _SOC Indicators.StochasticOscillator(Period_KSlowingPeriod_DSt_Ma_Type);

            }

            protected 
    override void OnTick()
            {
                 
    //Использование:
                 
    var PercentK _SOC.PercentK.LastValue;
                 var 
    PercentD _SOC.PercentD.LastValue;
             } 

    Вы не можете благодарить!
    Хоть и не ново, я напомню снова: перед лицом и друга и врага, Ты - господин несказанного слова, а сказанного слова - ты слуга.
    ©Омар Хайам

  6. #6
    Новичок
    Регистрация
    01.02.2015
    Сообщений
    5
    Promo (¢)
    525
    Благодарности
    Получено: 1
    Отправлено: 0
    Цитата Сообщение от viktan Посмотреть сообщение
    Вы хотите практически готовый советник, о функционале которого можно лишь догадываться по списку входных параметров?
    Извините, но это нереально.
    Да нет, просил болванку, которая отличается от стандартных, всего лишь подсчетом закрытых ордеров за текущий день и подсчетом прибыльных и убыточных сделок за текущий день... все остальные функции стандартные и уже написаны в других советниках...

    В любом случае, если это нереально))).. благодарю за показанные функции.

    PHP код:
                //extRisk =   риск в процентах
                //extSL =  стоп лосс в пунктах
                
    long volume = (long)Math.Round((Account.Balance 100 extRisk) / extSL Symbol.PipValue 1000) * 1000;
                
    volume = ?(volume Symbol.VolumeMin Symbol.VolumeMin volume); //если лот меньше минимального - повышаем до минимума 
    Скажите, а зачем здесь extSL?
    Правильно ли я понимаю, что это расчет объема для риска сделки в процентах в зависимости от установленного extSL?
    То есть если extSL=100 , это будет то, о чем я просил?

    Вы не можете благодарить!
    Последний раз редактировалось Chelios; 02.02.2015 в 10:17.

  7. #7
    Уважаемый Аватар для viktan
    Регистрация
    18.09.2014
    Адрес
    Far, far away...
    Сообщений
    3,014
    Promo (¢)
    11,590
    Благодарности
    Получено: 2,423
    Отправлено: 1,314
    Цитата Сообщение от Chelios Посмотреть сообщение
    Да нет, просил болванку, которая отличается от стандартных, всего лишь подсчетом закрытых ордеров за текущий день и подсчетом прибыльных и убыточных сделок за текущий день... все остальные функции стандартные и уже написаны в других советниках...
    По первому посту даже этого не было понятно. В любом случае требуемые функции я вроде как написал.
    Цитата Сообщение от Chelios Посмотреть сообщение
    Скажите, а зачем здесь extSL?
    Это значит, что если сработает стоплосс, то вы потеряете столько % депозита, сколько указано в extRisk.
    При одинаковом риске но разных размерах стопа и размер лота будет разный.

    Вы не можете благодарить!
    Хоть и не ново, я напомню снова: перед лицом и друга и врага, Ты - господин несказанного слова, а сказанного слова - ты слуга.
    ©Омар Хайам

  8. #8
    Новичок
    Регистрация
    01.02.2015
    Сообщений
    5
    Promo (¢)
    525
    Благодарности
    Получено: 1
    Отправлено: 0
    viktan, а не сочтите за труд, подскажите пожалуйста, как сейчас написать установку SL и TP для открытого ордера и модуль трала?
    Ковыряюсь в старых версиях ботов, не работает робот на бэктестинге.

    Вы не можете благодарить!

  9. #9
    Уважаемый Аватар для viktan
    Регистрация
    18.09.2014
    Адрес
    Far, far away...
    Сообщений
    3,014
    Promo (¢)
    11,590
    Благодарности
    Получено: 2,423
    Отправлено: 1,314
    Цитата Сообщение от Chelios Посмотреть сообщение
    viktan, а не сочтите за труд, подскажите пожалуйста, как сейчас написать установку SL и TP для открытого ордера и модуль трала?
    Ковыряюсь в старых версиях ботов, не работает робот на бэктестинге.
    Модификация позиций:
    PHP код:
     var position Positions.Find("Ваша метка"Symbol);
     
    ModifyPosition(positionnewStopLossnewTakeProfit); 

    Для трала в функции OnTick() выясняете newStopLoss по вашим правилам и, если он больше(buy)/меньше(Sell) текущего - вызываете ModifyPosition(...);
    Например трэйлинг позиции по индикатору Parabolic SAR (пример из самплов сAlgo)
    PHP код:
                    double newStopLoss parabolicSAR.Result.LastValue;
                    
    bool isProtected position.StopLoss.HasValue;

                    if (
    position.TradeType == TradeType.Buy && isProtected)
                    {
                        if (
    newStopLoss Symbol.Bid)
                            return;
                        if (
    newStopLoss position.StopLoss Symbol.TickSize)
                            return;
                    }

                    if (
    position.TradeType == TradeType.Sell && isProtected)
                    {
                        if (
    newStopLoss Symbol.Bid)
                            return;
                        if (
    position.StopLoss newStopLoss Symbol.TickSize)
                            return;
                    }

                    
    ModifyPosition(positionnewStopLossnull); 

    Вы не можете благодарить!
    Хоть и не ново, я напомню снова: перед лицом и друга и врага, Ты - господин несказанного слова, а сказанного слова - ты слуга.
    ©Омар Хайам

  10. #10
    Новичок
    Регистрация
    01.02.2015
    Сообщений
    5
    Promo (¢)
    525
    Благодарности
    Получено: 1
    Отправлено: 0
    Благодарю!

    И еще вопрос касательно подсчета ордеров - с таким кодом как Вы написали выше в бэктестинге открывается всего одна позиция при значении TodayOrders =1,
    То есть получается он не понимает, что подсчет за текущий торговый день, а считает за всю историю.
    Это глюк тестера или нужно как-то код поправить?

    Вы не можете благодарить!

Страница 1 из 5 1 2 3 4 5 ПоследняяПоследняя

Похожие темы

  1. Вопросы и ответы по платформе cTrader
    от RoboForex Administrator в разделе Торговая платформа cTrader
    Ответов: 425
    Последнее сообщение: 25.07.2018, 13:10
  2. Поиск/переделка индикаторов cTrader
    от RoboForex Administrator в разделе Торговая платформа cTrader
    Ответов: 7
    Последнее сообщение: 16.07.2018, 16:06
  3. Новый тип счёта на платформе cTrader
    от RoboForex Administrator в разделе Архив. RoboForex
    Ответов: 0
    Последнее сообщение: 25.06.2015, 11:28
  4. Набор индикаторов объема для платформы cTrader
    от ZigzagAK в разделе Торговая платформа cTrader
    Ответов: 2
    Последнее сообщение: 30.05.2015, 10:14
  5. Ответов: 0
    Последнее сообщение: 24.07.2013, 09:06

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •