hackas Опубликовано 5 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 июля, 2015 Помогите написать сигнал с двух индикаторов,FORCE и CCi,как это сделать через цикл?или как то по другому?Условие,если FORCE находится внутри канала ( Force > -FORCE_level && Force if(CCiпосле и больше 55 баров так же смотрим на CCi if(CCI > CCI_level)return(OP_SELL); Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Через цикл или просто на каждом баре отслеживаете вход/выход индюка из канала и сохраняете время события. Ссылка на сообщение Поделиться на другие сайты More sharing options...
hackas Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Через цикл или просто на каждом баре отслеживаете вход/выход индюка из канала и сохраняете время события. А как ч через цикл?как именно? Если можно на примере,спасибо Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Через цикл или просто на каждом баре отслеживаете вход/выход индюка из канала и сохраняете время события.А как ч через цикл?как именно? Если можно на примере,спасибоПримерно так: int i; double Force; for (i = 1; i { Force = iForce(NULL,0,iPeriod,MODE_SMA,PRICE_CLOSE, i); if (Force FORCE_level) break; } if (i >= BarCnt) //Условие выполнено - проверяем ССИ и вход { } 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Здравстуйте! От ошибки "OrderSend error 130" все равно не получается избавится! Появляется при долгосрочном тестировании иногда, ордера отложенные, стоп-лос и тейк профит навны 0. Кто знает от чего это может быть????После вызова ОрдерСэнд проверяете магик если При проверке магика ни чего не происходит. Наверно, вы имели ввиду проверить тикет ордера, а не магик: если тикет 1) 2015.07.06 15:07:56.576 2015.05.06 05:55 Tester: order #3, buy 0.02 EURUSD is opened at 1.120612) 2015.07.06 15:07:56.576 2015.05.06 05:55 EURUSD,M15: OrderSend error 1303) 2015.07.06 15:07:56.576 2015.05.06 05:55 EURUSD,M15: OOP: 1.11761 max_gr_1: 1.12061 Lot: 0.01 Type: 1. Причем по отложенному ордеру бай-стоп открылся ордер бай, а в журнале (в этом сообщении, при условии если тикет Не могу понять из-за чего так происходит??? Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Sany2912, да Вы выложите целиком посмотреть что там на ваяли, а то предлагаете угадать картину целиком по кусочку пазла :-?. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Не могу понять из-за чего так происходит???Чего-ж тут непонятного? Всё просто:Бай открылся и в тут-же попытка открыть рыночный Селл (Type: 1) , а т.к. цена ордера не соответствует текущей цене - выдаёт ошибку. Ищите почему у Вас открывается рыночный Селл. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Не могу понять из-за чего так происходит???Чего-ж тут непонятного? Всё просто:Бай открылся и в тут-же попытка открыть рыночный Селл (Type: 1) , а т.к. цена ордера не соответствует текущей цене - выдаёт ошибку. Ищите почему у Вас открывается рыночный Селл. Нет, не рыночный, а выставляется отложенный селл-стоп, по другому уровню и с ним проблем нет! Проблема иногда появляется, когда срабатывает бай-стоп и открывается ордер бай... Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Не могу понять из-за чего так происходит???Чего-ж тут непонятного? Всё просто:Бай открылся и в тут-же попытка открыть рыночный Селл (Type: 1) , а т.к. цена ордера не соответствует текущей цене - выдаёт ошибку. Ищите почему у Вас открывается рыночный Селл.Нет, не рыночный, а выставляется отложенный селл-стоп, по другому уровню и с ним проблем нет! Проблема иногда появляется, когда срабатывает бай-стоп и открывается ордер бай...Я ничего не знаю про Селл-Стоп, я вижу в журнале "Type: 1" - это обычный Селл или Вы что-то другое в журнал выводите? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
hackas Опубликовано 6 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июля, 2015 Через цикл или просто на каждом баре отслеживаете вход/выход индюка из канала и сохраняете время события.А как ч через цикл?как именно? Если можно на примере,спасибоПримерно так: int i; double Force; for (i = 1; i { Force = iForce(NULL,0,iPeriod,MODE_SMA,PRICE_CLOSE, i); if (Force FORCE_level) break; } if (i >= BarCnt) //Условие выполнено - проверяем ССИ и вход { } Спасибо за помощь Oll!!! Изменено 6 июля, 2015 пользователем Старик Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dron15 Опубликовано 7 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 июля, 2015 Oll не получается у меня получить прибыльность 5 , 3.7 максимально , а мартин чистый ставить не хочу, кое что переделал и просадка уже больше 30 % пошла. Как вынести флаги на true или folse не разбирусь? В коде как написать. SNAG-15070719060100.png 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 июля, 2015 Как вынести флаги на true или folse не разбирусь? В коде как написать.Что значит "вынести"? Флаг это булева переменная:bool flag;flag = true; - может это? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dron15 Опубликовано 7 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 июля, 2015 Как вынести флаги на true или folse не разбирусь? В коде как написать.Что значит "вынести"? Флаг это булева переменная:bool flag;flag = true; - может это? Все мучею запрет на работу советника в разные стороны бай и сел , хочу в настройки вынести true . Не получается сделать запрет в коде , не пойму куда вставить и как правильно записать. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 июля, 2015 Все мучею запрет на работу советника в разные стороны бай и сел , хочу в настройки вынести true . Не получается сделать запрет в коде , не пойму куда вставить и как правильно записать. Так-бы сразу и написал:enum DIRenum { Авто=-1, Бай=0, Селл=1 }; // это сверху во внешних параметрахinput DIRenum Направление_входа = Авто; if (Направление_входа == Авто) // здесь определяешь направление, если режим - авто { } else // здесь просто входишь по заданному в Направление_входа направлению { } 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
shortist Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 Добрый день, коллеги трейдеры.Имеется проблема в работе скрипта. Скрипт простейший - открывает ордер. Проблема в том, что никак не дается рассчет стоп-лосса и тейк профита. Задаю эти параметры в команде - вылетает ошибка, хотя они вроде бы корректные. Пробую задать фиксированные - то же ошибка. В общем, непонятно.Вот код:void OnStart(){string Symb=Symbol();string type="OP_SELL";double lot1=0.01;int start_sl=20;int start_tp=20;double SL;double TP;SL=Bid+(start_sl*Point);TP=Bid-(start_tp*Point);int ticket1=OrderSend(Symb, type, lot1, Ask, 2, SL, TP);if (ticket1{Alert("Ошибка открытия ордера №1: ",GetLastError()," Тип:",type, " Цена:",Ask," SL:",SL," TP:",TP);}}Прошу коллективный разум помочь, в чем ошибка?Спасибо всем за внимание!Добавил:терминал билд 840проверил торговый приказ, в частности содержимое переменных SL и TP - корректен он, а ошибка вываливается.Если задаю 0,0 - SL и TP все работает.Например, был такой вывод:Ошибка открытия ордера №1: 130 Тип:OP_SELL Цена:1.1014 SL:1.1032 TP:1.0992 - но ведь данные корректны? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 То, что на поверхности:вместо string type="OP_SELL"; пиши int type=OP_SELL; //(я удивлен, что с другим типом работает)и попробуй задавать СЛ и ТП после открытия ордера:if (ticket1{Alert("Ошибка открытия ордера №1: ",GetLastError()," Тип:",type, " Цена:",Ask," SL:",SL," TP:",TP);}else{OrderModify(...)} Изменено 8 июля, 2015 пользователем 0ll 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
shortist Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 Спасибо за идею - попробую модифицировать ордер после открытия, но есть опасения: а если не получится модифицировать - ордер останется висеть без стопа? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 Спасибо за идею - попробую модифицировать ордер после открытия, но есть опасения: а если не получится модифицировать - ордер останется висеть без стопа?Проверяй результат Модифи и зацикливай - как вариант... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
shortist Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 Решил проблему!!!Истина, как оказалось, была где-то рядом...Проблема была в строке string type="OP_SELL"; это значение не принималось.Ордер-то открывался BUY, соответственно и стопы с профитами были некорректны.Переменная, передаваемая в ordersend должна быть числовая, а не текстовая - отсюда все проблемы.Виновата моя невнимательность. Прошу у всех прощения за беспокойство и огромное спасибо всем за помощь! Добавлено: 08-07-2015 08:35:590ll - Вы мне очень помогли, спасибо!!! =d> Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 VSATester, спасибо принято говорить "с занесением в личное дело" - для этого 2 кнопки в каждом посте.Это раз.А второе - а где код работающего скрипта для форумчан?Неработающий код выложили - а работающий скрипт нет.Помощь на форуме получил - делись с форумом исправленным рабочим скриптом. Ссылка на сообщение Поделиться на другие сайты More sharing options...
shortist Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 Работающий код.void OnStart() { string Symb=Symbol(); double lot1=0.01; int start_sl=20; int start_tp=20; int type=1; // SELL double SL=Bid+(start_sl*Point); double TP=Bid-(start_tp*Point); int ticket1=OrderSend(Symb, type, lot1, Bid, 2, SL, TP); if (ticket1 { Alert("Ошибка открытия ордера №1: ",GetLastError(), " Цена:",Ask," SL:",SL," TP:",TP); } } 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 8 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июля, 2015 VSATester, а обрезать ТП/СЛ до значности счета не хотите?Насколько помню, это тоже одна из причин отказа в выставлении ордера.Что касается выставления ТП/СЛ в момент открытия рыночного ордера, то на ECN счетах это же вроде недопустимо: там ордер сначала открывается с нулевыми ТП/СЛ - а потом модифицируется .И, наконец, как насчет бай ордеров, мэджика и коммента?Какой-то странный у вас "работающий" скрипт пока - слегка, местами работающий... :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Dron15 Опубликовано 9 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 июля, 2015 Если вот так стоп лос записать будет учитываться комиссия ? SL = NormalizeDouble ( Ask + (OrderCommission() + OrderSwap() + TrailingStop) * Point,Digits); 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 июля, 2015 Если вот так стоп лос записать будет учитываться комиссия ? SL = NormalizeDouble ( Ask + (OrderCommission() + OrderSwap() + TrailingStop) * Point,Digits); учесть комиссию можно по-разному... :d , принципиально: если в формуле есть OrderCommission(), то значит она учитывается...А теперь серьёзно: OrderCommission() выдаёт результат в валюте счёта, Вы торгуете мало того, что другую валюту (возможно), так ещё и бабки учитываете как пункты! Если делать правильно, то надо переводить комиссию (в валюте депо) в пункты по торгуемой паре, а только потом пересчитывать СЛ.Мне раньше думалось, что это очевидно... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
hackas Опубликовано 10 июля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 июля, 2015 Условия стали выполнятся когда сделал так i = 0; double force = iForce(NULL,0, FORCE_period, FORCE_method, FORCE_applied_price, 1); if(force > -FORCE_level && force { for(i=1; i { RefreshRates(); double FORCE = iForce(NULL,0, FORCE_period, FORCE_method, FORCE_applied_price, i); if(FORCE > -FORCE_level && FORCE if(FORCE >= FORCE_level)break; if(FORCE } } double CCI = iCCI(NULL, 0, CCI_period, CCI_price, 1); double CCI2 = iCCI(NULL, 0, CCI_period, CCI_price, 2); if(i>=Bars_2) { if(CCI2 -CCI_level)return(OP_BUYLIMIT); if(CCI2 > CCI_level && CCI } Изменено 11 июля, 2015 пользователем hackas 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти