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

Surem

Почетный гражданин
Приветствую специалисты. Хотелось бы в пипсах или в чём лучше подскажите, иметь цифры например в правом вернем углу терминала которые будут показывать текущую ширину канала Кельтнера. Можно не мельчить сильно. зрение уже не то. А если уже есть такой индюк поделитесь пожалуйста или напишите название, сам не нашёл.
 

Вложения

kos17788

Почетный гражданин
Здравствуйте. Можно пожалуйста добавить среднюю линию между двумя красными ( как на скрине это желтая линия). Спасибо!
 

Вложения

  • доработка.jpg
    доработка.jpg
    138,4 КБ · Просмотры: 249
  • ySarFBAv2.mq4
    ySarFBAv2.mq4
    6,2 КБ · Просмотры: 32

Tankk

*********
Здравствуйте. Можно пожалуйста добавить среднюю линию между двумя красными ( как на скрине это желтая линия). Спасибо!
ySarFBAv2,2

Добрый день. Доработайте, пожалуйста, этот индикатор так чтобы средняя линия (желтая) меняла свой цвет при переходе от большего значения к меньшему и наоборот (см. рис). Спасибо.
ySarFBAv2,3
 

Вложения

  • ySarFBAv2,2_29-09-2023.png
    ySarFBAv2,2_29-09-2023.png
    72,2 КБ · Просмотры: 295
  • ySarFBAv2,2.mq4
    ySarFBAv2,2.mq4
    6,9 КБ · Просмотры: 52
  • ySarFBAv2,3_02-10-2023.png
    ySarFBAv2,3_02-10-2023.png
    94,8 КБ · Просмотры: 236
  • ySarFBAv2,3.mq4
    ySarFBAv2,3.mq4
    8,4 КБ · Просмотры: 54

1_Lexa

Активный участник
Код:
Expand Collapse Copy
void TralOverlap()
  {
  

   switch(overlap)
     {
      case 1:
      case 2:
      case 3:
      case 4: {ColOver0=clrDeepSkyBlue; ColOver1=clrAqua; Typetral="Трал частичн. перекрытия!";} break;

      case 5:
      case 6:
      case 7:
      case 8:  {ColOver0=clrGold; ColOver1=clrYellow; Typetral="Трал основн. перекрытия!";} break;
      case 9:
      case 10:
      
      default: break;
     }
   switch(overlap)
     {
      case 10:
      case 8:
      case 6:
      case 4:
      case 2:
        {
         if(!flag)
           {
            PrOver=NormalizeDouble(Ask,Digits);
            flag=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver0,1);
              }
           }
         else if(flag && !flag1 && Ask<PrOver-OverTralStart*Point)
           {
            flag1=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver1,1);
              }
           }
         else if(flag1)
           {
            if(Ask<PrOver-(OverTralStart+OverTralSize)*Point)
              {
               PrOver=Ask+OverTralStart*Point;
               if(Info)
                 {
                  DrawLine("IOverTP",PrOver,ColOver1,1);
                 }
              }
            else if(Ask>=PrOver)
              {
               if(Info)
                 {
                  DeleteSelObj("IOverTP");
                  DeleteSelObj("ItxtOver");
                 }
               switch(overlap)
                 {
                  case 2:
                    {
                     int t=0;
                     if(Cprofit1!=0)
                       {
                        for(int i=0; i<ArraySize(Clot); i++)
                          {
                           double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],-1,Clot[i])) t++;
                             }
                          }
                        if(t>0) {for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;}
                       }
                    }
                  break;
                  case 4:
                    {
                      m=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                           double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],OP_SELL,Clot[i])) m++;
                             }
                          }
                        if(m>0) {for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_SELL); flag=false;}
                       }
                    }
                  break;
                  case 6:
                    {
                     if(CloseOrder(Cpos[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;
                       }
                    }
                  break;
                  case 8:
                    {
                     if(CloseOrder(Cpos[0],OP_SELL,Clot[0]))
                       {
                        for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_SELL,Llot[i]); flag=false;
                       }
                    }
                  break;
                  
                 }
               if(!flag)
                 {
                  flag1  =false;
                  PrOver =0.0;
                  overlap=0;
                 }
              }
           }
        }
      break;
      case 9:
      case 7:
      case 5:
      case 3:
      case 1:
        {
         if(!flag)
           {
            PrOver=NormalizeDouble(Bid,Digits);
            flag=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver0,1);
              }
           }// запоминаем уровень один раз
         else if(flag && !flag1 && Bid>PrOver+OverTralStart*Point)
           {
            flag1=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver1,1);
              }
           }
         else if(flag1)
           {
            if(Bid>PrOver+(OverTralStart+OverTralSize)*Point)
              {
               PrOver=Bid-OverTralStart*Point;
               if(Info)
                 {
                  DrawLine("IOverTP",PrOver,ColOver1,1);
                 }
              }
            else if(Bid<=PrOver)
              {
               if(Info)
                 {
                  DeleteSelObj("IOverTP");
                  DeleteSelObj("ItxtOver");
                 }
               switch(overlap)
                 {
                  case 1:
                    {
                      int t=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                            double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],-1,Clot[i])) t++;
                             }
                          }
                        if(t>0) {for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;}
                       }
                    }
                  break;
                  case 3:
                    {
                       m=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                            double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],OP_BUY,Clot[i])) m++;
                             }
                          }
                        if(m>0) {for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_BUY); flag=false;}
                       }
                    }
                  break;
                  case 5:
                    {
                     if(CloseOrder(Cpos[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;
                       }
                    }
                  break;
                  case 7:
                    {
                     if(CloseOrder(Cpos[0],OP_BUY,Clot[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_BUY,Llot[i]); flag=false;
                       }
                    }
                  break;             
                 }
               if(!flag)
                 {
                  flag1  =false;
                  PrOver =0.0;
                  overlap=0;
                 }
              }
           }
        }
      break;
     }
  }
Здравствуйте уважаемые программисты, не могли бы вы усовершенствовать этот код?
case 4: {ColOver0=clrDeepSkyBlue; ColOver1=clrAqua; Typetral="Трал частичн. перекрытия!";} break;

case 5:
case 6:
case 7:
case 8: {ColOver0=clrGold; ColOver1=clrYellow; Typetral="Трал основн. перекрытия!";} break;
Чтобы эта часть постоянно искала зоны перекрытия и рисовала на графике и линии тралла перерисовывались, обновлялись, например: если их удалить вручную.
Это советник MODULE 3.4
 

блондинка

Элитный участник
Всем привет!На этой ветке недавно был индикатор (стрелка) в формате mq4 у которого алерт был за пару минут до закрытия свечи (стрелка на нулевом баре появлялась),я его скачала но увы потеряла.Собственно мне только образец кода от неё нужен для своей стрелки.Кто вспомнит-выложите по новой для меня,буду очень признательна!!!)))
 

блондинка

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

Tankk

*********
Всем привет!На этой ветке недавно был индикатор (стрелка) в формате mq4 у которого алерт был за пару минут до закрытия свечи (стрелка на нулевом баре появлялась),я его скачала но увы потеряла.Собственно мне только образец кода от неё нужен для своей стрелки.Кто вспомнит-выложите по новой для меня,буду очень признательна!!!)))
этот!? посмотри.... индюк ADX_Crossing_TimingAlert...
panand сказал(а):
тайминг для того,чтобы на период указанного времени в секундах, с момента открытия свечи, не игнорировать сигнал...
после окончания тайминга полностью игнорировать сигнал алерт звука и стрелки, до конца периода текущей свечи.


спасибо))), этот то же пригодиться в хозяйстве))),
только он наоборот -сигналит не до закрытия свечи на заданное время(если стрелка в этот момент есть), а сразу после открытия в течении заданного времени(тайминг в секундах)
тогда вот этот код попробуй :unsure:

Сколько секунд осталось до закрытия свечи??:
Expand Collapse Copy
bool SndFlag=true;  int SndSec;  //для Сколько секунд осталось до закрытия свечи??
//------
void HowSecondsCloseTF()  //(int MTF)
{
   datetime TM, TC, SecLeft;
   int T60= TimeFrame*60;  //_Period
   SndSec = SecondsCloseClockTF;
//------
   TM = Time[0] + T60;   /*iTime(_Symbol,MTF,0) + T60*/
   TC = TimeCurrent();
//------
   SecLeft = TM - TC;
   if (TM < TC) SecLeft = (T60 - SecLeft) - T60;
//------
      if (SndSec > 0)
    {   
     if (SndFlag && SecLeft > SndSec) SndFlag = false;
     if (SecLeft <= SndSec && !SndFlag)
      {
       SndFlag = true;
       //---
       string message = "До закрытия "+StringTF(TimeFrame)+" осталось "+(int)SecLeft+" секунд!!   " + "There are "+(int)SecLeft+" seconds left until the "+StringTF(TimeFrame)+" closes!!";
       if (AlertsMessage) Alert(message);
       if (AlertsEmail)   SendMail(_Symbol,message);
       if (AlertsMobile)  SendNotification(message);
       if (AlertsSound)   PlaySound(SoundFile);   //"stops.wav"   //"news.wav"
      }       
    } //*конец* if (SndSec > 0)....
//---
return;
}
 

Вложения

Nobodys Hero

Активный участник
Привет, спасибо большое! И спасибо за индикатор
Добрый день. Доработайте, пожалуйста, этот индикатор так чтобы средняя линия (желтая) меняла свой цвет при переходе от большего значения к меньшему и наоборот (см. рис). Спасибо.
 

Вложения

  • рис.jpg
    рис.jpg
    70,5 КБ · Просмотры: 242
  • ySarFBAv2,2.mq4
    ySarFBAv2,2.mq4
    6,9 КБ · Просмотры: 58

juror

Гуру форума
Здравия уважаемые! Суть проблемы, при переносе или удлинении зоны по оси х с котировкой > 6 цифр, нижняя линия зоны уходит в ∞. Может кто встречался с таким глюком?

Для редактора, стр. 114 по 156 (если я правильно понял)

Настройки золото 0.5, 0.1.
 

Вложения

  • bandicam 2023-10-01 13-30-39-949.jpg
    bandicam 2023-10-01 13-30-39-949.jpg
    186,8 КБ · Просмотры: 194
  • bandicam 2023-10-01 13-40-33-381.jpg
    bandicam 2023-10-01 13-40-33-381.jpg
    213,5 КБ · Просмотры: 195
  • ZMK.mq4
    ZMK.mq4
    51,5 КБ · Просмотры: 28

marthal

Новичок форума
Здравствуйте!
Ребята гляньте пожалуйста , не сигналит зараза, хотя должен.фишер.png
 

Вложения

uzinterello

Элитный участник
уважаемые программисты , пожалуйста выводите стрелки в буфер и желательно добавить алертхил.png
 

Вложения

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

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

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

Верх