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

ИванМН

Местный знаток
Приветствую, господа! В коде индикатора стоят параметры - год, месяц, неделя, день. Надо добавить - H4, H1, M15, с функцией - true, false у каждого ТФ. Все вынести в настройки. Спасибо.
Увы и ах. Добавить не получится, т.к. в индикаторе уже заняты все 8 максимально разрешённых в MQL4 буферов. Так что чем-то из имеющегося придётся пожертвовать.
 

olgert

Местный знаток
Увы и ах. Добавить не получится, т.к. в индикаторе уже заняты все 8 максимально разрешённых в MQL4 буферов. Так что чем-то из имеющегося придётся пожертвовать.
Хорошо. Тогда можно убрать - год, месяц и неделя. Тогда получится - день, H4, H1, M15.
 

A.S.V.

VIP-участник
Увы и ах. Добавить не получится, т.к. в индикаторе уже заняты все 8 максимально разрешённых в MQL4 буферов. Так что чем-то из имеющегося придётся пожертвовать.
ИванМН у вас всё получится, на счёт 8 максимально разрешённых в MQL4 буферов - это устаревшая информация. С уважением.
 

Вложения

  • 2.png
    2.png
    56,8 КБ · Просмотры: 96

FxMen

VIP-участник
Всем добра и профита! Добавьте плиз изминение в индикатор.

После установки индикатора и добавления его на нужный график, на экране появилась масса различной информации, в том числе и не совсем нужной, которая упорно возвращается на свое место даже после удаления.
• Ваш баланс на данный момент – начальная сумма на депозите трейдера.
• Ваши средства на данный момент – количество денег с учетом прибыли или убытка по открытым позициям.
• Свободно средств – с учетом финансового результата и залога по открытой сделке.
• Спред – показатель спреда на текущий момент, довольно полезная функция для тех, кто торгует используя плавающий спред.
• Стоимость одного пункта – по данной валютной паре, указывается с учетом знаков в котировке.
• Установленный вами лот – устанавливается в настройках индикатора.
• Показатель – при таком тейк профит у вас будет такая то прибыль, сумма прибыли в зависимости от выставленного тейк профит.
• Показатель – сумма убытков в зависимости от выставленного стоп лосс.
• Остаток на балансе с учетом прибыли или убытков.
• Ваш тип BUY или SELL - выбранное направление сделок, устанавливается при осуществлении настроек индикатора.
Уровни установки ордеров отображаются на графике валютной пары в виде двух линий зеленого (профит) и оранжевого (убыток) цветов.
Основные настройки индикатора установки тейк профит и стоп лосс.
BUY – направление будущих сделок, устанавливаем true при восходящем тренде, или false для расчетов уровней стоп ордеров на продажу..
Line ASK – отображение дополнительной, опорной линии, которая находится рядом с ценой.
Lot – прогнозируемый размер лота форекс, объем сделок.
TekstSize – размер шрифта, можно оставить по умолчанию или сделать немного меньше.
При установке стопов следует ориентироваться на линии, а не на текстовые показания индикатора стоп лосс и тейк профит, так как мне лично добиться корректного вывода данных так и не удалось.

ZP.jpg
 

Вложения

ИванМН

Местный знаток
Меня это индикатор не интере, но возник вопрос: можно же при недостатке буферов делать два одинаковых индикатора с различным наполнением этих самых буферов? И выкладывать на чарт два индикатора.
Можно, только желательно им дать разные имена.
Кто вам об этом сказал?
Никто не говорил, читал в какой-то статье по написанию индикаторов. Да, действительно, можно уже устанавливать до 513 (0 - 512) буферов, виноват. Значит, статья была устаревшей: далеко не везде указывают дату публикации.
...у вас всё получится...
Я не пишу индикаторы, так что получаться нечему.
 

olgert

Местный знаток
Господа! Так кто-нибудь сможет дополнить (поправить) индикатор?
 

denc

Местный житель
Привет, здравым людям! Возможно ли отключить эту инфу навсегда? А в правой части графика убрать темно-серую полосу мешает? И на м1 возможно ли сделать, что бы срелки появились? Спасибо!
проверь.. историю уменьшил до 300, на минутах стрелки есть, если файл не перепутал) все на скрине. а да, для пробегающих.. без 3х ex4 инди mq4 работать не будет, разберетесь, если будет интерес)
 

Вложения

Последнее редактирование:

Surem

Почетный гражданин
Уважаемые специалисты, прошу сделать индикаторe настройки чтоб я его мог двигать в любое место графика. Не только по углам ещё отступы x y
 

Вложения

Skyrider

Активный участник

Вложения

1_Lexa

Активный участник
Здравствуйте уважаемые программисты!
Нашёл в ветке такой помощник торговли. Могли бы вы его отредактировать, обнулять отложки при закрытии открытых ордеров по профиту? То есть, чтобы отложки открылись по новому от 0.1,0.2 и так далее

Я не использую внутреннюю функцию закрытия, использую только открытие ордеров

Нашел такую статью
Например, следующий код определяет, что все рыночные ордера пирамиды закрылись по Stop Loss и теперь требуется удалить несработавшие отложенные:

1
2
3
4
5
6
7
// сетка ордеров закрылась по общему стоп-лоссу, удаляем оставшиеся отложки
if((State.BuyStopCount>0 && State.BuyStopCount<OrdersAmount && State.BuyCount==0) ||
(State.SellStopCount>0 && State.SellStopCount<OrdersAmount && State.SellCount==0))
{
// удаляем отложенные ордера
DeletePendingOrders();
}
В следующем участке кода решение о построении новой сетки мы принимаем только в случае, если нет ни рыночных, ни отложенных ордеров, открытых нашим советником:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// если сформирован новый бар, опрашиваем индикаторы с помощью вызова функции GetSignal()
// и записываем результат в переменную TradeSignal
int TradeSignal=GetSignal();

// на открытии нового бара нет ни отложенных ни рыночных ордеров
if(State.BuyCount==0 && State.SellCount==0 && State.BuyStopCount==0 && State.SellStopCount==0)
{
// если при этом сформирован торговый сигнал, строим пирамиду указанного типа
if(TradeSignal!=EMPTY)
BuildPyramid(TradeSignal);
// выходим, так как дальнейшая обработка не имеет смысла, так как
// либо никаких ордеров нет вовсе, либо мы только что построили пирамиду
return;
}
Есть еще увеличение шага внутри сетки
 

MERFY

Местный знаток
Уважаемые программисты!
Замените пожалуйста в советнике рыночные ордера на отложенные (BAYLIMIT и SELLLIMIT).
Т.е после закрытия предыдущей позиции по SL либо TP, отложенник должен следовать за ценой(BAYLIMIT только вверх,SELLLIMIT только вниз)на заданном расстоянии(добавить в настройках) пока не сработает!
Заранее благодарен!
Присоединяюсь к просьбе, хочется протестить в таком варианте неваляшку.
 

1_Lexa

Активный участник
Код:
Expand Collapse Copy
int   TrailingStopOrders  = 20;        // Фиксированный размер трала StopOrders
int   TrailingStepStop    = 3;         // Шаг трала StopOrders
int   TrailingLimitOrders = 30;        // Фиксированный размер трала LimitOrders
int   TrailingStepLimit   = 3;         // Шаг трала LimitOrders
color clModifyBuyOrder  = clrNONE;     // Цвет значка модификации покупки
color clModifySellOrder = clrNONE;     // Цвет значка модификации продажи
//===============================================================================================
//------------------------- Сопровождение Stop ордеров простым тралом --------------------------+
//===============================================================================================
void TrailingStopOrder(string symb="0",int type=-1,int mg=-1) {
double di=0, pa=0, pb=0, p=0, sl=0, tp=0;
if(symb=="0") { symb=Symbol();}
  p=MarketInfo(symb,MODE_POINT);
  int msl=(int)MarketInfo(symb, MODE_STOPLEVEL);
  if(TrailingStopOrders<msl) {
   Alert("TrailingStopOrder(): Значение меньше допустимого=",TrailingStopOrders/Sign,", Минимум=",msl/Sign);
   TrailingStopOrders=msl;} else {TrailingStopOrders=TrailingStopOrders;}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUYSTOP) {
      pa=MarketInfo(symb,MODE_ASK);
      if(OrderOpenPrice()-pa>(TrailingStopOrders+TrailingStepStop-1)*p) {
       di=OrderOpenPrice()-pa-(TrailingStopOrders*p);
       if(OrderStopLoss()>0) sl=OrderStopLoss()-di; else sl=0;
       if(OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=0;
         ModifyOrder(symb,pa+(TrailingStopOrders*p), sl, tp, clModifyBuyOrder);
     }}
     if(OrderType()==OP_SELLSTOP) {
      pb=MarketInfo(symb,MODE_BID);
      if(pb-OrderOpenPrice()>(TrailingStopOrders+TrailingStepStop-1)*p) {
       di=pb-OrderOpenPrice()-(TrailingStopOrders*p);
       if(OrderStopLoss()>0) sl=OrderStopLoss()+di; else sl=0;
       if(OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=0;
         ModifyOrder(symb,pb-(TrailingStopOrders*p), sl, tp, clModifySellOrder);
     }}
}}}}
//===============================================================================================
//------------------------- Сопровождение Limit ордеров простым тралом -------------------------+
//===============================================================================================
void TrailingLimitOrder(string symb="0",int type=-1,int mg=-1) {
double di=0, pa=0, pb=0, p=0, sl=0, tp=0;
if(symb=="0") { symb=Symbol();}
  p=MarketInfo(symb,MODE_POINT);
  int msl=(int)MarketInfo(symb, MODE_STOPLEVEL);
  if(TrailingLimitOrders<msl) {
   Alert("TrailingLimitOrder(): Значение меньше допустимого=",TrailingLimitOrders/Sign,", Минимум=",msl/Sign);
   TrailingLimitOrders=msl; } else { TrailingLimitOrders=TrailingLimitOrders; }
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUYLIMIT) {
      pa=MarketInfo(symb,MODE_ASK);
      if(pa-OrderOpenPrice()>(TrailingLimitOrders+TrailingStepLimit-1)*p) {
       di=pa-OrderOpenPrice()-(TrailingLimitOrders*p);
       if(OrderStopLoss()>0) sl=OrderStopLoss()+di; else sl=0;
       if(OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=0;
         ModifyOrder(symb,pa-(TrailingLimitOrders*p), sl, tp, clModifyBuyOrder);
     }}
     if(OrderType()==OP_SELLLIMIT) {
      pb=MarketInfo(symb,MODE_BID);
      if(OrderOpenPrice()-pb>(TrailingLimitOrders+TrailingStepLimit-1)*p) {
       di=OrderOpenPrice()-pb-(TrailingLimitOrders*p);
       if(OrderStopLoss()>0) sl=OrderStopLoss()-di; else sl=0;
       if(OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=0;
         ModifyOrder(symb,pb+(TrailingLimitOrders*p), sl, tp, clModifySellOrder);
     }}
}}}}
Ещё нашёл такой код, если можно его прикрутить туда
 

VHUAuXO5

Активный участник
Приветствую! Нужны стрелки на графике при пересечении 0 линии
 

Вложения

barop

Интересующийся
Привет друзья, не торгует в Buy, торгует только в Sell поправьте пожалуйста если можно чтобы торговал в две стороны.
 

Вложения

Посмотрели (321) Посмотреть

Смотрят сейчас (4) Посмотреть

Отслеживают (1806) Посмотреть

Верх