АвторСообщение



Сообщение: 41
Зарегистрирован: 03.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 05.07.15 18:28. Заголовок: Недискрентные рендж-бары


...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 189 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]







Сообщение: 2077
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 03.03.16 10:43. Заголовок: Balbesik пишет: У т..


Balbesik пишет:

 цитата:
У тебя нет оснований отвечать.
Но и с т.з. продолжения общения, тоже нет оснований отвечать.
Вот и еще компромис


На какой из твоих вопросов я не ответил?

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 422
Зарегистрирован: 13.03.13
Репутация: -1
ссылка на сообщение  Отправлено: 06.03.16 14:40. Заголовок: Scriptong пишет: На..


Scriptong пишет:

 цитата:
На какой из твоих вопросов я не ответил?



Вопрос звучал просто (самое последнее, что мной было написано на ветке -
Отправлено: 03.02.16 20:23) -
где посмотреть любой пример,
как вписан индикатор в советник в виде функции
(подразумевал вписан в папке "Include").

Т.к. вопрос связан с памятью и эта проблема
для меня старая (неоднократно поднималась мной)
у тебя возможно были основания не отвечать.

А я со своей стороны не уверен, что
вписывание индикатора в советник решает проблему
(возможно и будет лучше, но насколько?).

Мне интересно сравнить.

Схема - удаления графика - восстановление графика (из списка открыть автономно -
через Константы нестандартных таймфреймов возможно) -
открытие шаблона на вновь открытый график (не знаю как),
более мне нравится, но не уверен реализуема ли эта схема.
И я не знаю, как эту схему сделать и посмотреть.


Да еще

Scriptong пишет:

 цитата:
Тут подумал немного. Вывод, что, действительно, лишний вызов. Так, если нужно именно выбрасывать дыры (праздники и выходные), то условие "выбрасывания" не должно срабатывать при переходе через сутки. Ведь при переходе со вторника на среду, к примеру, история идет без перерывов.



Правильно все если только Т1, если используется Т2, например безразмер = (Т1-Т2)/(Т1+Т2),
то еще добавить один блок IsNewTimeSeconds.

Как-то так -

if (IsNewTimeSeconds(i))
{
tt1 = (iTime(NULL,PERIOD_CURRENT,i+1) - iTime(NULL,PERIOD_CURRENT,i+2)); // MathAbs
VV1 = (int)iVolume(NULL,PERIOD_CURRENT,i+2);
}
else
{
tt1 = (iTime(NULL,PERIOD_CURRENT,i) - iTime(NULL,PERIOD_CURRENT,i+1));
VV1 = (int)iVolume(NULL,PERIOD_CURRENT,i+1);
}

if ( IsNewTimeSeconds_1(i) )
{
tt2 = (iTime(NULL,PERIOD_CURRENT,i+2) - iTime(NULL,PERIOD_CURRENT,i+3));
VV2 = (int)iVolume(NULL,PERIOD_CURRENT,i+3);
}
else
{
tt2 = (iTime(NULL,PERIOD_CURRENT,i+1) - iTime(NULL,PERIOD_CURRENT,i+2));
VV2 = (int)iVolume(NULL,PERIOD_CURRENT,i+2);
}

тогда "все складывается".



Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2083
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 07.03.16 16:57. Заголовок: Balbesik пишет: где..


Balbesik пишет:

 цитата:
где посмотреть любой пример,
как вписан индикатор в советник в виде функции


К сожалению, нигде. Универсального способа не существует. Для каждого конкретного индикатора требуется индивидуальный подход.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 424
Зарегистрирован: 13.03.13
Репутация: -1
ссылка на сообщение  Отправлено: 08.03.16 08:47. Заголовок: Scriptong пишет: К ..


Scriptong пишет:

 цитата:
К сожалению, нигде. Универсального способа не существует. Для каждого конкретного индикатора требуется индивидуальный подход.



Цель вопроса была - для сравнения (любой вариант).
Остальное понятно.
Сам я не смог бы синхронизировать и
поэтому и не хочу вписывать и иду другим путем.

А тут нужна твоя помощь -

возможно ли функцией ChartApplyTemplate
програмно из индикатора (советника), который стоит на открытом графике,
вызвать шаблон на этот же график?

