Ответить
04.05.2016, 16:39
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Настрой историю в терминале, и первый параметр в индикаторе и не будет беды.
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
04.05.2016, 16:49
Аватар для ansol
ansol ansol на форуме Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 872 раз(а) / Репутация: 858
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Суть в том, что индикатор(и методика вычислений в нем) зависит от того, как показывается история терминала.
Если в терминале выбрать "Сегодня" или "Последняя неделя", то такая методика будет показывать именно "Сегодня", а вовсе не последний месяц.
Поэтому и предлагается в первый день месяца внести баланс в глоабльные переменные терминала через GlobalVariableSet() и потом проверять и сравнивать текущий баланс с этим значением, полученным через GlobalVariableGet().
04.05.2016, 16:54
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Думаю, что готовый код для твоего вопроса никто специально не писал, поэтому вряд ли даст.
Есть ветки где народ кодит за деньги и даром, кинь вопрос туда, вместе с совой, мож кто и возьмётся.
04.05.2016, 17:10
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Суть в том, что индикатор(и методика вычислений в нем) зависит от того, как показывается история терминала.
Если в терминале выбрать "Сегодня" или "Последняя неделя", то такая методика будет показывать именно "Сегодня", а вовсе не последний месяц.
Поэтому и предлагается в первый день месяца внести баланс в глоабльные переменные терминала через 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.
04.05.2016, 17:17
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)
Да, так оно и делается (+/-), алгоритм называется.

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

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

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

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

Последний раз редактировалось ansol; 04.05.2016 в 17:24.
04.05.2016, 17:27
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Нну... Кто ж такое советовать будет именно из-за того, что закрытие терминала или перезапуск советника приведет к сбросу значения.
А глобальная переменная терминала хранится 4 недели, если к ней не обращаться совсем, т.е. никакие перезапуски не напрягают - это раз. И два - ее можно посмотреть и поменять самому по кнопочке F3 в терминале, что иногда удобно бывает.
Думаю простой переменной будет достаточно в моем случае. Терминал стоит на VPS. Мне нужно проверить в тестере стоит ли вообще заморачиваться.
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
04.05.2016, 17:33
Аватар для ansol
ansol ansol на форуме Местный знаток
За призовое место в конкурсе 

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

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

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

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


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.
Yurkov 
04.05.2016, 17:57
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Сообщение от: officialboob
Это не для новичков.

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


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

Открытие ордера. Это не полный код. Это код для дополнения в любую существующую сову.
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 18:05.
04.05.2016, 18:05
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Сообщение от: 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
04.05.2016, 18:14
Аватар для officialboob
officialboob officialboob вне форума Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Это я понял)
Вот эти строчки мне не помогут?
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) {

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


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

На заказ не программирую.
04.05.2016, 18:24
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Я еще понимаю попытки ограничить просадки, но вот прибыль - это да...
Грубый пример:
В первой половине месяца прибыль составила 5%, во второй был получен убыток -4%. В общей сложности прибыль = 1%. Если бы стояло ограничение 5%, то не был бы получен убыток во второй половине месяца.
Сообщение от: officialboob
Это не для новичков.
С простой переменной и ограничением по пунктам проще? )
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803

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

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

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

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

Последний раз редактировалось officialboob; 04.05.2016 в 18:40.
Yurkov 
04.05.2016, 18:50
Аватар для Yurkov
Yurkov Yurkov вне форума Почётный гражданин
Регистрация: 19.01.2011 / Сообщений: 659
Поблагодарили 365 раз(а) / Репутация: 368
Сообщение от: officialboob
Проще этого уже ничего не будет.
Что-то получается. Буду проверять! Благодарю!!!
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
04.05.2016, 19:36
Аватар для zQuant
zQuant zQuant вне форума Местный житель
Регистрация: 21.01.2016 / Адрес: https://www.mql5.com/ / Сообщений: 395
Поблагодарили 239 раз(а) / Репутация: 239
Исходник есть, НО я не программист ) Мне нужен кусок кода, который будет за это отвечать и я вставлю его в советник.
мир перевернулся
Программирую почти даром zQuant@outlook.com
FREE - _https://www.mql5.com/ru/market/product/16097
_https://www.mql5.com/ru/market/product/16246
04.05.2016, 19:40
Аватар для zQuant
zQuant zQuant вне форума Местный житель
Регистрация: 21.01.2016 / Адрес: https://www.mql5.com/ / Сообщений: 395
Поблагодарили 239 раз(а) / Репутация: 239
officialboob все правильно написал... Особенно для тестера это самый лучший вариант...
А потом, опять же, как правильно подсказали, если историю в терминале не будешь ограничивать сильно, то и в реале будет работать...
Программирую почти даром zQuant@outlook.com
FREE - _https://www.mql5.com/ru/market/product/16097
_https://www.mql5.com/ru/market/product/16246
04.05.2016, 20:17
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
Что-то получается. Буду проверять! Благодарю!!!
При проверке пользуйся отладчиком, в нём цифры можно посмотреть, а не домыслы.
Ответить

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


Опции темы

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

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



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


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