Ответить
11.11.2012, 11:57
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Уважаемые профи подскажите как вы решаете эту задачу отсутствия работающего терминала в выходные дни- Я понимаю что есть тестер, но он не полную картину рисует....
Я тестер использую. Если что то в коде не хватает, временно дописываю. Например для проверки советника трейлера. можно временно добавить открытие ордера. В тестере временный код открывает ордер, а дальше основной тралит. Достаточно для проверки. тем более есть режим визуала.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
11.11.2012, 21:26
Аватар для zis
zis zis вне форума Местный житель
Регистрация: 21.06.2012 / Сообщений: 117
Поблагодарили 152 раз(а) / Репутация: 153
ДЦ какой
У меня forex-market и адмирал все работает.
У меня ForexClub, но дело не в нём, т.к. на компьютере тестер работает, а перестал работать в ноутбуке, а мне он здесь нужен!
11.11.2012, 21:50
Аватар для zis
zis zis вне форума Местный житель
Регистрация: 21.06.2012 / Сообщений: 117
Поблагодарили 152 раз(а) / Репутация: 153
[QUOTE=hiys;522114]Может что не доложил?[/QUк

К сожалению Вложения 02 и 03 - файлы испорчены и не распаковываются!
11.11.2012, 21:55
Аватар для zis
zis zis вне форума Местный житель
Регистрация: 21.06.2012 / Сообщений: 117
Поблагодарили 152 раз(а) / Репутация: 153
Ну, так правильно. Он библиотеки снёс, а сейчас может, что не положил. Бывает
Библиотеки все в порядке, т.к. тестер на терминале установленном на компе - работает (не работает на ноутбуке). Сравнил все файлы с работающим - всё совпадает, но упорно не работает!
11.11.2012, 23:11
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Вопрос вроде как простой, но меня загнал в тупик. То ли логика кривая у автора. В общем, код с мтшного форума:

PHP код:
double CheckCrossMADist(string smbint tfint iBdouble dist)
{
  
double dMA=iMA(smbtffPeriod0fModefPriceiB)-iMA(smbtfsPeriod0sModesPriceiB);
  if (
MathAbs(dMA)<dist*Point) return(0); // если разница меньше порога, то пересечения нет
  
  
int n=iBars(smbtf)-MathMax(sPeriodfPeriod)-1// число баров для проверки (c учетом корректности расчета МА)
  
for(int i=iB+1i<ni++) // проходим по барам
  
{
    
double dMA2=iMA(smbtffPeriod0fModefPricei)-iMA(smbtfsPeriod0sModesPricei);
    if(
MathAbs(dMA2)>=dist*Point) break; // если нашли расстояние больше порога, то обрываем поиск
  
}
  if (
dMA*dMA2>0) return(0); // проверяем знак разниц. если одинаковый, то пересечение не найдено
  
return(dMA); // вернули знак пересечения


Если нам нужно найти расстояние между машками, достаточно просчитать расстояние между значениями один раз, на одном баре.., в частности, на последнем.
Т.е. вот эта строчка:

PHP код:
double dMA=iMA(smbtffPeriod0fModefPriceiB)-iMA(smbtfsPeriod0sModesPriceiB); 

Зачем потом находится ещё значение double dMA2 ?
Ещё странная логике с циклом

PHP код:
for(int i=iB+1i<ni++) 

Здесь к значению iB прибавляется 1, т.е. рассчёт не от 0. Это что бы не учитывать последний бар, который ещё не закрылся?
12.11.2012, 04:56
Аватар для ale002
ale002 ale002 вне форума ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,507 раз(а) / Репутация: 2533
Вообще-то функция ищет не расстояние. Пересечение на уч-ке, равном периоду самой медленной из пары MA. Сначала проверяет это самое расстояние на текущем баре, если оно больше контрольного, то пробегает по остальным барам и проверяет а) чтобы расстояние нигде не было больше контрольного, б) чтобы где-нибудь оно было с противоположным знаком (пересечение). Текущий бар из цикла исключён, бо проверен в 1й строке функции

В общем две МАшки должны пройти рядом (не дальше dist) и иногда пересекаясь какое-то расстояние (период sPeriod-1), а потом разойтись. Тада функция вернёт на сколь конкретно они развалились в финале. По терминологии одной оч продуманной системы это окончание фазы "спагетти"

Последний раз редактировалось ale002; 12.11.2012 в 04:59.
hoz 
12.11.2012, 09:03
Регистрация: 01.06.2012 / Сообщений: 885
Поблагодарили 2,997 раз(а) / Репутация: 2998
  • Отправить сообщение для hiys с помощью ICQ Отправить сообщение для hiys с помощью Skype™