Если "Да", то приведи пример, как и куда (в алгоритме) ставится?
А то я Ваш "птичий" (программистов) язык не понимаю.
Могу разобраться только по аналогии.
Ну сильно надо, а
странностей тут для меня хватает.

В "ручную" шаблон вызывается, память сбрасывается, а
параметры оптимизации передам по Глобальным.




Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2088
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 10.03.16 17:11. Заголовок: Balbesik пишет: воз..


Balbesik пишет:

 цитата:
возможно ли функцией ChartApplyTemplate
програмно из индикатора (советника), который стоит на открытом графике,
вызвать шаблон на этот же график?


Да, возможно. Но при этом сам советник будет удален с графика, если в шаблоне нет его. Но в любом случае произойдет деинициализация советника.

Исходник советника (чтобы не исчез после окончания времени хранения):

 цитата:
#property version "1.00"
#property strict

#define FONT_NAME "Tahoma"
#define FONT_SIZE 8
#define BUTTON_NAME "BTN_APPLY"
#define BUTTON_CORNER 3
#define BUTTON_WIDTH 110
#define BUTTON_HEIGHT 20
#define BUTTON_TEXT_COLOR clrBlack

input string i_templateName = "ADX.tpl"; // Имя шаблона

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ShowButton(BUTTON_NAME, 120, 25, BUTTON_WIDTH, BUTTON_HEIGHT, "Применить шаблон", false, BUTTON_TEXT_COLOR, clrRoyalBlue);

return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectDelete(0, BUTTON_NAME);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
}
//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Функция обработки события чарта |
//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
if (id != CHARTEVENT_OBJECT_CLICK)
return;

if (sparam != BUTTON_NAME)
return;

ChartApplyTemplate(0, i_templateName);
}
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Отображение графического объекта "Кнопка" |
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
void ShowButton(string name, int x, int y, int width, int height, string text, bool state, color clrText, color clrBackground)
{
if (ObjectFind(name) < 0)
{
ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0);

ObjectSetInteger(0, name, OBJPROP_XSIZE, width);
ObjectSetInteger(0, name, OBJPROP_YSIZE, height);
ObjectSetInteger(0, name, OBJPROP_CORNER, BUTTON_CORNER);
ObjectSetString(0, name, OBJPROP_FONT, FONT_NAME);
ObjectSetInteger(0, name, OBJPROP_FONTSIZE, FONT_SIZE);
ObjectSetInteger(0, name, OBJPROP_COLOR, clrText);
ObjectSetInteger(0, name, OBJPROP_BGCOLOR, clrBackground);
ObjectSetInteger(0, name, OBJPROP_BORDER_COLOR, clrNONE);
ObjectSetInteger(0, name, OBJPROP_BACK, false);
ObjectSetInteger(0, name, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, name, OBJPROP_HIDDEN, true);
}

ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
ObjectSetInteger(0, name, OBJPROP_STATE, state);
ObjectSetString(0, name, OBJPROP_TEXT, text);
ObjectSetInteger(0, name, OBJPROP_COLOR, clrText);
ObjectSetInteger(0, name, OBJPROP_BGCOLOR, clrBackground);
}



а также ссылка на файл - test.mq4

Пользоваться так:
    1. Перетащить советник на график.
    2. В настроечном параметре "Имя шаблона" указать имя файла шаблона, который требуется загрузить. Этот шаблон должен присутствовать в папке каталог_терминала\templates. Расширение tpl указывать обязательно.
    3. Нажать ОК.
    4. В нижнем правом углу графика появится кнопка "Применить шаблон". Ее нажатие приводит к загрузке указанного шаблона и выгрузке советника.


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 425
Зарегистрирован: 13.03.13
Репутация: -1
ссылка на сообщение  Отправлено: 11.03.16 11:06. Заголовок: Scriptong пишет: Да..


Scriptong пишет:

 цитата:
Да, возможно.



Спасибо!

Конечно удобно для РУЧНОЙ торговли.

И кнопкой и мышкой, но немножко не то, что пытаюсь добиться

Balbesik пишет:

 цитата:
програмно ....вызвать шаблон на этот же график?

......................................................................................

В "ручную" шаблон вызывается, память сбрасывается...

.

Схема приведенная в "букваре" работает

// if(!IsTesting() && curTime > g_optimizeTime_1 && Flag == 1)
// {
if(FileIsExist("319.tpl"))
{
Print("Шаблон 319.tpl найден в каталоге \\Files'"); // Momentum
//--- применим найденный шаблон
if(ChartApplyTemplate(0,"\\Files\\319.tpl"))
{
Print("Применили успешно шаблон '319.tpl'");
}
else
Print("Не удалось применить шаблон '319.tpl', ошибка ",GetLastError());
}
// }
else
{
Print("Файл '319.tpl' не найден в папке "
+TerminalInfoString(TERMINAL_PATH)+"\\MQL4\\Files");
}

, но как бы я не изгалялся прописать путь к папке templates не смог (ну пусть остается MQL4 / Files).

Буду думать, как заставить твой советник сбрасывать память автоматически.

Хотя если все сразу "патерны" ("8 советников за один проход") то,
если раз в сутки, эта проблема решается (оптимизация до 24:00, сброс после),
но боюсь в один прекрасный момент памяти может не хватить и все зависнит -
тут почему-то от накопленной тиковой истории зависит при оптимизации
(советник твой, все ограничения стоят, ничего в этом плане не переделывал).

Здесь пожелание для базы тиковой истории - было бы интересно
если архив в том числе был бы разбит помесячно.

Хочу добиться "оптимизация - сброс" по очереди по одному.
Т.к. советник не понимает, когда при установки на график задается время назад -
тут же входит в режим оптимизации (советник стоит в шаблоне и время одно и тоже,
при сбросе получается время назад -
если это решу, то фактически задача будет решена).

Кстати странно, почему этот вопрос никого не интересует,
если брать стат. анализ (как наиболее "наукоприближенный"),
то памяти точно не будет хватать.

P.S.
Надеюсь все понимают, что вопрос памяти
абсолютно не зависит от компа, тут хоть "тресни" вопрос МКЛ-я .


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2094
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 15.03.16 11:35. Заголовок: Balbesik пишет: но ..


Balbesik пишет:

 цитата:
но как бы я не изгалялся прописать путь к папке templates не смог


Есть такое понятие - "песочница терминала". Эта песочница ограничивается папками MQL4\Files в режиме онлайн и tester\files в режиме тестирования. В другие папки средствами MQL4 попасть нельзя. Чтобы это сделать, нужно использовать Windows API, т. е. нужно будет разрешить вызов функций из dll.
При работе с функцией ChartApplyTemplate и не нужно пытаться как-то попадать в папку templates. Функция делает это автоматически. Поэтому в данном случае FileIsExists - лишнее.


Balbesik пишет:

 цитата:
Буду думать, как заставить твой советник сбрасывать память автоматически.


В тестере это никак не сделать. В онлайн - да, может помочь.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 426
Зарегистрирован: 13.03.13
Репутация: -1
ссылка на сообщение  Отправлено: 17.03.16 22:52. Заголовок: Scriptong пишет: Ес..


Scriptong пишет:

 цитата:
Есть такое понятие - "песочница терминала"




Спасибо, Игорь!

Ну я не программист и естественно в такие детали не вникаю -
считаю это лишнее.
Мах, что полагаю необходимо, приблизительно разбираться в коде,
т.к."черный ящик" неприемлем при работе с деньгами,
а в остальном должны разбираться "специально обученные люди"
(специалисты по данному вопросу).

Scriptong пишет:

 цитата:
В тестере это никак не сделать. В онлайн - да, может помочь.




В тестере этого и не надо, регулируется размером истории
(я писал об этой странности).

Если взять ТИКОВЫЙ график истории за год и
поставить на оптимизацию Советником,
то сразу "затык"- вся память"сьедается" на первом проходе.



Ну а в остальном все нормально работает.
Использовать шаблон, это первое, что мне пришло в голову.

Картинки (в советнике Игоря) просто так на память скидываю и
возможно кому-нибудь пригодится,
т.к. до этого интересовался у "спецов" с Кодебазы,
они предложили сбросить память за 300 баксов
(уж не знаю, что там задумывалось).

Это даже не предложение, а "хамло зажравшихся".

По картинкам все понятно, возможно флаг - лишнее.














Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2100
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 18.03.16 19:55. Заголовок: Balbesik пишет: они..


Balbesik пишет:

 цитата:
они предложили сбросить память


Ничего, кроме патча для терминала на ум не приходит. Но это уже хакерские штучки, а потому за подобное $300 это еще и немного

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 189 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет