arthur0001 Опубликовано 2 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 февраля, 2014 вы хоть объясните, стоит ли продолжать это обучение, или уже этот урок не поможет в создании советников? конечно стоит учи!!!! Смотри все уроки практикуй! а томот просто актуализируешься! ничо там сложного нет! Читай документацию очень Важно!!! Кстате еслиб ты с первого урока начинал ты бы вопрос про start не задавал! в первом же уроке говорится что start самая главная часть. но спасибо, буду изучать Смотри дальше там говорится что старт это функция которая принимает и реагирует на каждый тик терминала! ну вот тебе и void onTick() {вместо старт понятнее!!! ясно, виноват, буду изучать, спасибо!) Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 2 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 февраля, 2014 Народ а что с котировками? Я открыл терминал я с Альпари, а у Меня там уже 6 знаков и на золоте 7!!! Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 3 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 февраля, 2014 Господа программисты ,разъясните плиз у индикаторов стохастик имеются уровни 20, 80. Или MACD с уровнем 0.так вот вопрос как взять значение индикатора когда он находится ниже 20 или выше 80 основная и сигнальная линия.либо пересекаются за этими уровнями.значение индикаторов я вроде бы взял,а вот что дальше с ними делать не знаю. Stoh=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0); StohSignal=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0);Macd=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,0); MacdSignal=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,0); Ссылка на сообщение Поделиться на другие сайты More sharing options...
Анатолий Всемогущий Опубликовано 3 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 февраля, 2014 Подскажите пожалуйста почему не удаляется отложенные ордера Спойлер if (Close2 > ima && Close2 { Price = NormalizeDouble(Close1 + Delta * Point, Digits); double StepB = NormalizeDouble(Price - Step * Point, Digits); ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, Price, Slippage, 0, 0, "", Magic, 0,Green); if(ticket>0) { TP = NormalizeDouble(Price + TakeProfit * Point, Digits); SL = NormalizeDouble(Price - StopLoss * Point, Digits); OrderModify(ticket, Price, SL, TP, 0); if (Ask } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 3 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 февраля, 2014 Подскажите пожалуйста почему не удаляется отложенные ордера Спойлер if (Close2 > ima && Close2 { Price = NormalizeDouble(Close1 + Delta * Point, Digits); double StepB = NormalizeDouble(Price - Step * Point, Digits); ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, Price, Slippage, 0, 0, "", Magic, 0,Green); if(ticket>0) { TP = NormalizeDouble(Price + TakeProfit * Point, Digits); SL = NormalizeDouble(Price - StopLoss * Point, Digits); OrderModify(ticket, Price, SL, TP, 0); if (Ask } } тут установка и модификация ордеров, никак не удаление... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Анатолий Всемогущий Опубликовано 3 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 февраля, 2014 Подскажите пожалуйста почему не удаляется отложенные ордера Спойлер if (Close2 > ima && Close2 { Price = NormalizeDouble(Close1 + Delta * Point, Digits); double StepB = NormalizeDouble(Price - Step * Point, Digits); ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, Price, Slippage, 0, 0, "", Magic, 0,Green); if(ticket>0) { TP = NormalizeDouble(Price + TakeProfit * Point, Digits); SL = NormalizeDouble(Price - StopLoss * Point, Digits); OrderModify(ticket, Price, SL, TP, 0); if (Ask } } тут установка и модификация ордеров, никак не удаление... if (Ask В конце Ссылка на сообщение Поделиться на другие сайты More sharing options...
timosha Опубликовано 5 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 февраля, 2014 Добрый день! :)Люди добрые,помогите найти ошибочку :) 222.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyP Опубликовано 5 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 февраля, 2014 Спойлер Господа программисты ,разъясните плиз у индикаторов стохастик имеются уровни 20, 80. Или MACD с уровнем 0.так вот вопрос как взять значение индикатора когда он находится ниже 20 или выше 80 основная и сигнальная линия.либо пересекаются за этими уровнями.значение индикаторов я вроде бы взял,а вот что дальше с ними делать не знаю. Stoh=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0); StohSignal=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0);Macd=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,0); MacdSignal=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,0); Тебе нужно сравнить значение сигнала и основной лини сначала на 1 баре потом на 0 и добавить условие что основная линия при этом ниже или выше уровня 20,80 типа так :if(iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,1iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0) && iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0) открываем бай и бла бла Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 5 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 февраля, 2014 Привет спасибо за помощь, а как быть с MACD взял как написано в учебнике,в общем не работает. Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 6 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Подскажите пожалуйста почему не удаляется отложенные ордера Спойлер if (Close2 > ima && Close2 { Price = NormalizeDouble(Close1 + Delta * Point, Digits); double StepB = NormalizeDouble(Price - Step * Point, Digits); ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, Price, Slippage, 0, 0, "", Magic, 0,Green); if(ticket>0) { TP = NormalizeDouble(Price + TakeProfit * Point, Digits); SL = NormalizeDouble(Price - StopLoss * Point, Digits); OrderModify(ticket, Price, SL, TP, 0); if (Ask } } тут установка и модификация ордеров, никак не удаление... if (Ask В конце сорри, не обратил внимания...ну... значит не выполняется условие...кстати, в новом билде можно поставить точку останова и посмотреть реальные значения в переменных...Если не разберётесь, то скоро будет видео, где мы рассмотрим этот и многие другие вкусности нового билда. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Здраствуйте всем,помогите разобраться с кусочком кода.Проверьте плиз на правильность его ? Спойлер [Macd=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,0); MacdSignal=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,0); Macd_1=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,2); MacdSignal_1=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,2); Stoh=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0); StohSignal=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0); Stoh_1=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,1); StohSignal_1=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,1); bbUP=iBands(Symbol(),PERIOD_M5,period,deviation,bands_shift,PRICE_CLOSE,1,0); bbDOWN=iBands(Symbol(),PERIOD_M5,period,deviation,bands_shift,PRICE_CLOSE,2,0);if((Macd_1StohSignal && StohVolume[0](MacdStohSignal && StohVolume[0] Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 6 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Здраствуйте всем,помогите разобраться с кусочком кода.Проверьте плиз на правильность его ? Спойлер [Macd=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,0); MacdSignal=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,0); Macd_1=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,2); MacdSignal_1=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,2); Stoh=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0); StohSignal=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0); Stoh_1=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,1); StohSignal_1=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,1); bbUP=iBands(Symbol(),PERIOD_M5,period,deviation,bands_shift,PRICE_CLOSE,1,0); bbDOWN=iBands(Symbol(),PERIOD_M5,period,deviation,bands_shift,PRICE_CLOSE,2,0);if((Macd_1StohSignal && StohVolume[0](MacdStohSignal && StohVolume[0] Дружище, ты ещё сюда добавь Т.З.То есть, что ты хочешь получить этим кодом...Да, я сейчас глянул твой код, логически может и правильно, но я не пойму что ты хочешь получить, поэтому проверить твою логику ну никак не могу... Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Здраствуйте госпадин xbms система Александра Элдера то есть,на старшем таймфрейме на MACD на двух барах гистограмма выше сигналки,на более младшем стохастик в зоне перепроданости т.е 20 и пересекает быстрая медленную,то еще более младшем таймфрейме входим в пакупки.я добавил Bollinger Bands на младший тайм фрейм чтоб входить на откате как я думаю на максимально выгодной цене.Господин xbms прикладываю весь код.Вот еще что,до меня так и не дошло почему код обработки ошибок не работает в новом билде.выдает кучу ошибок. Добавлено: 06-02-2014 18:32:15Хочу его доработать так как думаю есть у него потенциал.вот два графика с тестора,первый торгует одним лотом,второй с ММ.вот только как отчет выложить не знаю.TestoviySovetnik.mq4eurusd.gifeurusd.gifeurusd.gifeurusd_2.gif Изменено 6 февраля, 2014 пользователем denis77515 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sharovik Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Здравствуйте подскажите как реализовать функцию, необходимо узнать как закрылся последний ордер , в + или - , нашел вот такой код double isCloseLastPosByStopTrade(string sy="",int op=-1,int mn=-1) { datetime t; double ocp,osl; int dg,i,j=-1,k=OrdersHistoryTotal(); if(sy=="0") sy=Symbol(); for(i=0; i { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==sy || sy=="") { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(op { if(mn { if(t { t=OrderCloseTime(); j=i; } } } } } } } if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) { return(OrderProfit()); } }но не понимаю некоторых моментов, а и именно if(tи еще эти строки if(op { if(mn {поясните пожалуйста данные моменты или подскажите другой вариант решения данной проблемы, Спасибо. Добавлено: 06-02-2014 17:17:54по op=-1 и mn= -1 понял, это значит любая позиция и любой магик, у переменной t должно быть значение 0 наверное ?Добавлено: 06-02-2014 19:08:23С этим разобрался, подскажите пожалуйста как сделать выбор 2-х последних ордеров в истории ? Изменено 6 февраля, 2014 пользователем Sharovik Ссылка на сообщение Поделиться на другие сайты More sharing options...
Teo Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Как правильно сделать условие: Если есть открытые ордера на продажу - рассматривать только покупки, и наоборот: если есть открытые ордера на покупку - рассматривать только продажу?В уроках от xbms для таких нужд есть функции: Спойлер //======================================================================================== int CountBuy() { int count = 0; for(int trade = OrdersTotal()-1; trade >= 0; trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) count++; } } return(count); }//======================================================================================== int CountSell() { int count = 0; for(int trade = OrdersTotal()-1; trade >= 0; trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_SELL) count++; } } return(count); }//======================================================================================= Можно ли их как то в упрощённом виде записать?На подобие этого: Спойлер if (OrdersTotal == 0) //Окрытие ордера только если нет уже открытых ордеров. {...} Изменено 6 февраля, 2014 пользователем Teo Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 Всем привет народ!!!! Вопрос для маэстро Xbms!!! Вот в некоторых советниках в настройках иногда есть такая функция которая скрывает место установки профита и лоса!!! Хотелось бы добавить такую функцию в собственную сову!!! Можно такой урок? Или подскажите на что обратить внимание!!! P.S. Кстате заменил условия установки ордеров по определённому времени так Вы мне подсказали и теперь да, открываются всегда!!! Странно почему не всегда открывались по времени заданному через "string"? Ссылка на сообщение Поделиться на другие сайты More sharing options...
mzk_3om6u Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 1. время должно быть ОДНОГО формата, не важно строка или дата.2. Виртуальные СЛ и ТП, описываются одним блоком условий.(if (SL>n){OrderClose} - но тут стоит учитывать проскальзывание) Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 6 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 февраля, 2014 1. время должно быть ОДНОГО формата, не важно строка или дата.2. Виртуальные СЛ и ТП, описываются одним блоком условий.(if (SL>n){OrderClose} - но тут стоит учитывать проскальзывание) Не понял я про формат!!!Я имею в виду TimeToStr(TimeCurrent()............."15:30" не всегда срабатывает! TimeHour(TimeCurrent()............. 15 TimeMinute(TimeCurrent().............30 a так стабильно! Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 7 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 1. время должно быть ОДНОГО формата, не важно строка или дата.2. Виртуальные СЛ и ТП, описываются одним блоком условий.(if (SL>n){OrderClose} - но тут стоит учитывать проскальзывание) Не понял я про формат!!!Я имею в виду TimeToStr(TimeCurrent()............."15:30" не всегда срабатывает! TimeHour(TimeCurrent()............. 15 TimeMinute(TimeCurrent().............30 a так стабильно! это будет легче понять, если написать так: Print(TimeToStr(TimeCurrent()));...посмотреть в журнале и сделать вывод! :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 1. время должно быть ОДНОГО формата, не важно строка или дата.2. Виртуальные СЛ и ТП, описываются одним блоком условий.(if (SL>n){OrderClose} - но тут стоит учитывать проскальзывание) Не понял я про формат!!!Я имею в виду TimeToStr(TimeCurrent()............."15:30" не всегда срабатывает! TimeHour(TimeCurrent()............. 15 TimeMinute(TimeCurrent().............30 a так стабильно! это будет легче понять, если написать так: Print(TimeToStr(TimeCurrent()));...посмотреть в журнале и сделать вывод! :) То есть даты не хватает? Обязательно надо вставлять?Добавлено: 07-02-2014 08:24:37xbms а можете про блоки рассказать? как они используются для скрытия лоса и профита от брокера чёто не понятно вообще как блок на это влияет? А может это я вообще затеил зря? Опытные люди подскажите стоит ли в это лесть? Чтоб я больше никому здесь голову не морочил плиз!!! Изменено 7 февраля, 2014 пользователем elruso Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyP Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 По поводу новых вкусностей нового билда было бы интересно посмотреть видео,уж как то там заморочено все))) или с непривычки кажется))) \M/ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Teo Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 Ребят, выручите. :-/ Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 7 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 Как правильно сделать условие: Если есть открытые ордера на продажу - рассматривать только покупки, и наоборот: если есть открытые ордера на покупку - рассматривать только продажу? В уроках от xbms для таких нужд есть функции: Спойлер //======================================================================================== int CountBuy() { int count = 0; for(int trade = OrdersTotal()-1; trade >= 0; trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) count++; } } return(count); }//======================================================================================== int CountSell() { int count = 0; for(int trade = OrdersTotal()-1; trade >= 0; trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_SELL) count++; } } return(count); }//======================================================================================= Можно ли их как то в упрощённом виде записать?На подобие этого: Спойлер if (OrdersTotal == 0) //Окрытие ордера только если нет уже открытых ордеров. {...} вот благодаря этим функция и можно записать так:if (CountBuy() > 0) { CheckOpenSellOrder(); }if (CountSell() > 0) { CheckOpenBuyOrder(); }вот как-то так...ну и разумеется с дополнительными условиями покупки/продажи... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Teo Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 Цитата if (CountBuy() > 0) {...} // сделка откроется только если уже есть открытые бай-ордераif (CountSell() > 0) {...} // сделка откроется только если уже есть открытые селл-ордера То что я имел в виду наверно должно выглядеть так:if (CountBuy() == 0) {...} // сделка откроется только если нет открытых ордеров на бай. Максимум один открытый бай-ордер.if (CountSell() == 0) {...} // сделка откроется только если нет открытых ордеров на селл. Максимум один открытый селл-ордер. xbms, подскажите правильно ли я рассуждаю? ;) Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 7 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 Цитата if (CountBuy() > 0) {...} // сделка откроется только если уже есть открытые бай-ордераif (CountSell() > 0) {...} // сделка откроется только если уже есть открытые селл-ордера То что я имел в виду наверно должно выглядеть так:if (CountBuy() == 0) {...} // сделка откроется только если нет открытых ордеров на бай. Максимум один открытый бай-ордер.if (CountSell() == 0) {...} // сделка откроется только если нет открытых ордеров на селл. Максимум один открытый селл-ордер. xbms, подскажите правильно ли я рассуждаю? ;) Вполне! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти