Доработка ботов (советников, индикаторов) vol. 2

Клемент

Интересующийся
Здравствуйте, уважаемые специалисты! С прошедшими всех праздниками!
Помогите доработать Советника. Это сеточник. Есть 2 проблемы, которые хотелось бы решить:
1) Стоп-лосс и тэйк-профит buy и sell ордеров имеют одинаковое ценовое значение, т.е. стоп-лосс ордера buy устанавливается на то же ценовое значение, что и тэйк-профит ордера sell и наоборот. Но, когда цена доходит до этого уровня, сначала срабатывает стоп-лосс и закрывает убыточные сделки, а затем, если цена двигается дальше и проходит размер спрэда, то закрывается тэйк-профит. Но часто случается, что цена закрывает стоп-лосс и откатывает на несколько пунктов. Советник же, начинает закрывать прибыльные сделки, даже если цена не дошла до тэйк-профита. При этом получается общий убыток и иногда достаточно значительный. Пожелание: нельзя ли внести изменения, чтобы стоп-лосс и тэйк-профит различался на размер спрэда. Желательно этот параметр вынести в настройки, т.к. спрэд всё-таки на разных инструментах различается.
2) При открытии новых колен, Советник открывает сделки лотом только 0,01 и 0,02, что уже на третьем и далее коленах становится неудобным. Представьте, в терминале только по одному инструменту висит 20-40 открытых сделок по 0,01 и 0,02 лота и несколько десятков таких же отложенных ордеров. Пожелание: нельзя ли эти сделки укрупнить, то есть, чтобы открывалось, например не четыре сделки по 0,01, а одна сделка 0,04 и т.д.

Буду очень признателен за помощь.
 

Вложения

  • GAMA_GRID_edu.mq4
    17,9 КБ · Просмотры: 89
  • GAMA_GRID_edu.ex4
    35,4 КБ · Просмотры: 57

jenzo

Местный знаток
Добавил стрелки и алерты.
По настройкам:

PHP:
Arrows    = true;  // отобразить стрелки 
ArrowSize  = 2;     // размер стрелок
otstup     = 5;     // отступ от графика, для 5-знака -> х10 
SignalBars = 1;     // сигнальный бар
ArrUpcolor = Gold;  // цвет Up   
ArrDncolor = Red;   // цвет Dn

AlertsMessage      = true;  // алерт Message
AlertsSound        = false; // алерт Sound
AlertsEmail        = false; // алерт Email
AlertsNotification = false; // алерт Notification


mobidik а "shift" куда делся?
 

mobidik

-----
mobidik а "shift" куда делся?

В данном случае: shift = SignalBars

Mobidik дружище если не тяжело вставь пожалуйста алерт при достижении хай лоу 25 пунктов. Заранее благодарю.

Сделал так: в настройках можно задавать значение High/low, по умолчанию - 25, а так же отключать сам алерт. При включенном алерте значение High/low выводится на информер. Есть минус, при смене ТФ - алертит. Пробуй:
 

Вложения

  • DailyData_alert.mq4
    9 КБ · Просмотры: 54
  • DD.png
    DD.png
    64 КБ · Просмотры: 347
Последнее редактирование:

erex

Элитный участник
Выложи не рисующие машки. НО, я полагаю , что толку от не рисующих машек мало, скорее всего они запаздывают. Ты возможно программист и для тебя переделать индикатор плёвое дело, я же пользуюсь тем, что есть в свободном доступе и пока не встречал.
P.S/ Почему такой негатив в твоих словах?
Все машки у тебя в терминале. Формируются они по разным принципам, но самые простые - не рисуют. Я уже слышу - "на нулевом баре рисуют!". Так он потому и называется нулевым, что его показания никого не интересуют. Вот станет первым - тогда посмотрим.
Ни разу не программист. Но знаю, что самые красивые сигналы дают на истории самые рисующие индюки. А на те, что показывают всего лишь тенденцию, мало кто внимание обращает, потому как они запаздывают. Естественно, запаздывают. Нерисующие запаздывают, рисующие врут. Потому опытные трейдеры с образованием пользуются фундаментом и единственным незапаздывающим индикатором - inside.mq666. Но его трудно достать и опасно использовать.
По поводу негатива: это я еще постарался выразиться помягче, на самом деле выбешивает, когда читаю "все, всегда, никогда, никто". Будто библию читаю... Приношу искренние за резкость.
 

