Ваши вопросы по языку MQL4

gh68

Активный участник
Название пользовательского индикатора полностью зависит от фантазии программиста, или того кто его заказывал программисту, или того кто его переименовал.
По этому лучше спрашивать у автора, что там за аббревиатуры.

Нашел ответ на свой вопрос который я задавал тут http://forexsystemsru.com/yazyk-programmirovaniya-mql4/65289-vashi-voprosy-po-yazyku-mql4-270.html#post1226419.

Младен когда доделывает или совершенствует индюк делает это приписку. NMC расшифровывается как no more crap, дословно "теперь без дерьма"
Но многие подхватили это обозначение и стали совать везде куда только можно. Поэтому щас каждый пятый индикатор с такой припиской, и она теряет свою ценность
 
  • Like
Реакции: Ugar

darkevil

Активный участник
Странная математика языка MQL4.
Собственно вопрос как работает сравнение значений в MQL4?

Примитивная работа советника где функции возвращают либо 1.0 либо -1.0 при этом таких функций несколько в конечном итоге итоги функций складываются и сравниваются со значением допустим использую 4ре функции по логике максимальное значение может быть либо 4.0 либо -4.0 и это значение сравнивается естественно с 4.0 и -4.0.
Все это дело выводится в лог но тут творятся чудеса 1.0 == 4.0, -1.0 == -4.0, какая-то фантастика мать ее. Пишу немного на java но такой дебилизм встречаю впервые.
 

Ugar

Гуру форума
Странная математика языка MQL4.
Собственно вопрос как работает сравнение значений в MQL4?

Примитивная работа советника где функции возвращают либо 1.0 либо -1.0 при этом таких функций несколько в конечном итоге итоги функций складываются и сравниваются со значением допустим использую 4ре функции по логике максимальное значение может быть либо 4.0 либо -4.0 и это значение сравнивается естественно с 4.0 и -4.0.
Все это дело выводится в лог но тут творятся чудеса 1.0 == 4.0, -1.0 == -4.0, какая-то фантастика мать ее. Пишу немного на java но такой дебилизм встречаю впервые.
1.0 не может быть равна 4.0. Так же как -1.0 не может быть равна -4.0. Где то косяк в вычислениях.
А вот 1.0 запросто может быть не равен 1.0. Не надо сравнивать вещественные типы на ==. Погрешности мать их.
 

Flagman666

Интересующийся
помогите пожалуйста разобраться:
установил терминал и советник в VPS запустил советник, но он сделки не открывает вылезают ошибки
License Full Unlimited USDCHF,H1: invalid ticket for OrderClose function

_https://docviewer.yandex.ru/?url=ya-disk%3A%2F%2F%2Fdisk%2Fтрейдер%2FДокумент%20Microsoft%20Word.docx&name=Документ%20Microsoft%20Word.docx&c=58b71b9daa48

помогите разобраться
 
Последнее редактирование модератором:

Ugar

Гуру форума
помогите пожалуйста разобраться:
установил терминал и советник в VPS запустил советник, но он сделки не открывает вылезают ошибки
License Full Unlimited USDCHF,H1: invalid ticket for OrderClose function

_https://docviewer.yandex.ru/?url=ya-disk%3A%2F%2F%2Fdisk%2Fтрейдер%2FДокумент%20Microsoft%20Word.docx&name=Документ%20Microsoft%20Word.docx&c=58b71b9daa48

помогите разобраться
Ссылка требует ввода твоего пароля.
Судя по описанной ошибке, надо обратиться к автору советника.
 
Последнее редактирование модератором:

Flagman666

Интересующийся
на терминале Альпари работает, а на Forex4you появляются ошибки и торговать не хочет
 

ansol

Местный знаток
Может советник работает только по одной запущенной копии? Есть торговые приложения,которые так работают.
Ошибка "invalid ticket for OrderClose function" больше похожа на кривизну в коде, чем на защиту от копирования.
 

step1

Активный участник
Здравствуйте!
Можете помочь с кодом в советник.
Нужен код который фиксирует баланс=средства при отсутствии открытых ордеров и при достижении прироста средств на процент/долю к первоначальному балансу (указывается в настройках советника) закрывает все ордера (и рыночные и отложенные) и перезапускает работу советника заново.
Спасибо!
 

