Второй скрипт понятнее. в первом ну очень сложные вычисления. У Вас в обе стороны сова торгует? тогда Вам надо 2 уровня для бай и селл?
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
Rever27 пробуй так: mytime = TimeCurrent() - Seconds();
Действительно, просто и красиво. Спасибо, коллега ;)
я подкину тебе, ну так вот по секрету между нами девочками, лишь упрощенный код вычисления БУ линии. без учета свопов и комиссий.
дальше, я надеюсь, ты дотанцуешь сам.
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
В одно время бот торгует только в одну сторону, так что сильно усложнять не нужно.
Ок, спасибо, буду пробовать, смогу ли хоть что-то упрощенное ставить сам :)
Изучаю урок - советник на мартингейле. Уже 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);
}
}
СпойлерИзучаю урок - советник на мартингейле. Уже 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); через одну скобку вниз.
Переместите return(-1); через одну скобку вниз.
Ооо, спасибище, добрый человек!
Обновленный урок по написанию скриптов:
http://tradelikeapro.ru/izuchaem-mql-skriptyi/
Парни! Есть такой же скрипт, который считает цену маржинкола или стопаута, применительно к сетке? Или новую тему создать?
Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.
Изменено 10 марта, 2016 пользователем Kadett
Да поищи у Павла в сборниках. Там был по-моему индюк, который показывал цену БУ и стоп-аута.
Парни! Есть такой же скрипт, который считает цену маржинкола или стопаута, применительно к сетке?
Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.
Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт
Изменено 10 марта, 2016 пользователем voffka85
Подскажите, как на истории отфильтровать убыточные ордера от вывода средств? Т.е., советник ведет контроль/подсчет убытка за день и если убыток превышает заданное значение за торговый день - торговля останавливается. Вывод средств у меня попадает сейчас как убыток. Вопрос: как его, вывод, отделить от ордеров?
И еще вопрос: есть параметр для типа ордеров - "6" //OrderType() == 6//. Документация молчит о нем, кто знает, растолкуйте как с ним работать. Где-то читал, что его параметры у каждого брокера свои, как их определять?
Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.
Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт
Да нет,в уроке проверка по iMA.(11-я минута видео)
Здравствуйте. Возможно ли средствами MQL преобразовать число с плавающей точкой из Unicode в ANSI? Если нет, подскажите, в каком направлении копать.
if ( OrderOpenTime ( ) > Segodna ) sumPL += OrderProfit()+OrderCommission()+OrderSwap();
Тип ордера 6 и выше это не для МТ4 (имхо)
Вы имеете в виду преобразование числа в строку? Сейчас всё в Unicode для ANSII смотри функцию StringToCharArray
Нашел на просторах интернета рабочую софтину, которая делает вполне корректную разметку по Elliott Wave. Проблема в том, что индикатор (код открытый) который выводит разметку на график при компиляции выдает ошибку.
Ребята, посмотрите кто дружит с кодом, может получиться подправить.
Инструкция и индикаторы в архиве.
0ll, извиняюсь, наверное надо было поподробнее расписать. Имелось ввиду преобразование числа с плавающей точкой в Unicode в число с плавающей точкой в ANSI.
NickWelder хоть убей меня - не пойму какое отношение имеет кодировка символов к числу с плавающей точкой...
0ll, извиняюсь, наверное надо было поподробнее расписать. Имелось ввиду преобразование числа с плавающей точкой в Unicode в число с плавающей точкой в ANSI.
Кодировка это просто некая условность - с помощью какой цифры представить некую букву или графический символ. Число никак к этому отношения не имеет - только если преобразовать в символы.
Чтоб понять как Вам помочь, видимо надо узнать задачу целиком - как возник в Вашей голове столь затейливый вопрос?
Пишу советник, использующий в своей работе нейронную сеть. Советник реализуется с использованием MQL4, нейронка с использованием Fann 2.2 и Fann2MQL - её оболочки для MQL4. При обучении и тестах нейросеть отрабатывала отлично, а вот при её использовании в советнике на выходе она выдавала всякую ересь. Запускал нейронку через FannTool и давал ей на вход абсолютно те же самые данные - она отрабатывала их так, как должна. При обучении нейросети обучающую выборку ей пришлось давать в txt-файле в ANSI кодировке, так как при подаче файла в Unicode программа просто висла и отказывалась работать. Поэтому и подумал, что дело может быть в этом.
Исправил , компилируются..
Но при работе требует какой-то файл
2016.03.11 12:55:56.399 ScanWave Indicator v.0.2 USDCHF,H1: файл ResultAnalysisUSDCHF60.csv не обнаружен ошибка 5004
Дальше не разбирался
ScanWave_Indicator_v.0.2_fix.mq4
ScanWave_Indicator_v.0.2.1_fix.mq4
ScanWave_Indicator_v.0.2.2_fix.mq4
Исправил , компилируются..
Но при работе требует какой-то файл
2016.03.11 12:55:56.399 ScanWave Indicator v.0.2 USDCHF,H1: файл ResultAnalysisUSDCHF60.csv не обнаружен ошибка 5004
Дальше не разбирался
Спасибо! Отчет который создала программа называется ResultAnalysisEURUSD, его нужно переименовать руками ResultAnalysisEURUSD60. При условии, что вы открыли H1 на паре EURUSD.
Вечером буду разбираться, так-то вроде разметка появилась. :)
update
Все корректно работает, нужно только правильно экспортировать котировки из терминала.
Изменено 11 марта, 2016 пользователем fx2015
Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.
Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт
выкладываю детализацию с демосчета в итоге слился, погубило то что не открывал ордера на продажу, почти за сутки заработал 25 000 тысяч с депозита 10 000
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем