Перейти к содержанию

Доработка советников: общая тема


Рекомендуемые сообщения

Доработка советников: общая тема Опубликовано

Здравствуйте уважаемые форумчане. Нашел на этом форуме советник,но он не присоединятся к графику. Не посмотрите что с ним? Заранее спасибо)

USD-M-1.01-12.11.2017.mq4

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 2,5k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте. Прогнал в тесте с настройками по умолчанию. Ожидаемо лье

Перейти

Нате 1_2_3 _Fraktal.mq4

Перейти

Система маятника, или попрыгунчика, или фиг ее знает как ее еще назвать не намного младше сетки мартингейла. Мы в далеком 2017 писали по ней сов с индикатором на вход: https://tlap.com/forum/labo

Перейти
Доработка советников: общая тема Опубликовано


Здравствуйте уважаемые форумчане. Нашел на этом форуме советник,но он не присоединятся к графику. Не посмотрите что с ним? Заранее спасибо)

Всё работает.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

он не присоединятся к графику. Не посмотрите что с ним?

Наверное нужно скомпилировать в editor-е... Держи.

USD-M-1.01-12.11.2017.ex4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Уважаемый 0ll,у меня к Вам еще один вопрос. Я попытался этот советник сам скомпилировать в editor-е. и у меня выдал такую ошибку. Не подскажите что тут нужно исправить?

компиляция.jpg

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Andrey98 этой ошибки нет у меня и других похоже тоже... Видимо что-то слетело или в Эдиторе или в используемых библиотеках. Нужно заново скачать весь комплект или попробуйте скомпилировать в терминале другого брокера.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Привет!
Помогите пожалуйста)
Есть ли такая функция которая множит не лот, а количество ордеров в сеточном советники?
Или как ее прописать?

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);

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Есть ли такая функция которая множит не лот, а количество ордеров в сеточном советники?

Есть формула, вот: на 1 входе лот = л1, на 2 входе л2=л1*кф, л3 = л1*кф*кф, ... , лn = л1 * кф^(кол.орд. - 1).
Дальше сами, справитесь?
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Походу не справлюсь)
не пойму где ее надо прописать?


У Вас она с горем пополам написана))Просто Вы выдали нам кусок кода, где, вроде, похоже, описаны входы в покупки через определенный шаг (step) с увеличением лота на какой то коэффициент (Multiplier) как в сеточнике с мартином. НО! Поймите правильно, я, например, не ясновидящий , не могу предсказать код, который был до/после этого обрывка. Если у Вас не суперсекретный код советника и если Вы хотите, чтобы Вам помогли, отправляйте исходник совы сюда и опишите конкретно, что у Вас не получается. Я уверен найдется программер, который поможет!
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано



Походу не справлюсь)
не пойму где ее надо прописать?


У Вас она с горем пополам написана))Просто Вы выдали нам кусок кода, где, вроде, похоже, описаны входы в покупки через определенный шаг (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);
}

Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Пробуйте :)



Спасибо большое!
Но у меня все равно по прежнему увеличивается лот в два раза,
а хотелось бы что увеличивалось количество одинаковых ордеров в два раза.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Я так понимаю Вы хотите, чтобы на первом шаге ордер открылся с 0.1 лотом, на втором открылось 2 ордера по 0.1 лоту (0.2), на третьем 4 ордера по 0.1 лоту (0.4) .......на n шаге открылось 2*n ордеров?

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Я так понимаю Вы хотите, чтобы на первом шаге ордер открылся с 0.1 лотом, на втором открылось 2 ордера по 0.1 лоту (0.2), на третьем 4 ордера по 0.1 лоту (0.4) .......на n шаге открылось 2*n ордеров?



Да,
совершенно верно.
Можно так сделать?
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Сделать то можно, но нужно понять для чего Вам это нужно. Во первых, открыть два ордера по одной цене не получиться, не получиться сразу(скорость исполнения ордеров). Во вторых, если вы потом хотите закрывать один (одни) из ордеров, то лучше использовать функцию частичных закрытия ордеров. В третьих, даже если Вам сделают открытия одновременное открытие ордеров, то на тестере будет все окей, а на реале будет беда. Т.е. в тестере, к примеру,в покупку на третьем шаге откроется 4 ордера по цене 1.25000(фунт пятизнак), а в реале, если цена идет в лонг, может быть разброс 1.25000, 1.25020.......1.25150, зависит от вида счета, волатильности, брокера, скорости исполнения и т.д.
Подумай еще раз о функции частичного закрытия ордеров. Так Вы сможете открыть один ордер по одной цене с объемом 0.4 (на третьем шаге), а потом, с помощью функции закрывать их частично, используя свои условия.
Надеюсь объяснил и коллеги поддержат;)
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Чтоб скрыть использование мартингейла, некоторые продавцы советников используют открытие нескольких ордеров одинаковым лотом - наверно это единственное разумное объяснение для такого подхода...

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Чтоб скрыть использование мартингейла, некоторые продавцы советников используют открытие нескольких ордеров одинаковым лотом - наверно это единственное разумное объяснение для такого подхода...



Да мне нечего скрывать)
Смысл что бы множил ордера, а не лоты, для того что бы на разных счетах копировались сделки, и на каждом можно было бы отдельно прописывать стартовый лот, в зависимости от депозита.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Смысл что бы множил ордера, а не лоты, для того что бы на разных счетах копировались сделки, и на каждом можно было бы отдельно прописывать стартовый лот, в зависимости от депозита.

В сетках лот может вырасти до сотни раз!
т.е. Вы стремитесь открыть на счете одновременно сотни ордеров?! и управлять ими... - сомнительное решение. На некоторых реальных счетах есть ограничение в 25 ордеров, на демо ещё меньше. Почитайте ветку советника сетка, там люди упёрлись в ограничение по количеству запросов к серверу, т.е. сервер брокера такую много-ордерную торговлю воспринимает как спам сервера. В общем крайне не рекомендую.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

валютная пара евродоллар М1
работает тока на тестере, требует лечения

На форуме есть раздел "Совы в розыске", Вам туда, но результаты тестов или торговли нужно сразу публиковать.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Всем привет, готов помочь любому желающему с доработкой бота или индикатора. Опыт в этом деле имею, пишите.

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Пробую создать простенький советник на основе стохастика. Учусь. При компеляции выдает ошибку; OnCalculate function not found in custom indicator. Разобраться в чём дело не смог. Кто подскажет? Это первый советник который я пробую накарябать))

Проба.mq4

Изменено пользователем NGLA
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

При компеляции выдает ошибку; 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
Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Доработка советников: общая тема Опубликовано
karuzzo создайте свою тему, объявите условия, имейте в виду: форум не коммерческий и должны быть бесплатные опции.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Доброго времени суток! Старый советник не компилируется под новый билд выдаёт 3 ошибки, мне его как раз под новый билд нужно скомпилировать. Был бы весьма признателен если подправите бота. И выложите пожалуйста в открытом виде .mq4

FX_Pro_Bot_-TinoEUM5.mq4

Ссылка на сообщение
Поделиться на другие сайты

  • idinesh changed the title to Assae Elite Pro tlap version source code need i have plan convert this mt4 to mt5 and it possible mt4 dll file modified mt5 version
  • Pavel888 pinned this тема

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • ×
    ×
    • Создать...