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

Статус
Закрыто для дальнейших ответов.

zhserg

Местный знаток
Христос Воскрес. Всех с праздником и профита Есть индикатор, который показывает минимум и максимум дневной свечи. Я хотел бы добавить в него настраиваемый параметр ( например "отступ"=10). На графике должно быть четыре ценовые метки. Минимум и максимум дня (например 1.3000 и 1.2900) и заданный отступ (например 1.3010 и 1.2890). Надеюсь так будет понятно. Помогите пожалуйста. спасибо
Вот сам индикаторПосмотреть вложение 161407

:)
 

Вложения

спрут

Местный знаток
Можно... Просто закомментируйте строки начинающиеся с
PHP:
extern string

вот честно... в этом не силен.. пусть будут настройки по умолчанию но без строковых переменных.. как их закоментировать я не знаю... если мона выложите сюда без этих коментариев.. мне нужен это индюк для тестирования с помощью робота exp_iCustom_v9_Martingale_OS_v1. ему нужно название индюка параментры без строковых переменных и буферы в данном случае я собирался использовать пересечение уровней -0.25 и +0.25
 

Alley

Местный житель
eevviill делал этот индюк мне, но он иногда уходит с графика ( линия рси )
вот если бы кто доделал чтобы уровни 0 и 100 были в пределах графика.... и выставлялись уровни 30 50 70 былобы GOOD

Ребята, привет!:)
ВСЕХ С ПРАЗДНИКОМ!!!*hi*

По поводу РСИ индикатора в чарт перенести. Очень удобный есть и предлагаю на помощь в графике на свечах сигналы живьем просматривать
-ОЧЕНЬ ДАЖЕ УДОБНО, ПОПРОБУЙТЕ!
 

Вложения

  • ! OnChart Rsi.mq4
    ! OnChart Rsi.mq4
    4,8 КБ · Просмотры: 68
  • ! OnChart Rsi.ex4
    ! OnChart Rsi.ex4
    6,2 КБ · Просмотры: 53
  • !   OnChart Rsi.gif
    ! OnChart Rsi.gif
    60,5 КБ · Просмотры: 180

Dendjo

Местный житель
Ребята, привет!:)
ВСЕХ С ПРАЗДНИКОМ!!!*hi*

По поводу РСИ индикатора в чарт перенести. Очень удобный есть и предлагаю на помощь в графике на свечах сигналы живьем просматривать
-ОЧЕНЬ ДАЖЕ УДОБНО, ПОПРОБУЙТЕ!

*hi*вот спасибо огромное, посмотрим это чудо :)
 

Елена4

Активный участник
Ребята как написать текст возле ценовой метки
в этой части кода
PHP:
ObjectCreate("Yesterdays High line",OBJ_ARROW, 0, Time[0], yesterday_high);
ObjectSet("Yesterdays High line", OBJPROP_WIDTH, 1);
ObjectSet("Yesterdays High line", OBJPROP_COLOR, Blue);
ObjectSet("Yesterdays High line",OBJPROP_ARROWCODE,6);
 

zhserg

Местный знаток
вот честно... в этом не силен.. пусть будут настройки по умолчанию но без строковых переменных.. как их закоментировать я не знаю... если мона выложите сюда без этих коментариев.. мне нужен это индюк для тестирования с помощью робота exp_iCustom_v9_Martingale_OS_v1. ему нужно название индюка параментры без строковых переменных и буферы в данном случае я собирался использовать пересечение уровней -0.25 и +0.25

PHP:
//+------------------------------------------------------------------+
//|                                                     TmaSlope.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, zznbrm"

//Edited by shahrooz "[email protected]"                           
//---- indicator settings
#property indicator_separate_window
#property  indicator_buffers 7
#property  indicator_level1 0.5
#property  indicator_level2 -0.5 

#property indicator_color1 Green
#property indicator_color2 Lime
#property indicator_color3 FireBrick
#property indicator_color4 Red
#property indicator_color5 DarkGray
#property indicator_color6 LightSlateGray
#property indicator_color7 NULL


#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2  
#property indicator_width6 2   
#property indicator_width7 0   


//---- input parameters
//extern string OtherTimeFrames = "Select below 0=current tf,1,5,15,30,60,240,1440,10080,43200";

extern int select_other_tf_to_show=15;
extern int H_Pos_MTF=1;
extern int V_Pos_MTF=50;
extern int        Font_Size_MTF              = 12;
extern int Corner_MTF=3;
 color      Font_Color_MTF              ;

//---- input parameters

extern bool show_2nd_MTF=true;
//extern string OtherTimeFrame_2nd = "Select below 0=current tf,1,5,15,30,60,240,1440,10080,43200";

