denis77515 Опубликовано 29 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июня, 2013 Вроде переписал,только не понял где заменить GetMinPrice? Выдает ошибку именно сдесь. double GetMinPrice() //// перенёс вниз { double dLow = 100000; minprice; for (int i=1; i { minprice = iLow(Symbol(),0,i); if (minprice dLow = minprice; } return(dLow); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 29 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июня, 2013 double dLow = 100000; minprice;У тебя после 100000 стоит ";", и получается minprice не определена, надо ставить "," Добавлено: 29-06-2013 20:20:12Долго бился над ошибкой, сов сразу открывал максимально возможное количество ордеров пока хватало баланса. Сверился с выложенным на форуме, расхождений нет. Потом логически перепроверил, заменил (Bid = price + Step * Point) заработало. :dлогическая ошибка, заменить надо здесь: Если не ошибаюсь эта ошибка была уже обработана выше. Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 29 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июня, 2013 спасибо исправил,говорю тихо шифером шурша,едедет крыша не спеша . :d Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 29 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июня, 2013 Ты внимательно посмотри на место расставления и количество {} Потому что я когда тестил, заметил, что из-за неправильной расстановки {} советник открывал бесконечное количество ордеров, если не ошибаюсь... Точно сейчас не скажу просто... Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 29 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июня, 2013 я его полностью переписал,сейчас скомпилировал буду смотреть. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 29 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июня, 2013 я его полностью переписал,сейчас скомпилировал буду смотреть. Если что кидай, я тоже посмотрю, кстати поздравляю, твой ответ был 100-тым в теме :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 У меня просьба будет,к нему стоп лосс напрашивается,а как прикрутить его туда я пока не знаю.Идея такая,как только цена проходит пунктов 10 например,то ставится стоп на уровне без убытка общий для всех ордеров,потом тянется за ценой там через (N-пунктов) в общем закрывается либо по стопу либо по тейку как идея тебе,сможешь помочь ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 У меня просьба будет,к нему стоп лосс напрашивается,а как прикрутить его туда я пока не знаю.Идея такая,как только цена проходит пунктов 10 например,то ставится стоп на уровне без убытка общий для всех ордеров,потом тянется за ценой там через (N-пунктов) в общем закрывается либо по стопу либо по тейку как идея тебе,сможешь помочь ? Ну это трейлинг стоп называется. Идея не плохая. Но я только учусь, трейлинг никогда не писал еще. Надо подождать, когда кто-нибудь опытнее появится :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 ну что поделать будем ждать,да сам эксперементировать буду.к стати спасибо за подсказку,вот держи свежий. Добавлено: 30-06-2013 10:03:25Забыл еще написать, я его гонял на тесторе,вот только не увидел что б он открывал ордера SELL, почему не кто не подскажет ?Cool_Master___v_3_1_AUTO.mq4 Изменено 30 июня, 2013 пользователем denis77515 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Серега7317 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Забыл про нас чайников наш учитель... :-o А трейлинг прикрутить просто, вот готовый от Ритки . тралингатор.txt Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Мне не нужен просто трелинг стоп,вся фишка заключается в том что,когда ордера модифицируются и цена идет в сторону профита,ближе к нему,вот только тогда выставляется стоп лосс в уровень без убытка и начинает тянуться за ценой.общий ля всех ордеров находящихся в рынке.То есть все открытые ордера,закрываются либо по стопу,либо по тейку. Помойму доходчиво пояснил.А таких трелингов в сети море,у меня их штук пяток точно есть.Так они каждый стоп тянут отдельно для каждого ордера,мне нужен один для всех. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 ну что поделать будем ждать,да сам эксперементировать буду.к стати спасибо за подсказку,вот держи свежий. Добавлено: 30-06-2013 10:03:25Забыл еще написать, я его гонял на тесторе,вот только не увидел что б он открывал ордера SELL, почему не кто не подскажет ? Ордера на продажу не открываются по причине ошибки в нахождении цены максимума... поищи внимательно. И посмотри внимательно на условие открытия следующего колена для продаж....Забыл про нас чайников наш учитель... :-o А трейлинг прикрутить просто, вот готовый от Ритки . Да хватает Трейлингов в сети, но весь смысл в том чтоб самому под себя написать... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Romhacker Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 ну что поделать будем ждать,да сам эксперементировать буду.к стати спасибо за подсказку,вот держи свежий. Добавлено: 30-06-2013 10:03:25Забыл еще написать, я его гонял на тесторе,вот только не увидел что б он открывал ордера SELL, почему не кто не подскажет ? Я это ещё давно заметил. У тебя условия входа неправильные. У тебя получается, что всегда выполняется на покупку. У тебя так если цена Аск выше лоу, то купить, иначе, если цена ниже хая, продать. Получается сама цена должна находится внутри бара. А если цена находится внутри, то, естественно, будет всегда выполнться первое условие, т.е. на покупку. Надо написать так: if(Ask > maxprice){//Buy};else if(Bid //Sell}А у тебя так: if (Ask > minprice) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic,0, Blue); if (ticket > 0) { TP = NormalizeDouble(Ask + TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(), 0, TP, 0); } } else if(Bid maxprice) { ticket =OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red); if (ticket > 0) { TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(), 0, TP, 0); } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 ну что поделать будем ждать,да сам эксперементировать буду.к стати спасибо за подсказку,вот держи свежий. Добавлено: 30-06-2013 10:03:25Забыл еще написать, я его гонял на тесторе,вот только не увидел что б он открывал ордера SELL, почему не кто не подскажет ? Я это ещё давно заметил. У тебя условия входа неправильные. У тебя получается, что всегда выполняется на покупку. У тебя так если цена Аск выше лоу, то купить, иначе, если цена ниже хая, продать. Получается сама цена должна находится внутри бара. А если цена находится внутри, то, естественно, будет всегда выполнться первое условие, т.е. на покупку. Надо написать так: if(Ask > maxprice){//Buy};else if(Bid //Sell}А у тебя так: if (Ask > minprice) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic,0, Blue); if (ticket > 0) { TP = NormalizeDouble(Ask + TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(), 0, TP, 0); } } else if(Bid maxprice) { ticket =OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red); if (ticket > 0) { TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(), 0, TP, 0); } } Согласен, но и ошибок в коде хватает. После того как поправил получается что он открывает сперва Бай, потом Селл и тупо работает с продажами, потом когда срабатывает ТП у продаж, опять открывает Бай, потом Селл и работает с продажами и т.д.Тоесть с ценами МаксПрайс, МинПрайс, как я думаю нужно работать на пробитие. Изменено 30 июня, 2013 пользователем Dimasyok Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Что вы от меня хотите,я если начал заниматься этим,месяц,может не многим больше.Вполне естественно,что и ошибок море.Я что от делать не чего, сижу на форуме.Так вы ребята по опытнее,вот и подсказываете чайнику.Спасибо за это,так качественного материала по обучению,просто пока нету.Надеюсь господин xbms сделает это. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Что вы от меня хотите,я если начал заниматься этим,месяц,может не многим больше.Вполне естественно,что и ошибок море.Я что от делать не чего, сижу на форуме.Так вы ребята по опытнее,вот и подсказываете чайнику.Спасибо за это,так качественного материала по обучению,просто пока нету.Надеюсь господин xbms сделает это. Ну ты правишь, то что тебе пишут ?:) Мне сейчас уходить пора, вечером буду, чем смогу, тем помогу. Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 спасибо свяжемся. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Серега7317 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Пример прикрутки трала. Test2__байстоп_селстоп_с_трейлингстопом.mq4.txt Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Люди поясните чайнику если мы получаем из вот этого выражения наименьшею цену , указанных BarCount,double GetMinPrice() { double dLow = 100000, minprice; for (int i=1; i { minprice = iLow(Symbol(),0,i); if (minprice dLow = minprice; } return(dLow); }то логически будет что; if(Bid { ticket =OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red); if (ticket > 0) { TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(), 0, TP, 0);или я опять чего то не догнал. Условие на покупку один в один,так вот в покупку открывает ордера в продажу нет.В чем опять я ошибаюсь не пойму. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 Люди поясните чайнику если мы получаем из вот этого выражения наименьшею цену , указанных BarCount,double GetMinPrice() { double dLow = 100000, minprice; for (int i=1; i { minprice = iLow(Symbol(),0,i); if (minprice dLow = minprice; } return(dLow); }то логически будет что; if(Bid { ticket =OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red); if (ticket > 0) { TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(), 0, TP, 0);или я опять чего то не догнал. Условие на покупку один в один,так вот в покупку открывает ордера в продажу нет.В чем опять я ошибаюсь не пойму. Ты определись, ты открываешь ордера на пробитие или на отскоке... хотя на отскоке не получится при данном кодеif(Bid условие на пробитиеИ опять, я тебе говорил проверь функции нахождения максимума. У тебя не находится максимум в результате не получается продажа.Но в основе проблема в самой ТС. Ты хочешь, чтоб если цена был выше минимума за 2 бара ты покупал и если ниже максимума продвать. Получается у тебя постоянное условие как на покупку так и на продажу, в результате он покупает, потому что условие покупки в коде стоит раньше, а потом продавать то уже и некак. Изменено 30 июня, 2013 пользователем Dimasyok Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 должно открыться так,сравнится цена двух предыдущих баров,и если цена ниже последнего,то открываем рыночный ордер на продажу,в покупку на оборот. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 должно открыться так,сравнится цена двух предыдущих баров,и если цена ниже последнего,то открываем рыночный ордер на продажу,в покупку на оборот. Тогда вот условие на покупку: if (Close[1] > maxprice && CountTrades()==0)Close[1] - цена закрытия предыдущего бара.Аналогично на продажу:if(Close[1] Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 вставил не работает,посмотри брат запарился уже на смерть.Потом скинь мне его,возьму книжку и буду сравнивать.чего и как он там работает. ЧЕРНОВИК12.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Romhacker Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 У тебя здесь ошибка double GetMaxPrice() //// перенёс вниз { double dHigh = 0, maxprice; for (int i=1; i { maxprice = iHigh(Symbol(),0, i); if (maxprice dHigh) dHigh = maxprice; } return(dHigh); }Знак > должен стоять.Добавлено: 30-06-2013 15:52:54надо так:if (maxprice > dHigh) dHigh = maxprice; Изменено 30 июня, 2013 пользователем Romhacker Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dimasyok Опубликовано 30 июня, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июня, 2013 У тебя здесь ошибка double GetMaxPrice() //// перенёс вниз { double dHigh = 0, maxprice; for (int i=1; i { maxprice = iHigh(Symbol(),0, i); if (maxprice dHigh) dHigh = maxprice; } return(dHigh); }Знак > должен стоять.Добавлено: 30-06-2013 15:52:54надо так:if (maxprice > dHigh) dHigh = maxprice; Вот умник:) Пусть бы сам нашел :D Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти