Angelika писал(а): напиши, пожалуйста, код на языке mql5. Код должен быть основан на пересечении двух стохастических осцилляторов, с коротким и длинным периодами расчёта.
Вот пример кода на языке MQL5, который основан на пересечении двух стохастических осцилляторов:
```mql5
//+------------------------------------------------------------------+
//| StochX.mq5|
//| Copyright 2021, MetaQuotes Software Corp. |
//|
http://www.metaquotes.net|
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
input int fastKPeriod = 5; // Период быстрого %K
input int slowKPeriod = 10; // Период медленного %K
input int slowDPeriod = 5; // Период %D
input int levels = 80; // Уровень для сигнала покупки
input int signalLevel = 20; // Уровень для сигнала продажи
double KBuffer[];
double DBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
SetIndexBuffer(0, KBuffer);
SetIndexBuffer(1, DBuffer);
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexLabel(0,"Stoch K");
SetIndexLabel(1,"Stoch D");
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[])
{
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
int begin = slowKPeriod-1;
for(int i=begin; i<rates_total; i++)
{
double highestHigh = High
;
double lowestLow = Low;
for(int j=1; j<slowKPeriod; j++)
{
if(High[i-j]>highestHigh) highestHigh = High[i-j];
if(Low[i-j]<lowestLow) lowestLow = Low[i-j];
}
double range = highestHigh - lowestLow;
if(range==0.0) range = 0.0000001;
double percentK = 100 * (close - lowestLow) / range;
KBuffer = iMAOnArray(percentK,0,fastKPeriod,0,MODE_SMA,i);
DBuffer = iMAOnArray(KBuffer,0,slowDPeriod,0,MODE_SMA,i);
}
return(rates_total);
}
//+------------------------------------------------------------------+
```
Этот код создает индикатор на основе двух стохастических осцилляторов с заданными периодами. При пересечении осцилляторов возникают сигналы для покупки или продажи в зависимости от уровня сигнала, указанного в параметрах.
Надеюсь, этот пример поможет вам разработать необходимый функционал на языке MQL5.