Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1958

 
Artyom Trishkin #:

Нужно НЕ

а просто

При этом 'Count = ++Count;' даст ожидаемый результат, хотя, конечно, оператор '=' тут лишний.

PS. Это я для to_ha написал.
 
Sergey Gridnev #:
Есть преинкремент и постинкремент.
В нашем примере - постинкремент.
Artyom Trishkin #:

Нужно НЕ

а просто

 Учиться, мне ещё учиться ;););) Спасибо, уяснил)

Хотя, вроде и не сложный язык. Не знаю как практическая часть пойдёт, но на данном этапе пока нормально даётся мне:)

 

Добрый день. Хочу написать индикатор на основе Stochastic. Задча, что бы он давал сигнал при пересечении линий ( сигнальной и основной) когда они находятся выше верхнего или нижнего уровней. Что для этого почитать или посмотреть.

Я новичёк в програмировании, всё что у меня получается это создать индикатор который даёт сигнал на пересечение уровней или линий между собой, а совместить два условия в месте никак.

 

всем привет, что такое замороженно в баллансе?? как разморозить????

 

MatveySt #:

 а совместить два условия в месте никак.

Обычно два условия совмещают так: 

if( условие_1 && условие_2 )
{
выполнить
}

 
Andrei Sokolov #:

Обычно два условия совмещают так: 

if( условие_1 && условие_2 )
{
выполнить
}



 if(ma[i]<si[i] && ma[i-1]>=si[i] && (ma[i]>level2 && si[i]>level2)){

             sellBuffer[i]=high[i];

Вы имеете в виду вот так?

 
MatveySt #:

Добрый день. Хочу написать индикатор на основе Stochastic. Задча, что бы он давал сигнал при пересечении линий ( сигнальной и основной) когда они находятся выше верхнего или нижнего уровней. Что для этого почитать или посмотреть.

Я новичёк в програмировании, всё что у меня получается это создать индикатор который даёт сигнал на пересечение уровней или линий между собой, а совместить два условия в месте никак.

В вашем случае нужно использовать операцию ИЛИ:

if( (условие_1) || (условие_2) )  {
  // Тут выполняемый код
}
 
Andrei Sokolov #:

Обычно два условия совмещают так: 

if( условие_1 && условие_2 )
{
выполнить
}

Он же спросил про "выше ИЛИ ниже", а Вы ему && предлагаете использовать.
 
Sergey Gridnev #:
Он же спросил про "выше ИЛИ ниже", а Вы ему && предлагаете использовать.

Эти два условия должны выполняться в месте две линии пересекаются (ma[i] пересекает si[i] с верху вниз в области перекуплености (от 80-100-го уровня) тогда должен генерироваться сигнал

//+------------------------------------------------------------------+

//|                                           002 Stochastic RSI.mq5 |

//|                                             Copyright 2022,Игорь |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2022,Игорь"

#property link      "https://www.mql5.com"

#property version   "1.00"

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_plots   2

//--- plot buy

#property indicator_label1  "buy"

#property indicator_type1   DRAW_ARROW

#property indicator_color1  clrBlue

#property indicator_style1  STYLE_SOLID

#property indicator_width1  1

//--- plot sell

#property indicator_label2  "sell"

#property indicator_type2   DRAW_ARROW

#property indicator_color2  clrRed

#property indicator_style2  STYLE_SOLID

#property indicator_width2  1

//-------

input int                Kperiod=5;

input int                Dperiod=3; 

input int                slowing=3; 

input ENUM_MA_METHOD     ma_method=MODE_SMA;

input ENUM_STO_PRICE     price_field=STO_LOWHIGH;

input double             level1=20;

input double             level2=80;

int                      handle;

//--- indicator buffers

double                   buyBuffer[];

double                   sellBuffer[];

double                   ma[];

double                   si[];

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

      handle=iStochastic(Symbol(),Period(),Kperiod,Dperiod,slowing,ma_method,price_field);

      if(handle==INVALID_HANDLE){

         Print("Ошибка загрузки индикатора iStochastic");

         return(INIT_FAILED);

       }

      

//--- indicator buffers mapping

   SetIndexBuffer(0,buyBuffer,INDICATOR_DATA);

   SetIndexBuffer(1,sellBuffer,INDICATOR_DATA);

   SetIndexBuffer(2,ma,INDICATOR_CALCULATIONS);

   SetIndexBuffer(3,si,INDICATOR_CALCULATIONS);

//--- setting a code from the Wingdings charset as the property of PLOT_ARROW

   PlotIndexSetInteger(0,PLOT_ARROW,233);

   PlotIndexSetInteger(1,PLOT_ARROW,234);

   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,10);

   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-10);

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

        int start;

        if(prev_calculated==0){

           start=1;

         }

        else{

           start=prev_calculated-1;

         } 

        if(CopyBuffer(handle,MAIN_LINE,0,rates_total-start,ma)==-1 ||

           CopyBuffer(handle,SIGNAL_LINE,0,rates_total-start,si)==-1){

           Alert("Signal_buffer ERROR");

           return(0);

         }

         for(int i=start;i<rates_total-start;i++){

         

           buyBuffer[i]=EMPTY_VALUE;

           sellBuffer[i]=EMPTY_VALUE;

//----------------------------------------

          if((ma[i]<si[i] && ma[i-1]>=si[i]) && (ma[i]>level2 && si[i]>level2)){

             sellBuffer[i]=high[i];

           }  

//---------------- 

           }  

//--- return value of prev_calculated for next call

   return(rates_total);

  }

//+------------------------------------------------------------------+


Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2022.05.14
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
Файлы:
4.jpg  210 kb
 
MatveySt #:

 if(ma[i]<si[i] && ma[i-1]>=si[i] && (ma[i]>level2 && si[i]>level2)){

             sellBuffer[i]=high[i];

Вы имеете в виду вот так?

Еще нужна закрывающая  } 

Причина обращения: