Ответ
 
Опции темы
04.05.2016, 16:39
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от _SERG_ Посмотреть сообщение
Настрой историю в терминале, и первый параметр в индикаторе и не будет беды.
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 16:49
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,017
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от Yurkov Посмотреть сообщение
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Суть в том, что индикатор(и методика вычислений в нем) зависит от того, как показывается история терминала.
Если в терминале выбрать "Сегодня" или "Последняя неделя", то такая методика будет показывать именно "Сегодня", а вовсе не последний месяц.
Поэтому и предлагается в первый день месяца внести баланс в глоабльные переменные терминала через GlobalVariableSet() и потом проверять и сравнивать текущий баланс с этим значением, полученным через GlobalVariableGet().
ansol на форуме Ответить с цитированиемОтветить с цитированием  
04.05.2016, 16:54
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от Yurkov Посмотреть сообщение
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Думаю, что готовый код для твоего вопроса никто специально не писал, поэтому вряд ли даст.
Есть ветки где народ кодит за деньги и даром, кинь вопрос туда, вместе с совой, мож кто и возьмётся.
_SERG_ на форуме Ответить с цитированиемОтветить с цитированием  
04.05.2016, 17:10
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от ansol Посмотреть сообщение
Суть в том, что индикатор(и методика вычислений в нем) зависит от того, как показывается история терминала.
Если в терминале выбрать "Сегодня" или "Последняя неделя", то такая методика будет показывать именно "Сегодня", а вовсе не последний месяц.
Поэтому и предлагается в первый день месяца внести баланс в глоабльные переменные терминала через GlobalVariableSet() и потом проверять и сравнивать текущий баланс с этим значением, полученным через GlobalVariableGet().
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803

Последний раз редактировалось Yurkov; 04.05.2016 в 17:12.
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 17:17
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от Yurkov Посмотреть сообщение
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)
Да, так оно и делается (+/-), алгоритм называется.

Выучи пару операторов, и кодер - готов.

Есть правда нюансы, надо ещё найти место в том алгоритме куда вставлять будешь, для того алгоритма, который сам написал.

Последний раз редактировалось _SERG_; 04.05.2016 в 17:20.
_SERG_ на форуме Ответить с цитированиемОтветить с цитированием  
04.05.2016, 17:21
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,017
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от Yurkov Посмотреть сообщение
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)
Нну... Кто ж такое советовать будет именно из-за того, что закрытие терминала или перезапуск советника приведет к сбросу значения.
А глобальная переменная терминала хранится 4 недели, если к ней не обращаться совсем, т.е. никакие перезапуски не напрягают - это раз. И два - ее можно посмотреть и поменять самому по кнопочке F3 в терминале, что иногда удобно бывает.
А что именно вы будет сохранять и увеличивать - ваш выбор. Например, сохранять баланс 1 раз в месяц и сравнивать с текущим проще, ибо текущий без вашего участия изменяется в зависимости от результатов сделок. Это как бы немножко лучше, чем самому что-то куда-то прибавлять, ИМХО.

Последний раз редактировалось ansol; 04.05.2016 в 17:24.
ansol на форуме Ответить с цитированиемОтветить с цитированием  
04.05.2016, 17:27
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от ansol Посмотреть сообщение
Нну... Кто ж такое советовать будет именно из-за того, что закрытие терминала или перезапуск советника приведет к сбросу значения.
А глобальная переменная терминала хранится 4 недели, если к ней не обращаться совсем, т.е. никакие перезапуски не напрягают - это раз. И два - ее можно посмотреть и поменять самому по кнопочке F3 в терминале, что иногда удобно бывает.
Думаю простой переменной будет достаточно в моем случае. Терминал стоит на VPS. Мне нужно проверить в тестере стоит ли вообще заморачиваться.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 17:33
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,017
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от Yurkov Посмотреть сообщение
Думаю простой переменной будет достаточно в моем случае. Терминал стоит на VPS. Мне нужно проверить в тестере стоит ли вообще заморачиваться.
Хозяин - барин.
Возьмите баланс в вашу переменную BALANCE = AccountBalance() при Day() == 1 и потом сравнивайте его с текущим AccountBalance()
ansol на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (04.05.2016)
04.05.2016, 17:36
Аватар для officialboob
officialboob Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Сообщение от Yurkov Посмотреть сообщение
Может кто подскажет код? Нужно запретить советнику торговать при достижении определенного процента прибыли и чтоб это ограничение действовало до начала следующего месяца, и потом вновь повторялось.

Это не для новичков.

Пользовательские функции вставлять умеете?

Код будет выглядеть так (надо протестить):


PHP код:
void OnTick()


double LastCalendarMonthProfit=GetProfitFromDateInCurrency(Symbol(),-1,Magic,TimeCurrent()-((TimeDay(TimeCurrent())*3600*24)+(TimeHour(TimeCurrent())*3600)+(TimeMinute(TimeCurrent())*60))); //Результат закрытых позиций с 1 числа до конца месяца  

bool EquityPercent=(LastCalendarMonthProfit*100)/(AccountBalance()-LastCalendarMonthProfit) < 10//Если прибыль меньше 10% == true

