Andrey98 Опубликовано 5 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 5 декабря, 2018 Здравствуйте уважаемые форумчане. Нашел на этом форуме советник,но он не присоединятся к графику. Не посмотрите что с ним? Заранее спасибо) USD-M-1.01-12.11.2017.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
machine Опубликовано 5 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 5 декабря, 2018 Здравствуйте уважаемые форумчане. Нашел на этом форуме советник,но он не присоединятся к графику. Не посмотрите что с ним? Заранее спасибо)Всё работает. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 5 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 5 декабря, 2018 он не присоединятся к графику. Не посмотрите что с ним?Наверное нужно скомпилировать в editor-е... Держи.USD-M-1.01-12.11.2017.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andrey98 Опубликовано 5 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 5 декабря, 2018 Уважаемый 0ll,у меня к Вам еще один вопрос. Я попытался этот советник сам скомпилировать в editor-е. и у меня выдал такую ошибку. Не подскажите что тут нужно исправить? компиляция.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 5 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 5 декабря, 2018 Andrey98 этой ошибки нет у меня и других похоже тоже... Видимо что-то слетело или в Эдиторе или в используемых библиотеках. Нужно заново скачать весь комплект или попробуйте скомпилировать в терминале другого брокера. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Artem1584 Опубликовано 10 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 10 декабря, 2018 Привет!Помогите пожалуйста)Есть ли такая функция которая множит не лот, а количество ордеров в сеточном советники?Или как ее прописать? int order_type = FindLastOrderType(); if ( order_type== OP_BUY) { price=FindLastOrderPrice( OP_BUY); if( Ask { lastlot= FindLastLots( OP_BUY); lastlot = NormalizeDouble ( lastlot*Multiplier,2); ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask,5,0, 0, "", Magic,0, Blue); if ( ticket Print ( "Ошибка открытия ордера на покупку"); ModifyOrders( OP_BUY); Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 10 декабря, 2018 Есть ли такая функция которая множит не лот, а количество ордеров в сеточном советники?Есть формула, вот: на 1 входе лот = л1, на 2 входе л2=л1*кф, л3 = л1*кф*кф, ... , лn = л1 * кф^(кол.орд. - 1).Дальше сами, справитесь? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Artem1584 Опубликовано 10 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 10 декабря, 2018 Походу не справлюсь)не пойму где ее надо прописать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 10 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 10 декабря, 2018 Походу не справлюсь)не пойму где ее надо прописать? У Вас она с горем пополам написана))Просто Вы выдали нам кусок кода, где, вроде, похоже, описаны входы в покупки через определенный шаг (step) с увеличением лота на какой то коэффициент (Multiplier) как в сеточнике с мартином. НО! Поймите правильно, я, например, не ясновидящий , не могу предсказать код, который был до/после этого обрывка. Если у Вас не суперсекретный код советника и если Вы хотите, чтобы Вам помогли, отправляйте исходник совы сюда и опишите конкретно, что у Вас не получается. Я уверен найдется программер, который поможет! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Artem1584 Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Походу не справлюсь)не пойму где ее надо прописать? У Вас она с горем пополам написана))Просто Вы выдали нам кусок кода, где, вроде, похоже, описаны входы в покупки через определенный шаг (step) с увеличением лота на какой то коэффициент (Multiplier) как в сеточнике с мартином. НО! Поймите правильно, я, например, не ясновидящий , не могу предсказать код, который был до/после этого обрывка. Если у Вас не суперсекретный код советника и если Вы хотите, чтобы Вам помогли, отправляйте исходник совы сюда и опишите конкретно, что у Вас не получается. Я уверен найдется программер, который поможет! Вот весь советник. Написал по видеоурокам))Нужно что бы с шагом увеличивалось количество ордеров , а не лотов.Пробовал перемножать тикет или ордер на Мультилот, не работает так вообще. Спойлер extern double Lots = 0.1;extern int TakeProfit =50 ;extern int Step = 50;extern double Multiplier=2;extern int Magic = 123; int ticket; double tp, price,rsi, lastlot;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {if (Digits ==3 || Digits==5){ TakeProfit *=10; Step*=10;} return(INIT_SUCCEEDED); }void OnDeinit(const int reason) { }void OnTick() { rsi = iRSI(Symbol(),PERIOD_H1,14,0, 1) ; if ( CountTrades() ==0) { if ( rsi { tp = NormalizeDouble (Ask + TakeProfit*Point, Digits); ticket = OrderSend( Symbol(),OP_BUY, Lots, Ask, 5, 0, tp, "1 ордер", Magic, 0, Blue); } if ( rsi >70 ) { tp = NormalizeDouble (Bid - TakeProfit*Point, Digits); ticket = OrderSend( Symbol(),OP_SELL, Lots, Bid, 5, 0, tp, "1 ордер", Magic, 0, Red); }}else { int order_type = FindLastOrderType(); if ( order_type== OP_BUY) { price=FindLastOrderPrice( OP_BUY); if( Ask { lastlot= FindLastLots( OP_BUY); lastlot = NormalizeDouble ( lastlot*Multiplier,2); ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask,5,0, 0, "", Magic,0, Blue); if ( ticket Print ( "Ошибка открытия ордера на покупку"); ModifyOrders( OP_BUY); } } if ( order_type== OP_SELL) { price=FindLastOrderPrice( OP_SELL); if( Bid>=price + Step*Point ) { lastlot= FindLastLots( OP_SELL); lastlot = NormalizeDouble ( lastlot*Multiplier,2); ticket= OrderSend(Symbol(), OP_SELL, lastlot, Bid,5,0, 0, "", Magic,0, Red); if ( ticket Print ( "Ошибка открытия ордера на продажу"); ModifyOrders( OP_SELL); } }} } void ModifyOrders( int otype) { double avg_price, order_lots=0; price = 0; for ( int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()== Symbol() && OrderMagicNumber()== Magic && OrderType()==otype) { price+=OrderOpenPrice()*OrderLots(); order_lots+=OrderLots(); } } } avg_price= NormalizeDouble(price/ order_lots, Digits); if(otype == OP_BUY) tp = NormalizeDouble(Ask+TakeProfit *Point, Digits); if(otype == OP_SELL) tp = NormalizeDouble(Bid- TakeProfit *Point, Digits); for (int i = OrdersTotal()-1; i>=0; i--) { if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()== Magic && OrderType()==otype) { if( OrderModify( OrderTicket(), OrderOpenPrice(), 0, tp, 0)) Print("Ордер успешно модифицирован"); else Print (" Ошибка модификации" ); } } } } double FindLastLots( int otype) { int oldticket; double oldlots= 0; ticket =0; for (int cnt= OrdersTotal() -1; cnt>=0; cnt--) { if (OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)) { if( OrderSymbol() == Symbol () && OrderMagicNumber()== Magic && OrderType()== otype) { oldticket=OrderTicket(); if ( oldticket> ticket) { ticket= oldticket; oldlots=OrderLots(); } } } } return(oldlots); } double FindLastOrderPrice(int otype) { int oldticket; double oldopenprice=0; ticket =0; for (int cnt= OrdersTotal() -1; cnt>=0; cnt--) { if (OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)) { if( OrderSymbol() == Symbol () && OrderMagicNumber()== Magic && OrderType()== otype) { oldticket=OrderTicket(); if ( oldticket> ticket) { ticket= oldticket; oldopenprice=OrderOpenPrice(); } } } } return(oldopenprice); } 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); }//+------------------------------------------------------------------+int CountTrades(){ int count =0; for ( int i =OrdersTotal() -1 ; i>=0 ; i --) { if (OrderSelect ( i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol () && OrderMagicNumber()== Magic) if ( OrderType() == OP_BUY || OrderType() == OP_SELL) count++; } } return( count);} Изменено 11 декабря, 2018 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Пробуйте :) 2018-12-11_10-10-40.pngsetka.ex4setka.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Artem1584 Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Пробуйте :) Спасибо большое!Но у меня все равно по прежнему увеличивается лот в два раза, а хотелось бы что увеличивалось количество одинаковых ордеров в два раза. Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Я так понимаю Вы хотите, чтобы на первом шаге ордер открылся с 0.1 лотом, на втором открылось 2 ордера по 0.1 лоту (0.2), на третьем 4 ордера по 0.1 лоту (0.4) .......на n шаге открылось 2*n ордеров? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Artem1584 Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Я так понимаю Вы хотите, чтобы на первом шаге ордер открылся с 0.1 лотом, на втором открылось 2 ордера по 0.1 лоту (0.2), на третьем 4 ордера по 0.1 лоту (0.4) .......на n шаге открылось 2*n ордеров? Да, совершенно верно. Можно так сделать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Сделать то можно, но нужно понять для чего Вам это нужно. Во первых, открыть два ордера по одной цене не получиться, не получиться сразу(скорость исполнения ордеров). Во вторых, если вы потом хотите закрывать один (одни) из ордеров, то лучше использовать функцию частичных закрытия ордеров. В третьих, даже если Вам сделают открытия одновременное открытие ордеров, то на тестере будет все окей, а на реале будет беда. Т.е. в тестере, к примеру,в покупку на третьем шаге откроется 4 ордера по цене 1.25000(фунт пятизнак), а в реале, если цена идет в лонг, может быть разброс 1.25000, 1.25020.......1.25150, зависит от вида счета, волатильности, брокера, скорости исполнения и т.д.Подумай еще раз о функции частичного закрытия ордеров. Так Вы сможете открыть один ордер по одной цене с объемом 0.4 (на третьем шаге), а потом, с помощью функции закрывать их частично, используя свои условия.Надеюсь объяснил и коллеги поддержат;) 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Чтоб скрыть использование мартингейла, некоторые продавцы советников используют открытие нескольких ордеров одинаковым лотом - наверно это единственное разумное объяснение для такого подхода... 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Artem1584 Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Чтоб скрыть использование мартингейла, некоторые продавцы советников используют открытие нескольких ордеров одинаковым лотом - наверно это единственное разумное объяснение для такого подхода... Да мне нечего скрывать)Смысл что бы множил ордера, а не лоты, для того что бы на разных счетах копировались сделки, и на каждом можно было бы отдельно прописывать стартовый лот, в зависимости от депозита. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2018 Смысл что бы множил ордера, а не лоты, для того что бы на разных счетах копировались сделки, и на каждом можно было бы отдельно прописывать стартовый лот, в зависимости от депозита.В сетках лот может вырасти до сотни раз!т.е. Вы стремитесь открыть на счете одновременно сотни ордеров?! и управлять ими... - сомнительное решение. На некоторых реальных счетах есть ограничение в 25 ордеров, на демо ещё меньше. Почитайте ветку советника сетка, там люди упёрлись в ограничение по количеству запросов к серверу, т.е. сервер брокера такую много-ордерную торговлю воспринимает как спам сервера. В общем крайне не рекомендую. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 19 декабря, 2018 валютная пара евродоллар М1работает тока на тестере, требует леченияНа форуме есть раздел "Совы в розыске", Вам туда, но результаты тестов или торговли нужно сразу публиковать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
maxstah Опубликовано 21 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 декабря, 2018 Всем привет, готов помочь любому желающему с доработкой бота или индикатора. Опыт в этом деле имею, пишите. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
NGLA Опубликовано 24 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 24 декабря, 2018 Пробую создать простенький советник на основе стохастика. Учусь. При компеляции выдает ошибку; OnCalculate function not found in custom indicator. Разобраться в чём дело не смог. Кто подскажет? Это первый советник который я пробую накарябать)) Проба.mq4 Изменено 24 декабря, 2018 пользователем NGLA Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 25 декабря, 2018 Поделиться Доработка советников: общая тема Опубликовано 25 декабря, 2018 При компеляции выдает ошибку; OnCalculate function not found in custom indicator. У тебя нет индикатора "Stochastic" в папке indicators скорее всего. Вообще, если используешь стандартные индюки, то правильнее вызывать их не через iCustom.В твоем случае это будет:double Line11= iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,1,MODE_MAIN,1);double Line12= iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,1,MODE_MAIN,2); 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
karuzzo Опубликовано 3 января, 2019 Поделиться Доработка советников: общая тема Опубликовано 3 января, 2019 Если нужна доработка советников платформы cTrader пишите мне 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 3 января, 2019 Поделиться Доработка советников: общая тема Опубликовано 3 января, 2019 karuzzo создайте свою тему, объявите условия, имейте в виду: форум не коммерческий и должны быть бесплатные опции. Ссылка на сообщение Поделиться на другие сайты More sharing options...
madmiron Опубликовано 6 января, 2019 Поделиться Доработка советников: общая тема Опубликовано 6 января, 2019 Доброго времени суток! Старый советник не компилируется под новый билд выдаёт 3 ошибки, мне его как раз под новый билд нужно скомпилировать. Был бы весьма признателен если подправите бота. И выложите пожалуйста в открытом виде .mq4 FX_Pro_Bot_-TinoEUM5.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти