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

mobidik

-----
предыдущие версии без отложек, хотел отложки в тестере погонят, а тут такая ерунда пошла, панелька не выезжает с настройками отложек, а так.. просто бай и селл в тестере гоняется.. вышел из тестера, попробовал закинуть на график и не ставится вообще, сразу слетает, а объекты от панельки остаются..
у вас тоже в тестере работают отложки, панелька выдвигается с ними как у Макса?

Нет, в тестере не включаются сейчас отложки и не меняется цветовая тема, при этом в обычном окне все работает.
 

shipigaaa

Новичок форума
Уважаемые спецы!!! Обратите пожалуйста внимание на пост 4702,а то 17 просмотров и ...тишина...
 

RoboMaks

Элитный участник
Нет, в тестере не включаются сейчас отложки и не меняется цветовая тема, при этом в обычном окне все работает.

В тестере отложки нормально работают, но изменение окна и цвета окна связано с обработчиком событий OnChartEvent() и это не работает в тестере ( видимо - это какая-то недоработка терминала, в тестере эта функция не работает). Надо в настройках поставить тип окна TypeWind = 2; для полного окна в тестере
 

Вложения

  • USDJPYM5.png
    USDJPYM5.png
    54,8 КБ · Просмотры: 108

RoboMaks

Элитный участник
Уважаемые спецы!!! Обратите пожалуйста внимание на пост 4702,а то 17 просмотров и ...тишина...

Ему требуются индюки super-signals-channel и Slope Direction Line.

if(iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i)>
iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i+1)
&& iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i+1)<
iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i+2))sdlbar1=i;
}
int sdlbar2=0;
for(i=0;i<=100;i++){
if(sdlbar2!=0)continue;
if(iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i)<
iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i+1)
&& iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i+1)>
iCustom(NULL,sdltimeframe,"Slope Direction Line",sdlperiod,method,price,2,i+2))sdlbar2=i;
}
}

double ma = iCustom(NULL, sdltimeframe, "super-signals-channel",SignalGap,ShowBars,dist,2, shift);
double ma1 = iCustom(NULL, sdltimeframe, "super-signals-channel",SignalGap,ShowBars,dist,3, shift);

Выложенный Вами индюк никакого отношения к этому сову не имеет.
 

Вложения

  • super-signals-channel.EA.mq4
    52,6 КБ · Просмотры: 75
Последнее редактирование:

RoboMaks

Элитный участник
а на скрине Макс, выше выкладывал, в журнале (1016, 128) - это с что, для чего? Или как можно узнать что именно не так?
Оооочень не хочется все переустанавливать..

Пропустил чёт это сообщение :) Строка 1016 в коде - это расчёт лота
Lot*100*MarketInfo(Symbol(),MODE_MARGINREQUIRED)/AccountBalance()

На скрине не видно - есть инет или нет, возможно - нет связи терминала с сервером (нет данных о балансе счёта), он не может рассчитать лот (zero - результат расчёта нулевой) - вот и выбивает из-за ошибки.
 

Трактор

Новичок форума
А может кто-нибудь помочь с советником. Советник должен открывать позиции после таких вот свечных комбинаций

cmql4comfo_6761854_19108052.jpg


на продажу я так описал

PHP:
(High[1] >= MathMax(Open[2], Close[2]) && High[1] >= MathMax(Open[3], Close[3])     && (High[2] - MathMax(Open[2],Close[2]))/MathAbs(Open[2]-Close[2]) > 2  && (MathMin(Open[2], Close[2]) - Low[2])<  (High[2] - MathMax(Open[2],Close[2]))/2    && Close[1] < MathMin(Close[2], Open[2]) && Close[1]< MathMin(Open[3], Close[3]) &&Volume[0]>3)
на покупку так

PHP:
(Open[1] >= MathMax(Open[2], Close[2]) && Close [1] >= MathMax(High[3], Close[3])     && (High[2] - MathMax(Open[2],Close[2]))/MathAbs(Open[2]-Close[2]) > 1  && (MathMin(Open[2], Close[2]) - Low[2])>  (High[2] - MathMax(Open[2],Close[2]))/2    && Close[1] > MathMax(Close[2], Open[2]) && Close[1]> MathMax(Open[3], Close[3]) &&Volume[0]>3)
короче советник при обнаружении таких комбинаций должен открыть позицию с тейком на 161.8 по фибо от максимума/минимума первой до второй свечи в зависимости от комбинации (покупка продажа). Стоп выставляется на минимуме или максимуме второй свечи. Считай уровне 0 по фибо.

На продажу сделки открываются вроде корректно, а вот на покупку нет. Свечная комбинация, при которой происходит открытие, никак не похожа на ту, которая на картинке. И ещё возникла проблема при открытии, когда стоп получается очень близко. Позиция постоянно открывается и закрывается по стопу, пока не пройдёт условие. То есть нужно, чтобы советник открывался на свечной комбинации только один раз, а не пока есть условие. Я для этого вначале кода воткнул
[
PHP]bool New_Bar=false;[/PHP]а в конце
PHP:
 void Fun_New_Bar()                              // Ф-ия обнаружения ..  {                                             // .. нового бара   static datetime New_Time=0;                  // Время текущего бара   New_Bar=false;                               // Нового бара нет   if(New_Time!=Time[0])                        // Сравниваем время     {      New_Time=Time[0];                         // Теперь время такое      New_Bar=true;                             // Поймался новый бар     }
Только вот с этой штукой советник по-моему вообще перестал что-то видеть на графиках.
Ещё возникла проблема с тейком. Он иногда значительно отличается от 161.8. В советнике через iCustom используется ещ и канал линейной регрессии. Если свечная комбинация выше/ниже его, то тейк выставляется до 261.8. Ещё думаю воткнуть в него другие свечные комбинации. Например банальное поглощение. Но мне бы с этими двумя разобраться. Может кто может помочь?

Вот код всего советника
PHP:
#property strictextern double Lot = 0.1; extern int Magic = 454;extern int degree = 3;extern double kstd = 2.0;extern int bars = 250;extern int shift = 0;double SL1,SL2,TP1,TP2,TP3,TP4;//+------------------------------------------------------------------+//| Expert initialization function                                   |//+------------------------------------------------------------------+int OnInit()  {//---   //---   return(INIT_SUCCEEDED);  }//+------------------------------------------------------------------+//| Expert deinitialization function                                 |//+------------------------------------------------------------------+void OnDeinit(const int reason)  {//---     }//+------------------------------------------------------------------+//| Expert tick function                                             |//+------------------------------------------------------------------+bool New_Bar=false;int start()  {     int kolpos = 0;        double Line1 = iCustom (Symbol(),0,"i-Regr",1,1);    double Line2 = iCustom (Symbol(),0,"i-Regr",2,1);  //---   SL2 = MathMin(Low[2], Low[1]);SL1 = MathMax(High[2], High[1]);     //----------------------------------------------------     if (Digits == 3)   {   TP1=NormalizeDouble((Low[1]+(High[1]-Low[2])*1.618),3);   }   if (Digits == 2)   {   TP1=NormalizeDouble((Low[1]+(High[1]-Low[2])*1.618),2);   }      if (Digits == 4)   {   TP1=NormalizeDouble((Low[1]+(High[1]-Low[2])*1.618),4);   }   if (Digits == 5)   {   TP1=NormalizeDouble((Low[1]+(High[1]-Low[2])*1.618),5);   }   //---------------------------------------------------      if (Digits == 3)   {   TP2=NormalizeDouble((High[1]-(High[2]-Low[1])*1.618),3);   }   if (Digits == 2)   {   TP2=NormalizeDouble((High[1]-(High[2]-Low[1])*1.618),2);   }      if (Digits == 4)   {   TP2=NormalizeDouble((High[1]-(High[2]-Low[1])*1.618),4);   }   if (Digits == 5)   {   TP2=NormalizeDouble((High[1]-(High[2]-Low[1])*1.618),5);   }    //--------------------------------------------    if (Digits == 3)   {   TP3=NormalizeDouble((High[1]-(High[2]-Low[1])*2.618),3);   }   if (Digits == 2)   {   TP3=NormalizeDouble((High[1]-(High[2]-Low[1])*2.618),2);   }      if (Digits == 4)   {   TP3=NormalizeDouble((High[1]-(High[2]-Low[1])*2.618),4);   }   if (Digits == 5)   {   TP3=NormalizeDouble((High[1]-(High[2]-Low[1])*2.618),5);   }   //-------------------------------------------------------     if (Digits == 3)   {   TP4=NormalizeDouble((Low[1]+(High[1]-Low[2])*2.618),3);   }   if (Digits == 2)   {   TP4=NormalizeDouble((Low[1]+(High[1]-Low[2])*2.618),2);   }      if (Digits == 4)   {   TP4=NormalizeDouble((Low[1]+(High[1]-Low[2])*2.618),4);   }   if (Digits == 5)   {   TP4=NormalizeDouble((Low[1]+(High[1]-Low[2])*2.618),5);   }     for (int pos=0; pos<OrdersTotal();pos++)   {   OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);   if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)   kolpos++;              }           if (kolpos==0)           { //--------------------------------------------------------              if (High[1] >= MathMax(Open[2], Close[2]) && High[1] >= MathMax(Open[3], Close[3])     && (High[2] - MathMax(Open[2],Close[2]))/MathAbs(Open[2]-Close[2]) > 2  && (MathMin(Open[2], Close[2]) - Low[2])<  (High[2] - MathMax(Open[2],Close[2]))/2    && Close[1] < MathMin(Close[2], Open[2]) && Close[1]< MathMin(Open[3], Close[3]) &&Volume[0]>3)   {      OrderSend(Symbol(),OP_SELL,Lot,Bid,3,SL1,TP2,NULL,Magic,0,Red);      } //----------------------------------------------------------        if (Open[1] >= MathMax(Open[2], Close[2]) && Close [1] >= MathMax(High[3], Close[3])     && (High[2] - MathMax(Open[2],Close[2]))/MathAbs(Open[2]-Close[2]) > 1  && (MathMin(Open[2], Close[2]) - Low[2])>  (High[2] - MathMax(Open[2],Close[2]))/2    && Close[1] > MathMax(Close[2], Open[2]) && Close[1]> MathMax(Open[3], Close[3]) &&Volume[0]>3)   {      OrderSend(Symbol(),OP_BUY,Lot,Ask,3,SL2,TP1,NULL,Magic,0,Green);      }   //-------------------------------------------------------            if (Open[1] >= MathMax(Open[2], Close[2]) && Close [1] >= MathMax(High[3], Close[3])     && (High[2] - MathMax(Open[2],Close[2]))/MathAbs(Open[2]-Close[2]) > 1  && (MathMin(Open[2], Close[2]) - Low[2])>  (High[2] - MathMax(Open[2],Close[2]))/2    && Close[1] > MathMax(Close[2], Open[2]) && Close[1]> MathMax(Open[3], Close[3])&&Low[2]<Line2 &&Volume[0]>3)   {   OrderSend(Symbol(),OP_BUY,Lot,Ask,3,SL2,TP4,NULL,Magic,0,Green);   }   //-------------------------------------------------------   if (High[1] >= MathMax(Open[2], Close[2]) && High[1] >= MathMax(Open[3], Close[3])     && (High[2] - MathMax(Open[2],Close[2]))/MathAbs(Open[2]-Close[2]) > 2  && (MathMin(Open[2], Close[2]) - Low[2])<  (High[2] - MathMax(Open[2],Close[2]))/2    && Close[1] < MathMin(Close[2], Open[2]) && Close[1]< MathMin(Open[3], Close[3]) &&Volume[0]>3 &&Low[1]<Line2)   {      OrderSend(Symbol(),OP_SELL,Lot,Bid,3,SL1,TP3,NULL,Magic,0,Red);      }     }        //-----  return(0);  }   void Fun_New_Bar()                              // Ф-ия обнаружения ..  {                                             // .. нового бара   static datetime New_Time=0;                  // Время текущего бара   New_Bar=false;                               // Нового бара нет   if(New_Time!=Time[0])                        // Сравниваем время     {      New_Time=Time[0];                         // Теперь время такое      New_Bar=true;                             // Поймался новый бар     }  }//+------------------------------------------------------------------+
 
Последнее редактирование модератором:

Novikov

Гуру форума
Уважаемые, подправьте пожалуйста индикатор построения ренж баров :please:

а именно надо подправить параметр
CandleSize=50 // строит ренж бары как для 4х значных котировок,
а надо, что бы можно было задавать параметр по типу 50.5 - как для 5ти значных котировок с десятичными!

Заранее благодарю! ;)
 

Вложения

  • RenkoRangeBarsV1.2 new format.mq4
    16,5 КБ · Просмотры: 46

borobor

Элитный участник
Уважаемые, подправьте пожалуйста индикатор построения ренж баров :please:

а именно надо подправить параметр
CandleSize=50 // строит ренж бары как для 4х значных котировок,
а надо, что бы можно было задавать параметр по типу 50.5 - как для 5ти значных котировок с десятичными!

Заранее благодарю! ;)
в коде вместо int CandleSize =50 - поставь double CandleSize =50
 

MrGreen86

Гуру форума
:please:Уважаемые спецы исправвьте пожалуйста ошибки в сове и сделайте так чтобы он открывал ордер сразу при появлении стрелки (на нулевом баре на котором появилась стрелка)советник и ндикатор прилагаю(данный сов нужен для работы по тренду в одну сторону...т.е трейдер сам определяет тренд и вешает сову чтобы она зашла с отката в нужном трейдеру направлении...только-бай или только селл)

ошибки поправил, на предупреждения можете забить.
в нем есть замечательный параметр shift, поставьте 0 и будет открытие сразу.
Посмотреть вложение super-signals-channel.EA.mq4
 

Mixail35rus

Прохожий
Доработка советника

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

Вложения

  • Trendrsi.mq4
    6,9 КБ · Просмотры: 56
  • TrendRSI_v3.mq4
    4,1 КБ · Просмотры: 59
  • TrendRSI_v3.ex4
    12,3 КБ · Просмотры: 36

dim777777

Новичок форума
Эти два индикатора не компилируются , посмотрите пожалуйста кому не сложно
 

Вложения

  • PointZero.mq4
    21,8 КБ · Просмотры: 45
  • PointZeroOscillator.mq4
    12,9 КБ · Просмотры: 47

Апельсин

Прохожий
Уважаемые знатоки, помогите, пожалуйста, с несложной переделкой советника Cm-BURN-42-600!

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

Еще хотелось бы добавить возможность установки начала сессии с точностью до минуты, то есть не в 12:00 например,как раньше, а хоть в 12:34, хоть в 12:01.

Ну и еще одну абсолютно не сложную фишку прикрутить бы- если одна из позиций закрывается по стопу, то вторая отложка тут же удаляется -Функция isCloseLastPosByTake - отличный инструмент, судя по описанию, но у меня так и не получается ввести его в работу, равно как и просто вырезать коды безубытка и прочих сопровождений- все перестает компилиться, я уже устал пытаться одолеть это. Помогите пожалуйста, в программировании я пока что вообще не силен,мне в одиночку это изучать не один месяц, а для того, кто владеет языком, такие переделки- дело 5ти минут, разве нет? Очень надеюсь на вашу помощь, с уважением.
 

advanced

Элитный участник
Ребята,
добавте пожалуйсто 3 дополнительные фибо уровни в этот индикатор (уровни нужны ,как на скрине).
А присутсвующие уровня Сделайте пожалуйсто с индивидуальными настройками.
Благадарю за ранее.

Rebyata ...20 skachivanij...skinet kto nibudi podpravlennyj...?! оО
 

Вложения

  • Fibo.png
    Fibo.png
    70,2 КБ · Просмотры: 166
  • Fibo H4.png
    Fibo H4.png
    52,8 КБ · Просмотры: 115

AlanG

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

Еще хотелось бы добавить возможность установки начала сессии с точностью до минуты, то есть не в 12:00 например,как раньше, а хоть в 12:34, хоть в 12:01.

Ну и еще одну абсолютно не сложную фишку прикрутить бы- если одна из позиций закрывается по стопу, то вторая отложка тут же удаляется -Функция isCloseLastPosByTake - отличный инструмент, судя по описанию, но у меня так и не получается ввести его в работу, равно как и просто вырезать коды безубытка и прочих сопровождений- все перестает компилиться, я уже устал пытаться одолеть это. Помогите пожалуйста, в программировании я пока что вообще не силен,мне в одиночку это изучать не один месяц, а для того, кто владеет языком, такие переделки- дело 5ти минут, разве нет? Очень надеюсь на вашу помощь, с уважением.
Лови:):rolf:
 

Tankk

*********
Эти два индикатора не компилируются , посмотрите пожалуйста кому не сложно

скомпилировал.....

Посмотреть вложение PointZero+Oscillator.zip

PointZeroOscillator.png

прикрутите, пожалуйста MTF именно к этому индюку = другие CCI MTF пробовал - они мне не подходят....

Посмотреть вложение CCI $Real Woodie.mq4 === а ещё лучше было бы -- MTF только для одного первого параметра индюка "TrendCCI_Period"

СПАСИБО!
 
Последнее редактирование:

AlanG

Элитный участник
скомпилировал.....

Посмотреть вложение 222281

Посмотреть вложение 222280

прикрутите, пожалуйста MTF именно к этому индюку = другие CCI MTF пробовал - они мне не подходят....

Посмотреть вложение 222282 === а ещё лучше было бы -- MTF только для одного первого параметра индюка "TrendCCI_Period"

СПАСИБО!

попробуй этот:)
 

Вложения

  • Supertrend CCI.ex4
    7,6 КБ · Просмотры: 90
Верх