John174RUS

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

extern double Lots =0.01;
extern int TakeProfit =50;
extern int Step =50;
extern double Multiplier =2;
extern int Slippage =5;
extern int Magic =123;

int ticket;
double price,TP,lastlot;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits == 3 || Digits == 5)
{
TakeProfit *=10;
Step *=10;
Slippage *=10;
}
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
int start()
{
if(CoutTrades()== 0)
{
double ima=iMA(Symbol(),0,10,0,MODE_SMA,PRICE_CLOSE,1);

if(Bid>ima)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Blue);
if(ticket>0)
{
TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);
bool modify = OrderModify(ticket,OrderOpenPrice(),0,TP,0);
}
}
else if(Ask<ima)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Red);
if(ticket>0)
{
TP=NormalizeDouble(Ask-TakeProfit*Point,Digits);
bool modify = OrderModify(ticket,OrderOpenPrice(),0,TP,0);
}
}
}
else
{
int order_type = FindLastOrderType();
if(order_type==OP_BUY)
{
price=FindLastPrice(OP_BUY);
if(Ask<=price-Step*Point)
{
lastlot=FindLastLots(OP_BUY);
lastlot= NormalizeDouble(lastlot*Multiplier,2);
ticket=OrderSend(Symbol(),OP_BUY,lastlot,Ask,Slippage,0,0,"",Magic,0,Blue);
if(ticket>0)
ModifyOrders(OP_BUY);
}
}
else if (order_type==OP_SELL)
{
price=FindLastPrice(OP_SELL);
if(Bid<=price+Step*Point)
{
lastlot=FindLastLots(OP_SELL);
lastlot= NormalizeDouble(lastlot*Multiplier,2);
ticket=OrderSend(Symbol(),OP_SELL,lastlot,Bid,Slippage,0,0,"",Magic,0,Red);
if(ticket>0)
ModifyOrders(OP_SELL);
}

}

}

return(0);
}
//+------------------------------------------------------------------+
void ModifyOrders(int otype)
{
double avgprice=0,
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();
}
}
}

avgprice=NormalizeDouble(price/order_lots,Digits);

if(otype == OP_BUY) TP=NormalizeDouble(avgprice+TakeProfit*Point,Digits);
if(otype == OP_SELL) TP=NormalizeDouble(avgprice-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)
bool modify = OrderModify(OrderTicket(), OrderOpenPrice(),0,TP,0);

}
}
}
//+------------------------------------------------------------------+

double FindLastLots(int otype)
{
double oldlots;
int oldticket;

ticket = 0;

for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic && OrderType()==otype)
{
oldticket=OrderTicket();
if(oldticket>ticket)
{
oldlots=OrderLots();
ticket = oldticket;
}
}
}
}
return(oldlots);
}
//+------------------------------------------------------------------+

double FindLastPrice(int otype)
{
double oldopenprice;
int oldticket;

ticket = 0;

for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()==otype)
{
oldticket=OrderTicket();
if(oldticket>ticket)
{
oldopenprice=OrderOpenPrice();
ticket=oldticket;
}
}
}
}
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 CoutTrades()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES));
{
if(OrderSymbol()== Symbol()&& OrderMagicNumber()==Magic)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
 
Последнее редактирование модератором:

Suncharion

Почетный гражданин
mobidik,что то у меня нет алерта пробовал менял значения тоже молчит,может он работает на каком то определенном ТФ или я что то не так делаю?
 

erex

Элитный участник
Конечно, вопрос в том, какой перерисовкой вы можете пренебречь...
Вот такой перерисовкой можно и пренебречь.
Открыл 3 позы по дневке, в случае с еврой не очень удачно.
Поставил трейлинг от KIMIV. Тока что закрылась последняя поза.
Результат порадовал, буду думать.
 

Вложения

  • eur.jpg
    eur.jpg
    289,4 КБ · Просмотры: 306
  • gbp.jpg
    gbp.jpg
    293,7 КБ · Просмотры: 194
  • jpu.jpg
    jpu.jpg
    279,8 КБ · Просмотры: 161
  • all.jpg
    all.jpg
    354,1 КБ · Просмотры: 217
Последнее редактирование:

DIW35902345

Местный житель
Для mobidik !!!

mobidik !!! Здравствуйте , возьметесь за написание советника по индикатору ????
тех.задание ( инд. и dll выложу в личку )

P.S
( не хочу засорять ветку )
 

DIW35902345

Местный житель
Вот такой перерисовкой можно и пренебречь.
Открыл 3 позы по дневке, в случае с еврой не очень удачно.
Поставил трейлинг от KIMIV. Тока что закрылась последняя поза.
Результат порадовал, буду думать.



Что за индикатор - SDA v3.2 в подвале , можете выложить ?
 

mobidik

-----
mobidik,что то у меня нет алерта пробовал менял значения тоже молчит,может он работает на каком то определенном ТФ или я что то не так делаю?

Ты просил:
алерт при достижении хай лоу 25 пунктов.

Данный индюк рисует дневную свечу и информер отображает динамику ценообразования на протяжении дня. Так как хай лоу стало больше какого-то значения, меньше уже на этой свече не будет, это ж максимум и минимум свечи, т.е. с начало дня, как только цена образовала диапазон от максимума до минимума более чем на заданное количество пунктов - алерт, больше он в тот день сигналить не будет. Так, что, все верно, по заданию ты просил по значениях хай лоу.

mobidik !!! Здравствуйте , возьметесь за написание советника по индикатору ????
тех.задание ( инд. и dll выложу в личку )

P.S
( не хочу засорять ветку )

Давай в личку, сперва ТЗ
 
Последнее редактирование:

erex

Элитный участник
Что за индикатор - SDA v3.2 в подвале , можете выложить ?
Нет проблем.
_http://forexsystemsru.com/yazyk-programmirovaniya-mql4/77111-dorabotka-botov-sovetnikov-indikatorov-vol-2-a-56.html#post942913
Его уже обсуждали вместе с PR1 и PR2. Я пробую использовать их все. Как фильтры.
 
Последнее редактирование:

Suncharion

Почетный гражданин
mobidik! Всё понял как он работает ещё раз СПАСИБО тебе и ЖИРНЫХ профитов ГУРУ программирования!
 

evolernet

Местный житель
Всем привет,подлатайте пациентов,выдают ошибки при срабатывание сигнала.Советники сопровождают сделку и при определеном профите закрывают часть позиции по ступеньчато.
посмотрите пожайлуста,думаю нужная вешь для всех.
Заранее большое спасибо.
Посмотреть вложение 191792
Посмотреть вложение 191793
Посмотреть вложение 191794

Всем привет,
неужели все так безнадежно?
Кто нибудь гляньте,что с ними,почему выдает ошибку при закрытие.
Заранее спасибо
 

vjakrasikv

Почетный гражданин
Ребята,помогите подправить индюк. Наверное что-то с билдом. Не устанавливается на графике.
 

Вложения

  • FXForecaster.mq4
    21,8 КБ · Просмотры: 78

olegkrg

Местный знаток
День добрый! сделайте пож сдвиг в индикаторе...и алерт всё время трезвонит..
 

Вложения

  • RSIk4.mq4
    2,7 КБ · Просмотры: 90

Karabas BARABAS

Директор Буратины
Вот такой перерисовкой можно и пренебречь.
Открыл 3 позы по дневке, в случае с еврой не очень удачно.
Поставил трейлинг от KIMIV. Тока что закрылась последняя поза.
Результат порадовал, буду думать.

О как PR работает, а вообще клевая сборка.
меня интересует индюк Essam -рисует или нет?

предполагаю добавить как фильтр 3-level-semafor , но только доработать, а именно - использовать только только большой период и при появлении сигнала фиксировать его, т.к. он рисует - появится новый сигнал ( а старый остался ) цена пошла дальше и опять сигнал - предыдущий НЕ СТИРАЕТСЯ.
т.е. мы можем видеть начало разворота тренда и искать соответствующие входы и соответственно выходить из прежней позиции

может найдутся желающие пере делать индюк (Mobidik :please: )
 

Вложения

  • 3_Level_Semafor_V2.mq4
    9,7 КБ · Просмотры: 113

alexcot

Почетный гражданин
Сделайте , если можно , чтобы работал с любым количеством средств .
 

Вложения

  • ФОРЕКС.rar
    90,6 КБ · Просмотры: 231

donkrasik

Прохожий
Помогите

Снова прошу посмотреть советника и доработать , или добавить коды . Очень прошу, пожалуйста посмотрите.
http://forexsystemsru.com/935932-post954.html
 
Верх