zis [QUOTE=zis;522876]
Может что не доложил?[/QUк

К сожалению Вложения 02 и 03 - файлы испорчены и не распаковываются!
С первого распаковывать начинал? Давай мыло, на почту целым архивом закину, на форуме делить нужно
Съел бобра, спас дерево!

Последний раз редактировалось hiys; 12.11.2012 в 09:05.
zis 
12.11.2012, 21:38
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Вообще-то функция ищет не расстояние. Пересечение на уч-ке, равном периоду самой медленной из пары MA. Сначала проверяет это самое расстояние на текущем баре, если оно больше контрольного, то пробегает по остальным барам и проверяет а) чтобы расстояние нигде не было больше контрольного, б) чтобы где-нибудь оно было с противоположным знаком (пересечение). Текущий бар из цикла исключён, бо проверен в 1й строке функции

В общем две МАшки должны пройти рядом (не дальше dist) и иногда пересекаясь какое-то расстояние (период sPeriod-1), а потом разойтись. Тада функция вернёт на сколь конкретно они развалились в финале. По терминологии одной оч продуманной системы это окончание фазы "спагетти"

Тока вот у меня ale002 возник сразу вопрос. Почему ты решил, что переменная iB это текущий бар? Странно тут, что не от нуля цикл, а от этого бара с индексов iB Получается что о нулевого или первого бара до бара с индексом iB мы в цикл не берём. А это уже не верно, как я вижу. Ведь это значения ближе в настоящему времени, ежели бары которые находятся дальше в истории.
я вот так имею ввиду:

PHP код:
for(int i=iB+1i<ni++) 

Там на мт4 написано про входные параметры:

Цитата:
Функция принимает:
- требуемый символ, таймфрейм и бар, с которого необходимо получить данные.
- и параметр dist - минимальное требуемое расстояние пересечение для его фиксации

Последний раз редактировалось hoz; 12.11.2012 в 21:49.
13.11.2012, 05:01
Аватар для ale002
ale002 ale002 вне форума ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,507 раз(а) / Репутация: 2533
Странно тут, что не от нуля цикл, а от этого бара с индексов iB Получается что о нулевого или первого бара до бара с индексом iB мы в цикл не берём. А это уже не верно, как я вижу. Ведь это значения ближе в настоящему времени, ежели бары которые находятся дальше в истории.
С кодом всё пучком - это ПОЛЬЗОВАТЕЛЬСКАЯ ФУНКЦИЯ, которую основной цикл скрипта может вызывать скока надо раз. Напр индикатор при запуске может её пару сотен тысяч раз дёрнуть - для каждого бара истории персонально, включая нулевой. А эксперт может проверять по каждому тику только нулевой

Цитата:
Почему ты решил, что переменная iB это текущий бар?
Для функции он текущий, т.е. самый свежий из разрешённых к использованию в расчётах
13.11.2012, 10:35
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
С кодом всё пучком - это ПОЛЬЗОВАТЕЛЬСКАЯ ФУНКЦИЯ, которую основной цикл скрипта может вызывать скока надо раз. Напр индикатор при запуске может её пару сотен тысяч раз дёрнуть - для каждого бара истории персонально, включая нулевой. А эксперт может проверять по каждому тику только нулевой


Для функции он текущий, т.е. самый свежий из разрешённых к использованию в расчётах

Ну а разве это не нулевой бар? Ведь последний бар из разрешённые к использованию обычно имеет индекс 0, или индекс 1, если важна цена закрытия. Как тогда его правильно будет объявить?
Я понимаю, что вопросы, возможно, очень простые, но я сколько чего не видел, и сам индикаторы писал, но вот с этим кодом столкнулся и стопорнулся. Уже понимаю суть, но не совсем.
16.11.2012, 12:27
Аватар для aufx
aufx aufx вне форума Интересующийся
Регистрация: 16.11.2012 / Сообщений: 26
Поблагодарили 2 раз(а) / Репутация: 3

По умолчанию Глобальные переменные терминала

Уважаемые профи!
Скрипт формирует глоб. перемен. терминала. Ее видно из меню терминала.
Но индикатор не хочет ее видеть, так и выдает в ошибке.
Если эту переменную создать в ручную из меню терминала то индикатор ее видит. Как сделать что бы индикатор увидел перем. созданную скриптом.
16.11.2012, 13:43
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Уважаемые профи!
Скрипт формирует глоб. перемен. терминала. Ее видно из меню терминала.
Но индикатор не хочет ее видеть, так и выдает в ошибке.
Если эту переменную создать в ручную из меню терминала то индикатор ее видит. Как сделать что бы индикатор увидел перем. созданную скриптом.
Скорее всего касяк в имени переменной. Перебей имя переменной в скрипте.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
aufx , eevviill 
17.11.2012, 07:15
Аватар для aufx
aufx aufx вне форума Интересующийся
Регистрация: 16.11.2012 / Сообщений: 26
Поблагодарили 2 раз(а) / Репутация: 3
Скорее всего касяк в имени переменной. Перебей имя переменной в скрипте.
Все заработало. Спасибо!!!
17.11.2012, 12:33
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Всем привет! Подскажите, как каждую свечу связать с функцией OrderProfit()? То есть, чтобы в коде можно было каждую свечу(всю свечу: и тело и тени) связать(как-то приравнять что-ли) с OrderProfit(). Чтобы было так - свеча открылась - смотрим какой профит, свеча длится - снова определяем профит и закрылась тоже смотрим на профит(OrderProfit()) . То есть связываем свечу с ордерпрофитом.
17.11.2012, 14:12
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от: Алекc1234
Всем привет! Подскажите, как каждую свечу связать с функцией OrderProfit()? То есть, чтобы в коде можно было каждую свечу(всю свечу: и тело и тени) связать(как-то приравнять что-ли) с OrderProfit(). Чтобы было так - свеча открылась - смотрим какой профит, свеча длится - снова определяем профит и закрылась тоже смотрим на профит(OrderProfit()) . То есть связываем свечу с ордерпрофитом.
Думаю таким образом не выйдет.
Надо приравнивать цену открытия(закрытия, хай, лоу) с ценой открытия ордера(OrderOpenPrice()).

PHP код:
int prof8= (Close[8]-OrderOpenPrice())/Point
17.11.2012, 15:26
Аватар для yggfyn
yggfyn yggfyn вне форума Активный участник
Регистрация: 02.05.2010 / Сообщений: 23
Поблагодарили 46 раз(а) / Репутация: 47
Уважаемые программисты, мне нужна Ваша помощь.. Если поможете буду очень благодарен ! Сам я не силен в программировании и последняя надежда на Вас. Перерыл весь интернет, но ничего подобного не нашел.

Суть.. есть советник, который работает на временном интервале H1. Что необходимо прописать во внешних или внутренних параметрах советника, чтобы он закрывал все открытые ордера по цене открытия Каждого нового часового бара. К примеру, если советник открыл ордер (неважно бай или селл) во временном периоде с 15.00 до 15.59, то ордер должен быть закрыт точно в 16.00, если советник открыл ордер во временном периоде с 16.00 до 16.59, то ордер должен быть закрыт точно в 17.00 и так далее. Есть ли такая функция ? И вообще возможно ли это реализовать. Спасибо !

Последний раз редактировалось yggfyn; 17.11.2012 в 15:33.
17.11.2012, 15:46
Аватар для ale002
ale002 ale002 вне форума ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,507 раз(а) / Репутация: 2533
"По цене открытия" - это одно, "точно в 17.00" - другое. Оба реализуются добавлением в код советника дополнительной функции, но 2й вариант требует ещё и запуска секундного таймера при инициализации сова, добавления в код отлова события onTimer, синхронизации с серверным временем и проч мороки. В любом разе без знания MQL этого не сделать, одних изменений настроек недостаточно
17.11.2012, 15:50
Аватар для yggfyn
yggfyn yggfyn вне форума Активный участник
Регистрация: 02.05.2010 / Сообщений: 23
Поблагодарили 46 раз(а) / Репутация: 47
Спасибо !.. Придется ручками закрывать открытый ордер в конце часа.. Вроде фигня, а мороки столько..
ale002 
17.11.2012, 16:46
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,032 раз(а) / Репутация: 9032
  • Отправить сообщение для eevviill с помощью Skype™
Спасибо !.. Придется ручками закрывать открытый ордер в конце часа.. Вроде фигня, а мороки столько..
Попробуй обратится в ветку Доработка ботов
18.11.2012, 08:28
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Думаю таким образом не выйдет.
Надо приравнивать цену открытия(закрытия, хай, лоу) с ценой открытия ордера(OrderOpenPrice()).

PHP код:
int prof8= (Close[8]-OrderOpenPrice())/Point
Спасибо большое. А не подскажете, как можно сделать, чтобы при Close[i] учитывалось бы несколько свечей. То есть скажем i равнялось бы от первой свечи до седьмой.
Ответить

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


Опции темы

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

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



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


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