samuliak Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 Программисты, помогите исправить ошибки в тестере. Я где то накосячил с СЛ и способом открытием сделки. Компилируется без проблем, но в тестере ошибки 130 и 4107. Прикрепляю сову и индикатор, по которому написана сова. Донжиан + - это сова. azzx_donchian_1_0 - индюк. Донджиан_+.mq4azzx_donchian_1_0.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 Привет всем,ребята поможете с этим делом,опять чего то напутал,пишет не сбалансированная скобка,а какая я найти не могу ? Отложники.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 Программисты, помогите исправить ошибки в тестере. Я где то накосячил с СЛ и способом открытием сделки. Компилируется без проблем, но в тестере ошибки 130 и 4107. Прикрепляю сову и индикатор, по которому написана сова. Донжиан + - это сова. azzx_donchian_1_0 - индюк. Здесь посчитана величина TP и SL: Цитата Tp = NormalizeDouble((UP_CANAL - DOWN_CANAL)*Point, Digits);Sl = NormalizeDouble((UP_CANAL - DOWN_CANAL)*Point, Digits); На Point не надо множить. Имеем, например, 0,0050. Теперь, это нужно прибавить или отнять от цены открытия ордера. Цитата openBuyStop = NormalizeDouble((UP_CANAL + Indent)*Point, Digits); openSellStop = NormalizeDouble((DOWN_CANAL - Indent)*Point, Digits); Здесь лишние скобки. Цитата openBuyStop = NormalizeDouble(UP_CANAL + Indent*Point, Digits); openSellStop = NormalizeDouble(DOWN_CANAL - Indent*Point, Digits); Это лишнее: Цитата Tp *= 10;Sl *= 10; Цитата if(MathAbs(OrderOpenPrice() - UP_CANAL) > 0.1*Point) 0,1*Point - не мало?Для четырёхзнака 0,1*0,0001=0,00001 Изменено 4 августа, 2013 пользователем Vorchunozavr Ссылка на сообщение Поделиться на другие сайты More sharing options...
samuliak Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 Программисты, помогите исправить ошибки в тестере. Я где то накосячил с СЛ и способом открытием сделки. Компилируется без проблем, но в тестере ошибки 130 и 4107. Прикрепляю сову и индикатор, по которому написана сова. Донжиан + - это сова. azzx_donchian_1_0 - индюк. Здесь посчитана величина TP и SL: Цитата Tp = NormalizeDouble((UP_CANAL - DOWN_CANAL)*Point, Digits);Sl = NormalizeDouble((UP_CANAL - DOWN_CANAL)*Point, Digits); На Point не надо множить. Имеем, например, 0,0050. Теперь, это нужно прибавить или отнять от цены открытия ордера. Цитата openBuyStop = NormalizeDouble((UP_CANAL + Indent)*Point, Digits); openSellStop = NormalizeDouble((DOWN_CANAL - Indent)*Point, Digits); Здесь лишние скобки. Цитата openBuyStop = NormalizeDouble(UP_CANAL + Indent*Point, Digits); openSellStop = NormalizeDouble(DOWN_CANAL - Indent*Point, Digits); Это лишнее: Цитата Tp *= 10;Sl *= 10; Цитата if(MathAbs(OrderOpenPrice() - UP_CANAL) > 0.1*Point) 0,1*Point - не мало?Для четырёхзнака 0,1*0,0001=0,00001 Большое спасибо, все исправил. Вот только все равно идет ошибка 130. Можете ли вы сделать так, что бы СЛ и ТП были равны границе канала. И еще при каждом баре у меня модифицируется отложка и цена никак не может её захватить. плюс верхние отложки не ставятся... пожалуйста, исправьте!Донджиан_+.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 samuliak Цитата СЛ и ТП были равны границе канала В смысле, на покупку: БайСтоп на верхней границе, СЛ на нижней, ТП = СЛ, только вверх (СеллСтоп, всё наоборот)?Т. е. Пробойная стрратегия?. Цитата И еще при каждом баре у меня модифицируется отложка и цена никак не может её захватить. А зачем тогда это написано: if(MathAbs(OrderOpenPrice() - UP_CANAL) > 0.0001*Point) OrderModify(OrderTicket(), openBuyStop, 0, Tp, 0)? (и 0.0001*Point - это меньше чем было, почему не 1*Point?)Последнее значение iCustom - shift, лучше вынести во внешние переменные и экспериментировать (для начала поставить 1, а не 0). Цитата плюс верхние отложки не ставятся... пожалуйста, исправьте! Верхние отложки не ставяться, из-за неправильного TP... (я же написал, ту цифру, что мы получили, нужно прибавлять, или отнимать от цены открытия ордера)Чтобы исправить, нужно знать подробные условия стратегии (в частности - нужно таскать отложку за границей канала, или нет). Ссылка на сообщение Поделиться на другие сайты More sharing options...
samuliak Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 samuliak Цитата СЛ и ТП были равны границе канала В смысле, на покупку: БайСтоп на верхней границе, СЛ на нижней, ТП = СЛ, только вверх (СеллСтоп, всё наоборот)?Т. е. Пробойная стрратегия?. Цитата И еще при каждом баре у меня модифицируется отложка и цена никак не может её захватить. А зачем тогда это написано: if(MathAbs(OrderOpenPrice() - UP_CANAL) > 0.0001*Point) OrderModify(OrderTicket(), openBuyStop, 0, Tp, 0)? (и 0.0001*Point - это меньше чем было, почему не 1*Point?)Последнее значение iCustom - shift, лучше вынести во внешние переменные и экспериментировать (для начала поставить 1, а не 0). Цитата плюс верхние отложки не ставятся... пожалуйста, исправьте! Верхние отложки не ставяться, из-за неправильного TP... (я же написал, ту цифру, что мы получили, нужно прибавлять, или отнимать от цены открытия ордера)Чтобы исправить, нужно знать подробные условия стратегии (в частности - нужно таскать отложку за границей канала, или нет). Да, стратегия пробойная. Смысл стратегии такой: есть индикатор канал Донжиана. На верхний и нижний границе канала (плюс Индент - отступ) ставятся отложка бай стоп и селл стоп. ТП и СЛ равно диапазону канала в время, когда зацепилась сделка. При каждом новом баре отложка ставиться по новому, то есть, модифицируется. Помогите пожалуйста, как правильно написать, что бы все работало или исправьте сову. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 samuliakЕсли грубо, то так...Донджиан_001.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Cerebellum Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 Привет всем,ребята поможете с этим делом,опять чего то напутал,пишет не сбалансированная скобка,а какая я найти не могу ? Ты скобки то расставь по отступам, а то черт ногу сломит - все скобки на одном уровне. Изменено 4 августа, 2013 пользователем Cerebellum Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 4 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 августа, 2013 Привет всем,ребята поможете с этим делом,опять чего то напутал,пишет не сбалансированная скобка,а какая я найти не могу ? Отложники_001.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Playbo$$ Опубликовано 8 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 августа, 2013 Кто-то вообще смотрит уроки?Нужны они кому-то? Конечно, очень нужны!!! Большое Вам спасибо!!! =d> Ссылка на сообщение Поделиться на другие сайты More sharing options...
trd100vx Опубликовано 9 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2013 Подскажите как запилить в советник 2 кнопки Buy и Sell и 1 поле для ввода цены. Чтобы это все было на графике в окне терминала. Значение поля ввода нужно присвоить переменной Open_Price к примеру, а при нажатии Buy вызывать функцию Open_Buy(); при нажатии Sell соответственно Open_Sell();Такое вообще возможно средствами MQL4?Либо как вариант просто сделать одну кнопку и при ее нажатии вызывать нужную функцию. Ссылка на сообщение Поделиться на другие сайты More sharing options...
ostrik Опубликовано 10 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2013 Подскажите как запилить в советник 2 кнопки Buy и Sell и 1 поле для ввода цены. Чтобы это все было на графике в окне терминала. Значение поля ввода нужно присвоить переменной Open_Price к примеру, а при нажатии Buy вызывать функцию Open_Buy(); при нажатии Sell соответственно Open_Sell();Такое вообще возможно средствами MQL4?Либо как вариант просто сделать одну кнопку и при ее нажатии вызывать нужную функцию. Самый простой способ это использование mt4gui, на скринах примеры моих реализаций...Quik-Option.jpgQuik.jpg123.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sorm Опубликовано 13 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 августа, 2013 Добрый день! Спасибо большое за видео, для новичка программировании под MT очень хороший материал. Поправил некоторые ошибки в своих трейлинг-стопах, которые писал сам. Просьба - интересует работа с осцилляторами, такими как стохастик или MACD. Можно ли записать материал по настройке советника на данные индикаторы - какая-нибудь простейшая стратегия работы по пересечениям? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 18 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 августа, 2013 Всем привет!xbms, спасибо за очередной урок!Что-то тихо. Наверное, все ошибку ищут :-?Часто скальпирую, так что скриптами активно пользуюсь. Удобно устанавливать "горячие клавиши" - купить одним лотом, продать другим, выставить один ТП-СЛ, поменять на другой... а потом закрыть всё сразу и пойти вагоны разгружать :-bНаписал первое задание для всех пар. Второе, только для инструмента, на котором запускается скрипт. Подключил WinUser32.mqh (предпочитаю, чтобы скрипт спрашивал разрешение, прежде чем закрывать что-то).Третье. Ничего не нашёл, кроме того, что Digits считает по символу на котором запущен скрипт и если запустить, например на металлах, то ТП, СЛ и проскальзывание останутся мелкими (для пятизнака). Решить можно, сделав как во второй части урока, или убрать из кода проверку на Digits (для меня иногда и профит в 35 достаточен, ну и slippage 5 (на пятизнаке), так что я за второй вариант). Отложки_001.mq4Реверс_001.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
samuliak Опубликовано 21 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 августа, 2013 Парни, помогите исправить советника!! Задумка такая, он в 18 часов выставляет отложенные ордера на экстремумах за 12 свечей. Я вроде все сделал, но вылезает ошибка 130 и 4107. Можете исправить ? советник для нефти, потому я не знаю, как там правильно на знаки проверить. Код совы: Цитата //+------------------------------------------------------------------+//| Нефть.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2013, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"extern double Lot = 0.1;extern int TakeProfit = 70;extern int StopLoss = 250;extern int Indent = 5;extern int Slippage = 5;extern int Magic = 47786245;extern double Cur_Hour = 18.00;double high, low, SL, TP;//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init() { return(0); }//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit() { return(0); }//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start() { double Buy_Stop, Sell_Stop; Buy_Stop = NormalizeDouble(high, Digits); Sell_Stop = NormalizeDouble(low, Digits); SL = NormalizeDouble(StopLoss, Digits); TP = NormalizeDouble(TakeProfit, Digits); high = NormalizeDouble(iHighest(Symbol(), 0, MODE_HIGH, 12, 1), Digits); low = NormalizeDouble(iLowest(Symbol(), 0, MODE_LOW, 12, 1), Digits); if(TimeHour(TimeCurrent()) == Cur_Hour && OrdersTotal() == 0) { OrderSend(Symbol(), OP_BUYSTOP, Lot, Buy_Stop, Slippage, SL, TP, "", Magic, 21, Blue); OrderSend(Symbol(), OP_SELLSTOP, Lot, Sell_Stop, Slippage, SL, TP, "", Magic, 21, Blue); } return(0); }//+------------------------------------------------------------------+ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 21 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 августа, 2013 советник для нефти, потому я не знаю, как там правильно на знаки проверить А зачем там знаки проверять?Главная ошибка - не посчитаны SL и TP. И считать их надо, после условия и отдельно для каждого ордера. Цитата Здесь важно понять, для чего нужна Point (размер пункта текущего инструмента в валюте котировки). Умножая наш SL в 50 пунктов на Point, получаем (4-х знаке) 0,0050 (теперь его можно вычитать из цены, или прибавлять). И почему, сначала считаются Buy_Stop и Sell_Stop, а потом high и low? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ubique Опубликовано 23 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 августа, 2013 \M/ Изменено 25 августа, 2013 пользователем Ubique Ссылка на сообщение Поделиться на другие сайты More sharing options...
RaM Опубликовано 25 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2013 и тишина в ветке...либо всё понятно и погнали дальше, либо тема нафиг не нужна и желание научиться чему-то было сиюминутным? У меня вопрос по этой теме: После создания циклов вычисления цен(как по видео),произвожу компиляцию(как по видео).В ответ инструментарий выдаёт ошибки : Функциям GetMinPrice и GetMaxPrice не определён DLL,а так же переменные i и dPrice уже определены.В чём соль?Добавлено: 26-08-2013 03:02:58Всё это по второму уроку. Изменено 26 августа, 2013 пользователем RaM Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 26 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 августа, 2013 RaMКод бы посмотреть... (под спойлером)UbiqueПопробовал увеличить shift (последний параметр iMA), вроде отрабатывает все пересечения. Спойлер double r = iMA(Symbol(), 0, 9, 0, MODE_SMA, PRICE_CLOSE, 1); //red linedouble pr = iMA(Symbol(), 0, 9, 0, MODE_SMA, PRICE_CLOSE, 2); //previous red linedouble b = iMA(Symbol(), 0, 18, 0, MODE_SMA, PRICE_CLOSE, 1); //blue linedouble pb = iMA(Symbol(), 0, 18, 0, MODE_SMA, PRICE_CLOSE, 2); //previous blue line (r-b>mindiff*Point) - иногда полезна, иногда нет... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 27 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2013 Добрый день!Подскажите как исправить ошибку 130? И можно ли вообще её исправить?Сова доливает ордера. Например Открывается первый ордер с магиком-1 в обе стороны. Когда цена прошла в любую сторону например 20 пунктов, сова открывает новый ордер с магиком-2 по тренду. Модифицирует его все нормально, но когда через следующие 20 пунктов доливает еще один ордер, то идет ошибка 130, потому как магик следующего тоже магик-2 И по этому идет ошибка, я это понимаю, Но можно ли как то прописать в модификации эту ситуацию.Первые ордера по магику обслуживаются отдельно, По магику -2 тоже отдельно if(tip==0 && tp1!=tp && mn1==Magic && ko1>OrderPlus) OrderModify(ticket1,price1,OrderStopLoss(),tp1,0); if(tip==1 && tp2!=tp && mn1==Magic && ko2>OrderPlus) OrderModify(ticket1,price1,OrderStopLoss(),tp2,0);//---- Долив ордеров if(tip==0 && tp3!=tp && mn1==Magic2 && ko3>1) OrderModify(ticket1,price1,OrderStopLoss(),tp3,0); if(tip==1 && tp4!=tp && mn1==Magic2 && ko4>1) OrderModify(ticket1,price1,OrderStopLoss(),tp4,0); Ссылка на сообщение Поделиться на другие сайты More sharing options...
RaM Опубликовано 27 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2013 'GetMinPrice' - no dll defined for the imported function C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (37, 11);'GetMaxPrice' - no dll defined for the imported function C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (55, 11);'dPrice' - variable already defined C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (59, 13);'i' - variable already defined C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (60, 13);Вот вся инфа по этим ошибкам.Извиняюсь,не понял как спойлеры лепить. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 27 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2013 Сова усредняет свои ордера если пошел в минус, а когда выставляет долив то он считает его своим (по магику) и пробует его усреднить по отношению к уже взятому ордеру. Но взятый ранее ведь в плюсе и по этому идет ошибка, Я просто как бы начинающий и не знаю как его научить что бы он новый ордер не усреднял по отношению к уже взятому, Ну как бы считал правдой или неправдой. Все работает отлично Но как доходит до долива - ошибка, Когда цена откатывает ошибка исчезает и он все нормально усредняет тралит и тд. Изменено 27 августа, 2013 пользователем Enter Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vorchunozavr Опубликовано 27 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2013 RaMhttp://tlap.com/forum/forum-trade-like-a-pro/14/bolshoe-faq-po-forumu/2421Enter130 - неправильные стопы.Если нужно работать с каждым ордером отдельно, можно попробовать использовать тикет... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 27 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2013 Цитата Enter130 - неправильные стопы.Если нужно работать с каждым ордером отдельно, можно попробовать использовать тикет... Спасибо!!! Вроде дошло. Я как то не подумал!!! Ссылка на сообщение Поделиться на другие сайты More sharing options...
RaM Опубликовано 27 августа, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2013 Vorchunozavr,спасибо вроди понял.Вот сейчас и попробуем. :) Спойлер 'i' - variable already defined C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (60, 13) Спойлер 'dPrice' - variable already defined C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (59, 13) Спойлер 'GetMaxPrice' - no dll defined for the imported function C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (55, 11) Спойлер 'GetMinPrice' - no dll defined for the imported function C:\Program Files (x86)\Alpari Limited MT4\experts\Test2.mq4 (37, 11) Добавлено: 27-08-2013 20:40:49 :dПолучилось,один в другой закинул! >:d Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти