Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1958
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нужно НЕ
а просто
Есть преинкремент и постинкремент.
Нужно НЕ
а просто
Учиться, мне ещё учиться ;););) Спасибо, уяснил)
Хотя, вроде и не сложный язык. Не знаю как практическая часть пойдёт, но на данном этапе пока нормально даётся мне:)
Добрый день. Хочу написать индикатор на основе Stochastic. Задча, что бы он давал сигнал при пересечении линий ( сигнальной и основной) когда они находятся выше верхнего или нижнего уровней. Что для этого почитать или посмотреть.
Я новичёк в програмировании, всё что у меня получается это создать индикатор который даёт сигнал на пересечение уровней или линий между собой, а совместить два условия в месте никак.
всем привет, что такое замороженно в баллансе?? как разморозить????
MatveySt #:
а совместить два условия в месте никак.
Обычно два условия совмещают так:
if( условие_1 && условие_2 )
{
выполнить
}
Обычно два условия совмещают так:
if( условие_1 && условие_2 )
{
выполнить
}
if(ma[i]<si[i] && ma[i-1]>=si[i] && (ma[i]>level2 && si[i]>level2)){
sellBuffer[i]=high[i];
Вы имеете в виду вот так?
Добрый день. Хочу написать индикатор на основе Stochastic. Задча, что бы он давал сигнал при пересечении линий ( сигнальной и основной) когда они находятся выше верхнего или нижнего уровней. Что для этого почитать или посмотреть.
Я новичёк в програмировании, всё что у меня получается это создать индикатор который даёт сигнал на пересечение уровней или линий между собой, а совместить два условия в месте никак.
Обычно два условия совмещают так:
if( условие_1 && условие_2 )
{
выполнить
}
Он же спросил про "выше ИЛИ ниже", а Вы ему && предлагаете использовать.
Эти два условия должны выполняться в месте две линии пересекаются (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);
}
//+------------------------------------------------------------------+
if(ma[i]<si[i] && ma[i-1]>=si[i] && (ma[i]>level2 && si[i]>level2)){
sellBuffer[i]=high[i];
Вы имеете в виду вот так?
Еще нужна закрывающая }