gince

Местный знаток
Привет знатокам.
Возник такой вопрос. Есть два индикатора. Первый основной и стаит на одном тф, а второй стоит на другом ТФ. Числовые значения с первого передаю на второй передаю через глобальные переменные. Как передать значение "text" текстовой переменной name
Код:
string name="text";
с первого индикатора на второй.
Есть ли какие решения
 

eevviill2

Местный знаток
Привет знатокам.
Возник такой вопрос. Есть два индикатора. Первый основной и стаит на одном тф, а второй стоит на другом ТФ. Числовые значения с первого передаю на второй передаю через глобальные переменные. Как передать значение "text" текстовой переменной name
Код:
string name="text";
с первого индикатора на второй.
Есть ли какие решения


1)Название терминальной переменной будет передаваемым текстом. Число идентификатором.
PHP:
GlobalVariableSet
GlobalVariableGet
2)Также можно через терминальную переменную передать 4 цифры для каждой буквы в алфавите.
3)Или ещё можно поигратся с цифры в Char и наоборот.
4) Или название терминальной перемнной будет иметь идентификатор+текст.
PHP:
GlobalVariableSet("inds_"+text,0);
 
Последнее редактирование:

freshwind

Новичок форума
подскажите как из n-последних свечей подсчитать в пунктах отдельно бычьи, отдельно медвежьи.
 

vladradon

Программист
подскажите как из n-последних свечей подсчитать в пунктах отдельно бычьи, отдельно медвежьи.
А что конкретно нужно подсчитать? Сумму разниц High/Low, Open/Close, разницу между максимальными и минимальными значениями на графике у n свечей?
 

freshwind

Новичок форума
А что конкретно нужно подсчитать? Сумму разниц High/Low, Open/Close, разницу между максимальными и минимальными значениями на графике у n свечей?

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

Умные люди посоветовали такой алгоритм (к сожалению, без указания функций...)

"Нужно составить цикл. Предварительно задав переменные суммы бычьих и медвежьих свечей равных нулю. Далее в цикле при условии, что например свеча бычья, суммировать переменную суммы бычьей свечи к телу свечи и снова обозначать ее переменной суммой бычьей свечи. Так-же для медведей. Таки когда цикл достигнет n свечей - прерывать."

Я по вечерам пытаюсь учить mql, но голова вечером плохо соображает, да и возраст уже не тот...
 

vladradon

Программист
Нужно составить цикл.
Что-то типа этого:
PHP:
int n=100;
 int Bears=0;
 int Bulls=0;
 ENUM_TIMEFRAMES TF=PERIOD_CURRENT;

 for(int i=1; i<=n; i++)
   {
    if(iOpen(_Symbol,TF,i)>iClose(_Symbol,TF,i))
       Bears+=(int)(NormalizeDouble(iOpen(_Symbol,TF,i)-iClose(_Symbol,TF,i),_Digits)/_Point);
    if(iOpen(_Symbol,TF,i)<iClose(_Symbol,TF,i))
       Bulls+=(int)(NormalizeDouble(iClose(_Symbol,TF,i)-iOpen(_Symbol,TF,i),_Digits)/_Point);
   }
Bears - сумма медвежьих, Bulls - бычьих, n - количество свечей без текущей, TF - таймфрейм (по умолчанию текущий).
 
Последнее редактирование:

eevviill2

Местный знаток
Тупые МетаКроты, браво!

Получить данные(символ,тф,объекты) не текущего графика с советника нельзя! :laugh::laugh:

Открываем 2 графика с одним и тем же символом,на одном исполняем код.
PHP:
long currChart=ChartFirst();  
int i=0;
   while(i<100) 
     { 
      if(currChart!=ChartID() && ChartSymbol(currChart)==Symbol()
      )
      {
      Alert(ChartSymbol(currChart)," ",ChartPeriod(currChart));
      break;
      }
      
       currChart=ChartNext(currChart); 
      if(currChart<0) break; 
      i++;
     }
А где алерт?o_o
Ну тупые метаКроты. Это настолько гениально что может сравнится только с выпуском mql5:laugh:
 
Последнее редактирование:
Верх