if (EquityPercent//Если прибыль меньше 10% == true
result=OrderSend(...); //Открываемся




PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит в валюте депозита                  |
//|             закрытых с определённой даты позиций                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента             (""   - любой символ,         |
//|                                               NULL - текущий символ)       |
//|    op - операция                             (-1   - любая позиция)        |
//|    mn - MagicNumber                          (-1   - любой магик)          |
//|    dt - Дата и время в секундах с 1970 года  ( 0   - с начала истории)     |
//+----------------------------------------------------------------------------+
double GetProfitFromDateInCurrency(string sy=""int op=-1int mn=-1datetime dt=0)
{
  
double p=0;
  
int    ik=OrdersHistoryTotal();

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_HISTORY)) {
      if ((
OrderSymbol()==sy || sy=="") && (op<|| OrderType()==op)) {
        if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (
mn<|| OrderMagicNumber()==mn) {
            if (
dt<OrderCloseTime()) {
              
p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
  return(
p);


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 17:51.
officialboob вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (04.05.2016)
04.05.2016, 17:57
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от officialboob Посмотреть сообщение
Это не для новичков.

Код будет выглядеть так (надо протестить):


А в этих скобках "result=OrderSend(...)" что должно быть?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 18:02
Аватар для officialboob
officialboob Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Сообщение от Yurkov Посмотреть сообщение
А в этих скобках "result=OrderSend(...)" что должно быть?

Открытие ордера. Это не полный код. Это код для дополнения в любую существующую сову.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 18:05.
officialboob вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 18:05
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от officialboob Посмотреть сообщение
Открытие ордера.
Это я понял)
Вот эти строчки мне не помогут?
PHP код:
bool OrderOpenBuy(int aReturnedTicket,double aLots,double aSL,double aTP
и
PHP код:
bool OrderOpenSell(int aReturnedTicket,double aLots,double aSL,double aTP

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 18:14
Аватар для officialboob
officialboob Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Сообщение от Yurkov Посмотреть сообщение
Это я понял)
Вот эти строчки мне не помогут?
PHP код:
bool OrderOpenBuy(int aReturnedTicket,double aLots,double aSL,double aTP
и
PHP код:
bool OrderOpenSell(int aReturnedTicket,double aLots,double aSL,double aTP


Перед запросом на открытие ордера нужно поставить дополнительное условие

PHP код:
if (EquityPercent) {

//здесь должны быть другие условия на открытие и само открытие. 



_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!
officialboob вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 18:20
Аватар для vlad_123
vlad_123 Местный знаток
Регистрация: 29.01.2013 / Сообщений: 389
Поблагодарили 877 раз(а) / Репутация: 881
Сообщение от Yurkov Посмотреть сообщение
Может кто подскажет код? Нужно запретить советнику торговать при достижении определенного процента прибыли и чтоб это ограничение действовало до начала следующего месяца, и потом вновь повторялось.
Я еще понимаю попытки ограничить просадки, но вот прибыль - это да...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

На заказ не программирую.
vlad_123 на форуме Ответить с цитированиемОтветить с цитированием  
04.05.2016, 18:24
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от vlad_123 Посмотреть сообщение
Я еще понимаю попытки ограничить просадки, но вот прибыль - это да...
Грубый пример:
В первой половине месяца прибыль составила 5%, во второй был получен убыток -4%. В общей сложности прибыль = 1%. Если бы стояло ограничение 5%, то не был бы получен убыток во второй половине месяца.
Сообщение от officialboob Посмотреть сообщение
Это не для новичков.
С простой переменной и ограничением по пунктам проще? )

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803

Последний раз редактировалось Yurkov; 04.05.2016 в 18:27.
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 18:31
Аватар для officialboob
officialboob Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Сообщение от Yurkov Посмотреть сообщение
С простой переменной и ограничением по пунктам проще? )

Я только что написал готовый код. Чтобы его вставить в сову надо сделать 3 действия:

1. Скопировать условие if (EquityPercent) пред открытием,
2. Скопировать функцию в подвал,
3. Скопировать расчет LastCalendarMonthProfit и EquityPercent в любое место до запроса условий на открытие ордера (например, в самое начало совы сразу после void OnTick() ).

Проще этого уже ничего не будет.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 18:40.
officialboob вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (04.05.2016)
04.05.2016, 18:50
Аватар для Yurkov
Yurkov Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 656
Поблагодарили 364 раз(а) / Репутация: 367
Сообщение от officialboob Посмотреть сообщение
Проще этого уже ничего не будет.
Что-то получается. Буду проверять! Благодарю!!!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 19:36
Аватар для zQuant
zQuant Местный житель
Регистрация: 21.01.2016 / Адрес: https://www.mql5.com/ / Сообщений: 395
Поблагодарили 238 раз(а) / Репутация: 238
Сообщение от Yurkov Посмотреть сообщение
Исходник есть, НО я не программист ) Мне нужен кусок кода, который будет за это отвечать и я вставлю его в советник.
мир перевернулся

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирую почти даром zQuant@outlook.com
FREE - _https://www.mql5.com/ru/market/product/16097
_https://www.mql5.com/ru/market/product/16246
zQuant вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 19:40
Аватар для zQuant
zQuant Местный житель
Регистрация: 21.01.2016 / Адрес: https://www.mql5.com/ / Сообщений: 395
Поблагодарили 238 раз(а) / Репутация: 238
officialboob все правильно написал... Особенно для тестера это самый лучший вариант...
А потом, опять же, как правильно подсказали, если историю в терминале не будешь ограничивать сильно, то и в реале будет работать...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирую почти даром zQuant@outlook.com
FREE - _https://www.mql5.com/ru/market/product/16097
_https://www.mql5.com/ru/market/product/16246
zQuant вне форума Ответить с цитированиемОтветить с цитированием  
04.05.2016, 20:17
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от Yurkov Посмотреть сообщение
Что-то получается. Буду проверять! Благодарю!!!
При проверке пользуйся отладчиком, в нём цифры можно посмотреть, а не домыслы.
_SERG_ на форуме Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 13:37. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO