Обучение языку MQL4 под MetaTrader 4📌

От xbms, 13 апреля, 2013 в Уголок Программиста

#3251

Второй скрипт понятнее. в первом ну очень сложные вычисления. У Вас в обе стороны сова торгует? тогда Вам надо 2 уровня для бай и селл?

#3252


Rever27 пробуй так: mytime = TimeCurrent() - Seconds();


Действительно, просто и красиво. Спасибо, коллега ;)
#3253

я подкину тебе, ну так вот по секрету между нами девочками, лишь упрощенный код вычисления БУ линии. без учета свопов и комиссий.
дальше, я надеюсь, ты дотанцуешь сам.

Спойлер


double avgPrice = 0;
double sumLots = 0;
for (int order=OrdersTotal()-1; order >= 0; order--)
{
if(!OrderSelect(order, SELECT_BY_POS, MODE_TRADES))continue;
if (OrderSymbol()==sym && OrderMagicNumber()==Magic && OrderType() == orderType)
{

avgPrice += OrderOpenPrice()*OrderLots();
sumLots += OrderLots();
}
}

double newTakeProfit=avgPrice/sumLots;
newTakeProfit=NormalizeDouble(newTakeProfit,(int)MarketInfo(sym,MODE_DIGITS));



это код для одной стороны. если тебе надо для двусторонней торговли, то код немногим усложняется, а именно - нужно вычислить куда смотрит вся сеть(например у нас общая лотность на бай больше чем на селл) ордеров, и дальше вычесть из лотности бай лотность селл и играть уже с этой разницей лотности - от этой цифры уже и дальше вычисляй где линии БУ этой ВСЕЙ кучи ордеров.
для линии с учетом спредов и комиссии код намного сложнее, но ты с этим пока разберись, если что, позже объясню как вычислить с учетом всего.

ЗЫ: а ты не вставляй циклы в цикл. вызывай свою рукописную функцию вычисления линии БУ однократно там где тебе надо, ловкость рук и никакого мошенничества >:d

Изменено 4 марта, 2016 пользователем dermitay

#3254

В одно время бот торгует только в одну сторону, так что сильно усложнять не нужно.
Ок, спасибо, буду пробовать, смогу ли хоть что-то упрощенное ставить сам :)

#3255

Изучаю урок - советник на мартингейле. Уже 10 раз все перепроверила, все как на видео, но компилятор ругается. Выручайте! Во вложении полный код. А это функция в которую все уперлось.

Ошибка в строке с последней закрывающейся скобкой - '}' - not all control paths return a value

int FindLastOrderType()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() &&
OrderMagicNumber() == Magic)
return (OrderType());
}
return(-1);
}
}

Martin4.mq410 скач.

#3256


Спойлер

Изучаю урок - советник на мартингейле. Уже 10 раз все перепроверила, все как на видео, но компилятор ругается. Выручайте! Во вложении полный код. А это функция в которую все уперлось.

Ошибка в строке с последней закрывающейся скобкой - '}' - not all control paths return a value

int FindLastOrderType()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() &&
OrderMagicNumber() == Magic)
return (OrderType());
}
return(-1);
}
}




Переместите return(-1); через одну скобку вниз.
#3257


Переместите return(-1); через одну скобку вниз.



Ооо, спасибище, добрый человек!
#3259

Парни! Есть такой же скрипт, который считает цену маржинкола или стопаута, применительно к сетке? Или новую тему создать?

#3260

Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.

Test4.Martin_EMA.mq413 скач.

Изменено 10 марта, 2016 пользователем Kadett

#3261


Парни! Есть такой же скрипт, который считает цену маржинкола или стопаута, применительно к сетке?

Да поищи у Павла в сборниках. Там был по-моему индюк, который показывал цену БУ и стоп-аута.
#3262


Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.


Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт

Изменено 10 марта, 2016 пользователем voffka85

#3263

Подскажите, как на истории отфильтровать убыточные ордера от вывода средств? Т.е., советник ведет контроль/подсчет убытка за день и если убыток превышает заданное значение за торговый день - торговля останавливается. Вывод средств у меня попадает сейчас как убыток. Вопрос: как его, вывод, отделить от ордеров?

И еще вопрос: есть параметр для типа ордеров - "6" //OrderType() == 6//. Документация молчит о нем, кто знает, растолкуйте как с ним работать. Где-то читал, что его параметры у каждого брокера свои, как их определять?

#3264



Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.


Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт

Да нет,в уроке проверка по iMA.(11-я минута видео)
#3265

Здравствуйте. Возможно ли средствами MQL преобразовать число с плавающей точкой из Unicode в ANSI? Если нет, подскажите, в каком направлении копать.

#3266
mobidik считать просадку надо не по депозиту, а путём пересчёта ордеров с фильтром типа:
if ( OrderOpenTime ( ) > Segodna ) sumPL += OrderProfit()+OrderCommission()+OrderSwap();

Тип ордера 6 и выше это не для МТ4 (имхо)
#3267

Вы имеете в виду преобразование числа в строку? Сейчас всё в Unicode для ANSII смотри функцию StringToCharArray

#3268

Нашел на просторах интернета рабочую софтину, которая делает вполне корректную разметку по Elliott Wave. Проблема в том, что индикатор (код открытый) который выводит разметку на график при компиляции выдает ошибку.

Ребята, посмотрите кто дружит с кодом, может получиться подправить.
Инструкция и индикаторы в архиве.


ScanWave_v.0.2.zip18 скач.
sw1.png
sw5.png
ScanWave_v.0.2.png

#3269

0ll, извиняюсь, наверное надо было поподробнее расписать. Имелось ввиду преобразование числа с плавающей точкой в Unicode в число с плавающей точкой в ANSI.

#3270


0ll, извиняюсь, наверное надо было поподробнее расписать. Имелось ввиду преобразование числа с плавающей точкой в Unicode в число с плавающей точкой в ANSI.

NickWelder хоть убей меня - не пойму какое отношение имеет кодировка символов к числу с плавающей точкой...
Кодировка это просто некая условность - с помощью какой цифры представить некую букву или графический символ. Число никак к этому отношения не имеет - только если преобразовать в символы.
Чтоб понять как Вам помочь, видимо надо узнать задачу целиком - как возник в Вашей голове столь затейливый вопрос?
#3271

Пишу советник, использующий в своей работе нейронную сеть. Советник реализуется с использованием MQL4, нейронка с использованием Fann 2.2 и Fann2MQL - её оболочки для MQL4. При обучении и тестах нейросеть отрабатывала отлично, а вот при её использовании в советнике на выходе она выдавала всякую ересь. Запускал нейронку через FannTool и давал ей на вход абсолютно те же самые данные - она отрабатывала их так, как должна. При обучении нейросети обучающую выборку ей пришлось давать в txt-файле в ANSI кодировке, так как при подаче файла в Unicode программа просто висла и отказывалась работать. Поэтому и подумал, что дело может быть в этом.

#3272
NickWelder, StringToCharArray, как было сказано выше. Либо же переписать библиотеку под уникод, что не всегда бывает возможно.
#3273

Исправил , компилируются..

Но при работе требует какой-то файл
2016.03.11 12:55:56.399 ScanWave Indicator v.0.2 USDCHF,H1: файл ResultAnalysisUSDCHF60.csv не обнаружен ошибка 5004

Дальше не разбирался

ScanWave_Indicator_v.0.2_fix.mq414 скач.
ScanWave_Indicator_v.0.2.1_fix.mq413 скач.
ScanWave_Indicator_v.0.2.2_fix.mq426 скач.

#3274


Исправил , компилируются..

Но при работе требует какой-то файл
2016.03.11 12:55:56.399 ScanWave Indicator v.0.2 USDCHF,H1: файл ResultAnalysisUSDCHF60.csv не обнаружен ошибка 5004

Дальше не разбирался



Спасибо! Отчет который создала программа называется ResultAnalysisEURUSD, его нужно переименовать руками ResultAnalysisEURUSD60. При условии, что вы открыли H1 на паре EURUSD.

Вечером буду разбираться, так-то вроде разметка появилась. :)

update

Все корректно работает, нужно только правильно экспортировать котировки из терминала.

2016-03-11.png

Изменено 11 марта, 2016 пользователем fx2015

#3275



Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.


Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт

выкладываю детализацию с демосчета в итоге слился, погубило то что не открывал ордера на продажу, почти за сутки заработал 25 000 тысяч с депозита 10 000

DetailedStatement.zip10 скач.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025