extern int select_2nd_tf_to_show=60;
extern int H_Pos_MTF_2nd=1;
extern int V_Pos_MTF_2nd=75;
extern int        Font_Size_MTF_2nd              = 12;
extern int Corner_MTF_2nd=3;
 color      Font_Color_MTF_2nd              ;

extern bool show_3rd_MTF=true;
//extern string OtherTimeFrame_3rd = "Select below 0=current tf,1,5,15,30,60,240,1440,10080,43200";

extern int select_3rd_tf_to_show=240;
extern int H_Pos_MTF_3rd=1;
extern int V_Pos_MTF_3rd=100;
extern int        Font_Size_MTF_3rd              = 12;
extern int Corner_MTF_3rd=3;
 color      Font_Color_MTF_3rd              ;
extern int eintPeriod = 56;
extern double edblHigh1 = 0.5;
extern double edblLow1 = -0.5;
extern int atrPeriod = 100;


extern color      Font_Color          = White;
extern int        H_Pos               = 1;
extern int        V_Pos               = 25;
extern int        Corner              = 3;
extern int        Font_Size           = 14;
extern int        Font_Size_text      = 11;
extern int        H_Pos_text          = 1;
extern int        V_Pos_text          = 1;

extern int Text_Corner=3;

//---- indicator buffers
double gadblUp1[];
double gadblUp2[];

double gadblDn1[];
double gadblDn2[];

double gadblMid1[];
double gadblMid2[];

double gadblSlope[]; 
color Font_Color_M15;

double TICK;
bool AdditionalDigit;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{              
   //IndicatorBuffers( 8 );    
   IndicatorBuffers( 7 );
   IndicatorDigits( 5 );
   IndicatorShortName( "TmaSlope_Norm" );
   AdditionalDigit = MarketInfo(Symbol(), MODE_MARGINCALCMODE) == 0 && MarketInfo(Symbol(), MODE_PROFITCALCMODE) == 0 && Digits % 2 == 1;
   TICK = getTick();
      
   SetIndexBuffer( 0, gadblUp1 );    SetIndexLabel( 0, NULL );       SetIndexStyle( 0, DRAW_HISTOGRAM );
   SetIndexBuffer( 1, gadblUp2 );    SetIndexLabel( 1, NULL );       SetIndexStyle( 1, DRAW_HISTOGRAM );
   SetIndexBuffer( 2, gadblDn1 );    SetIndexLabel( 2, NULL );       SetIndexStyle( 2, DRAW_HISTOGRAM );
   SetIndexBuffer( 3, gadblDn2 );    SetIndexLabel( 3, NULL );       SetIndexStyle( 3, DRAW_HISTOGRAM );
   SetIndexBuffer( 4, gadblMid1 );    SetIndexLabel( 4, NULL );       SetIndexStyle( 4, DRAW_HISTOGRAM );
   SetIndexBuffer( 5, gadblMid2 );    SetIndexLabel( 5, NULL );       SetIndexStyle( 5, DRAW_HISTOGRAM );

   SetIndexBuffer( 6, gadblSlope );  SetIndexLabel( 6, "TMA Slope" );    SetIndexStyle( 6, DRAW_NONE );

      
   SetIndexEmptyValue( 0, 0.0 );
   SetIndexEmptyValue( 1, 0.0 );
   SetIndexEmptyValue( 2, 0.0 );


   return( 0 );
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   return( 0 );
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int counted_bars = IndicatorCounted();
   if ( counted_bars < 0 ) return(-1);
   if ( counted_bars > 0 ) counted_bars--;
               
   int intLimit = MathMin( Bars - 1, Bars - counted_bars + eintPeriod );
   
   double dblTma, dblPrev;
      double dblTmaMTF, dblPrevMTF;
      double dblTmaMTF2, dblPrevMTF2;
      double dblTmaMTF3, dblPrevMTF3;
   double atr ; 
    double atrMTF;
    double atrMTF2;
    double atrMTF3;
   for( int inx = intLimit; inx >= 0; inx-- )
   {   
      //gadblTma[inx] = calcTma( inx );
      //gadblPrev[inx] = calcTma( inx+1 );
      //gadblSlope[inx] = ( gadblTma[inx] - gadblPrev[inx] ) / TICK;
      atr= iATR(NULL,0,atrPeriod,inx+10)*0.1;
      atrMTF= iATR(NULL,select_other_tf_to_show,atrPeriod,inx+10)*0.1;
      atrMTF2= iATR(NULL,select_2nd_tf_to_show,atrPeriod,inx+10)*0.1;
      atrMTF3= iATR(NULL,select_3rd_tf_to_show,atrPeriod,inx+10)*0.1;
      if (atr == 0) continue;
      if (atrMTF == 0) continue;
      if (atrMTF2 == 0) continue;
      if (atrMTF3 == 0) continue;
      dblTma = calcTma( inx );
      dblPrev = calcTma( inx+1 );
      gadblSlope[inx] = ( dblTma - dblPrev ) / atr;
      
      gadblUp1[inx] = 0.0;   
      gadblDn1[inx] = 0.0;     
      gadblMid1[inx] = 0.0;   
      gadblUp2[inx] = 0.0;   
      gadblDn2[inx] = 0.0;     
      gadblMid2[inx] = 0.0;   
   
     if ( gadblSlope[inx] > edblHigh1 )
     {
         if(gadblSlope[inx] < gadblSlope[inx+1]) gadblUp1[inx] = gadblSlope[inx];
         else gadblUp2[inx] = gadblSlope[inx];
     }
     else if ( gadblSlope[inx] < edblLow1 )
     {
         if(gadblSlope[inx] < gadblSlope[inx+1]) gadblDn2[inx] = gadblSlope[inx];
         else gadblDn1[inx] = gadblSlope[inx];
     }
     else  
     {
         if(gadblSlope[inx] < gadblSlope[inx+1]) gadblMid2[inx] = gadblSlope[inx];
         else gadblMid1[inx] = gadblSlope[inx];
     } 
   
 //  if(gadblSlope[inx]>=0 && gadblSlope[inx]<gadblSlope[inx+1] && Close[inx]>Open[inx] ) arrowdown[inx]=gadblSlope[inx]+0.1*gadblSlope[inx]; 
 //  if(gadblSlope[inx]<0 && gadblSlope[inx]>gadblSlope[inx+1] && Close[inx]<Open[inx]&& gadblSlope[inx+2]>=gadblSlope[inx+1]) arrowup[inx]=gadblSlope[inx]+0.1*gadblSlope[inx]; 

     string tt=DoubleToStr(gadblSlope[inx],2);

    ObjectCreate("label",OBJ_LABEL,WindowFind("TmaSlope_Norm"),0,0);
    ObjectSet("label",OBJPROP_XDISTANCE,H_Pos);
    ObjectSet("label",OBJPROP_YDISTANCE,V_Pos);
    ObjectSet("label",OBJPROP_CORNER,Corner);
    ObjectSetText("label"," "+tt+" ",Font_Size,"Arial",Font_Color);
   
    string sObjName="InfoBar1";
    string sObjName2="InfoBar2";
    string sObjName3="InfoBar3";
   if (gadblSlope[0] >= edblHigh1)
      ObjectSetText(sObjName, "Buy Only", Font_Size_text, "Verdana", YellowGreen);
   
   else if (gadblSlope[0] <= edblLow1)
      ObjectSetText(sObjName, "Sell Only", Font_Size_text, "Verdana", Red);
   
   else 
      ObjectSetText(sObjName, "Ranging", Font_Size_text, "Verdana", DarkGray);
      
   
   string name1 = "InfoBar1";
   
   switch(select_other_tf_to_show)
   {
      case 1 : string TimeFrameStr="M1"; break;
      case 5 : TimeFrameStr="M5"; break;
      case 15 : TimeFrameStr="M15"; break;
      case 30 : TimeFrameStr="M30"; break;
      case 60 : TimeFrameStr="H1"; break;
      case 240 : TimeFrameStr="H4"; break;
      case 1440 : TimeFrameStr="D1"; break;
      case 10080 : TimeFrameStr="W1"; break;
      case 43200 : TimeFrameStr="MN1"; break;
      default : TimeFrameStr="Current";
   } 
   
    switch(select_2nd_tf_to_show)
   {
      case 1 : string TimeFrameStr2="M1"; break;
      case 5 : TimeFrameStr2="M5"; break;
      case 15 : TimeFrameStr2="M15"; break;
      case 30 : TimeFrameStr2="M30"; break;
      case 60 : TimeFrameStr2="H1"; break;
      case 240 : TimeFrameStr2="H4"; break;
      case 1440 : TimeFrameStr2="D1"; break;
      case 10080 : TimeFrameStr2="W1"; break;
      case 43200 : TimeFrameStr2="MN1"; break;
      default : TimeFrameStr2="Current";
   }
   
      switch(select_3rd_tf_to_show)
   {
      case 1 : string TimeFrameStr3="M1"; break;
      case 5 : TimeFrameStr3="M5"; break;
      case 15 : TimeFrameStr3="M15"; break;
      case 30 : TimeFrameStr3="M30"; break;
      case 60 : TimeFrameStr3="H1"; break;
      case 240 : TimeFrameStr3="H4"; break;
      case 1440 : TimeFrameStr3="D1"; break;
      case 10080 : TimeFrameStr3="W1"; break;
      case 43200 : TimeFrameStr3="MN1"; break;
      default : TimeFrameStr3="Current";
   }
   
   ObjectCreate(sObjName, OBJ_LABEL,WindowFind("TmaSlope_Norm"), 0, 0);
   ObjectSet(sObjName, OBJPROP_CORNER, Text_Corner);
   ObjectSet(sObjName, OBJPROP_XDISTANCE, H_Pos_text);//left to right
   ObjectSet(sObjName, OBJPROP_YDISTANCE, V_Pos_text);//top to bottom

    dblTmaMTF = calcTmaMTF( 0 , select_other_tf_to_show );
      dblPrevMTF = calcTmaMTF( 1 , select_other_tf_to_show);
      double hh = ( dblTmaMTF - dblPrevMTF ) / atrMTF;
if(hh>=0.5) Font_Color_MTF=YellowGreen;
else if (hh<=-0.5) Font_Color_MTF=Red;
else Font_Color_MTF=DarkGray;
string jj=DoubleToStr(hh,2);
    ObjectCreate("label MTF",OBJ_LABEL,WindowFind("TmaSlope_Norm"),0,0);
    ObjectSet("label MTF",OBJPROP_XDISTANCE,H_Pos_MTF);
    ObjectSet("label MTF",OBJPROP_YDISTANCE,V_Pos_MTF);
    ObjectSet("label MTF",OBJPROP_CORNER,Corner_MTF);
   ObjectSetText("label MTF",""+TimeFrameStr+" = "+jj+" ",Font_Size_MTF,"Arial",Font_Color_MTF);
   
   
   
 if(show_2nd_MTF)
{
    dblTmaMTF2 = calcTmaMTF( 0 , select_2nd_tf_to_show );
      dblPrevMTF2 = calcTmaMTF( 1 , select_2nd_tf_to_show);
      double ii = ( dblTmaMTF2 - dblPrevMTF2 ) / atrMTF2;
if(ii>=0.5) Font_Color_MTF_2nd=YellowGreen;
else if (ii<=-0.5) Font_Color_MTF_2nd=Red;
else Font_Color_MTF_2nd=DarkGray;
string oo=DoubleToStr(ii,2);
    ObjectCreate("label MTF_2nd",OBJ_LABEL,WindowFind("TmaSlope_Norm"),0,0);
    ObjectSet("label MTF_2nd",OBJPROP_XDISTANCE,H_Pos_MTF_2nd);
    ObjectSet("label MTF_2nd",OBJPROP_YDISTANCE,V_Pos_MTF_2nd);
    ObjectSet("label MTF_2nd",OBJPROP_CORNER,Corner_MTF_2nd);
   ObjectSetText("label MTF_2nd",""+TimeFrameStr2+" = "+oo+" ",Font_Size_MTF_2nd,"Arial",Font_Color_MTF_2nd);
   }
   else ObjectDelete("label MTF_2nd");
   if(show_3rd_MTF)
   {
   
    dblTmaMTF3 = calcTmaMTF( 0 , select_3rd_tf_to_show );
      dblPrevMTF3 = calcTmaMTF( 1 , select_3rd_tf_to_show);
      double qq = ( dblTmaMTF3 - dblPrevMTF3 ) / atrMTF3;
if(qq>=0.5) Font_Color_MTF_3rd=YellowGreen;
else if (qq<=-0.5) Font_Color_MTF_3rd=Red;
else Font_Color_MTF_3rd=DarkGray;
string ww=DoubleToStr(qq,2);
    ObjectCreate("label MTF_3rd",OBJ_LABEL,WindowFind("TmaSlope_Norm"),0,0);
    ObjectSet("label MTF_3rd",OBJPROP_XDISTANCE,H_Pos_MTF_3rd);
    ObjectSet("label MTF_3rd",OBJPROP_YDISTANCE,V_Pos_MTF_3rd);
    ObjectSet("label MTF_3rd",OBJPROP_CORNER,Corner_MTF_3rd);
   ObjectSetText("label MTF_3rd",""+TimeFrameStr3+" = "+ww+" ",Font_Size_MTF_3rd,"Arial",Font_Color_MTF_3rd);
   }
   else ObjectDelete("label MTF_3rd");
     }
   return( 0 );
}

//+------------------------------------------------------------------+
//| getTick()                                                        |
//+------------------------------------------------------------------+
double getTick() {
    double tick = MarketInfo(Symbol(), MODE_TICKSIZE);
    if (AdditionalDigit) {
        tick *= 10;
    }    
    return (tick);
}

//+------------------------------------------------------------------+
//| calcTma()                                                        |
//+------------------------------------------------------------------+
double calcTma( int inx )
{
   double dblSum  = (eintPeriod+1)*Close[inx];
   double dblSumw = (eintPeriod+1);
   int jnx, knx;
         
   for ( jnx = 1, knx = eintPeriod; jnx <= eintPeriod; jnx++, knx-- )
   {
      dblSum  += ( knx * Close[inx+jnx] );
      dblSumw += knx;

      if ( jnx <= inx )
      {
         dblSum  += ( knx * Close[inx-jnx] );
         dblSumw += knx;
      }
   }
   
   return( dblSum / dblSumw );
}
 
 
 double calcTmaMTF( int inx , int tf)
{
   double dblSum  = (eintPeriod+1)*iClose(Symbol(),tf,inx);
   double dblSumw = (eintPeriod+1);
   int jnx, knx;
         
   for ( jnx = 1, knx = eintPeriod; jnx <= eintPeriod; jnx++, knx-- )
   {
      dblSum  += ( knx * iClose(Symbol(),tf,inx+jnx) );
      dblSumw += knx;

      if ( jnx <= inx )
      {
         dblSum  += ( knx * iClose(Symbol(),tf,inx-jnx) );
         dblSumw += knx;
      }
   }
   
   return( dblSum / dblSumw );
}
 

zhserg

Местный знаток
Ребята как написать текст возле ценовой метки
в этой части кода
PHP:
ObjectCreate("Yesterdays High line",OBJ_ARROW, 0, Time[0], yesterday_high);
ObjectSet("Yesterdays High line", OBJPROP_WIDTH, 1);
ObjectSet("Yesterdays High line", OBJPROP_COLOR, Blue);
ObjectSet("Yesterdays High line",OBJPROP_ARROWCODE,6);

Нужно создать объект типа OBJ_LABEL, пример -
http://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_label
или OBJ_TEXT, пример - http://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_text
 

спрут

Местный знаток
zhserg братик! все это прекрасно! но што мне с этим делать дальше... извини меня канешно. но туповат я в этом деле. не мое это... я тупо не знаю куда это все (што вы написали )вставить... я предполагаю што вы мне выложили почти готовый индикатор но как его превратить в готовый индикатор я даже етого понять не смог.:facepalm:
 

NEKSUS

Почетный гражданин
Здравствуйте, комрады, подсобите пожалуйста. BetterVolume 1.5a Alerts поправить под последний билд.
 

Вложения

danilukigor

Местный знаток

Вложения

zhserg

Местный знаток
zhserg братик! все это прекрасно! но што мне с этим делать дальше... извини меня канешно. но туповат я в этом деле. не мое это... я тупо не знаю куда это все (што вы написали )вставить... я предполагаю што вы мне выложили почти готовый индикатор но как его превратить в готовый индикатор я даже етого понять не смог.:facepalm:

Н-дааа... печально.
 

Вложения

Vik940

Почетный гражданин

Вложения

Djulka

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

Вложения

railwayman

Активный участник
здравствуйте.сделайте пожалуйста в советнике торговлю в одну сторону чтобы открывал не 4 а 2 ордера можно было указать buy sell по какой паре с ограничением колен и магиком отдельно
 

Вложения

Alley

Местный житель
Ребята, привет!:)
ВСЕХ С ПРАЗДНИКОМ!!!*hi*

По поводу РСИ индикатора в чарт перенести. Очень удобный есть и предлагаю на помощь в графике на свечах сигналы живьем просматривать
-ОЧЕНЬ ДАЖЕ УДОБНО, ПОПРОБУЙТЕ!


Вот еще один интересный в чарте индикатор RSI нашел
ТОЖЕ интересный и прям на граф и не мешает абсолбтно.
И все есть как положено и период и уровни!

На любителя аднака и не мешает - пробуйте кому надо.:)*hi*
 

Вложения

kipjatok001

Почетный гражданин
Всем Привет. Помогите пожалуйста доработать советника. Нужно что бы работа начиналась в 2 стороны и отвяжите пожалуйста от индикатора. Заранее спасибо.
Посмотреть вложение Progressor 1.12.mq4 - сам советник
Посмотреть вложение Progressor_v12.dll - библиотека к нему
Всем Заранее спасибо. Сов не сливает даже на сильных движениях.:)
Прошу помочь.
 

Вложения

Последнее редактирование:
Статус
Закрыто для дальнейших ответов.

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

Верх