хотел найти на индикаторе стохастик последние два входа через линии уровней верх и вниз, три входа отображаются нормально и сохраняют свои значения а четвертый работает неправильно обнуляет показания когда выходит из нижней зоны подскажите в чем ошибка
//--- находим индекс бара вход в верхняя зонуfor(n=0; n<(Bars-1);n++)
{
if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)<up_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) >up_level )
// break;
UpLevel_1=n+1;
}
//--- находим индекс бара второго ближайшего входа верхний уровень// for(n= UpLevel_1+1; n<(Bars-1);n++)
{
if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)<up_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) >up_level )
// break;
UpLevel_2=n+1;
UpperPrice_2=iHigh(Symbol(),PERIOD_CURRENT,UpLevel_2);
}
//--- находим индекс бара первого ближайшего входа нижний уровеньfor(n=0; n<(Bars-1);n++)
{
if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)>dw_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) <dw_level )
break;
DwLevel_1=n+1;
LowerPrice_1=iLow(Symbol(),PERIOD_CURRENT,DwLevel_1);
}
//--- находим индекс бара второго ближайшего входа нижний уровеньfor(n=DwLevel_1+1; n<(Bars-1);n++)
{
if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)>dw_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) <dw_level )
break;
DwLevel_2=n+1;
LowerPrice_2=iLow(Symbol(),PERIOD_CURRENT,DwLevel_2);
Comment("вход верхняя зона" + DoubleToStr(UpLevel_1,0)+ "\n" + // работает правельно показания сохраняет"предыдущий вход верхняя зона" + DoubleToStr(UpLevel_2,0)+ "\n" + // работает правельно показания сохраняет" вход нижняя зона" + DoubleToStr(DwLevel_1,0)+ "\n" + //работает неправельно обнуляет показания когда выходит из нижней зоны" предыдущий вход нижняя зона" + DoubleToStr(DwLevel_2,0)); // работает правельно показания сохраняет
}
хотел найти на индикаторе стохастик последние два входа через линии уровней верх и вниз, три входа отображаются нормально и сохраняют свои значения а четвертый работает неправильно обнуляет показания когда выходит из нижней зоны подскажите в чем ошибка
Накидал скриптик по-быстрому для примера:
//+------------------------------------------------------------------+//| FindStochasticSignal.mq4 |//| Copyright 2015, Artem A. Trishkin, Skype artmedia70 |//| https://login.mql5.com/ru/users/artmedia70 |//+------------------------------------------------------------------+#property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70"#property link"https://login.mql5.com/ru/users/artmedia70"#property version"1.00"#property strict#property script_show_inputs//--- input parametersinputint PeriodK=5; // Period %K Stochasticint periodK=(PeriodK<1)?1:PeriodK;
inputint PeriodD=3; // Period %D Stochasticint periodD=(PeriodD<1)?1:PeriodD;
inputint SlowingStc=3; // Slowing Stochasticint slowingStc=(SlowingStc<1)?1:SlowingStc;
inputENUM_MA_METHOD MA_Method=MODE_SMA; // MA Method StochasticinputENUM_STO_PRICE AppledPrice=STO_LOWHIGH; // Appled Price Stochasticinputdouble LevelUP=70.0; // Up level Stochasticinputdouble LevelDN=30.0; // Down level Stochasticinputint NumberCross=4; // Number of Cross stochastics levelint numberCross=(NumberCross<1)?1:NumberCross;
//--- Arraysdouble MassiveCrossUP[][2];
double MassiveCrossDN[][2];
MqlRates rates[];
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---int bars=iBars(Symbol(),Period());
if(CopyRates(Symbol(),PERIOD_CURRENT,1,bars-1,rates)>0) {
ArraySetAsSeries(rates,true);
int nup=0, ndn=0;
ArrayResize(MassiveCrossUP,nup,numberCross);
ArrayResize(MassiveCrossDN,ndn,numberCross);
for(int i=1; i<Bars; i++) {
double StochMain0=GetDataSTO(Symbol(),Period(),periodK,periodD,slowingStc,MA_Method,AppledPrice,MODE_MAIN,i);
double StochMain1=GetDataSTO(Symbol(),Period(),periodK,periodD,slowingStc,MA_Method,AppledPrice,MODE_MAIN,i+1);
if(nup>numberCross && ndn>numberCross) break;
if(StochMain0<LevelUP && StochMain1>=LevelUP) {
nup++;
if(nup<=numberCross) {
ArrayResize(MassiveCrossUP,nup);
MassiveCrossUP[nup-1][0]=int(rates[i].time);
MassiveCrossUP[nup-1][1]=rates[i].high;
}
}
if(StochMain0>LevelDN && StochMain1<=LevelDN) {
ndn++;
if(ndn<=numberCross) {
ArrayResize(MassiveCrossDN,ndn);
MassiveCrossDN[ndn-1][0]=int(rates[i].time);
MassiveCrossDN[ndn-1][1]=rates[i].low;
}
}
}
}
//---string text_up_crossing="Пересечения сверху-вниз:\n", text_dn_crossing="Пересечения снизу-вверх:\n";
for(int i=0; i<ArrayRange(MassiveCrossUP,0); i++) {
string date_cross=TimeToString(int(MassiveCrossUP[i][0]));
string value_cross=DoubleToString(MassiveCrossUP[i][1],Digits());
string txt_i="\n"+IntegerToString(i+1)+"-е пересечение уровня "+DoubleToString(LevelUP,1)+", время бара "+date_cross+", цена High свечи: "+value_cross;
text_up_crossing+=txt_i;
}
text_up_crossing+="\n====================\n";
for(int i=0; i<ArrayRange(MassiveCrossDN,0); i++) {
string date_cross=TimeToString(int(MassiveCrossDN[i][0]));
string value_cross=DoubleToString(MassiveCrossDN[i][1],Digits());
string txt_i="\n"+IntegerToString(i+1)+"-е пересечение уровня "+DoubleToString(LevelDN,1)+", время бара "+date_cross+", цена Low свечи: "+value_cross;
text_dn_crossing+=txt_i;
}
Comment(text_up_crossing+text_dn_crossing);
}
//+------------------------------------------------------------------+double GetDataSTO(string sy, int timeframe, int k_period, int d_period, int slowing, ENUM_MA_METHOD ma_method, ENUM_STO_PRICE price_field, int mode, int pos) {
return(iStochastic(sy,timeframe,k_period,d_period,slowing,ma_method,price_field,mode,pos));
}
//+------------------------------------------------------------------+
спасибо за скрипт пока он для меня выглядит как высшая математика для первоклассника работу с массивами я еще не разбирал буду вникать а в своем коде нашел ошибку надо было в цикле вставить другие данные бара сделал так и все заработало как надо
Никак не могу заставить новое окно графика открываться не на половину. При правом клике на любом инструменте в окне "Обзор рынка" и выборе команды "Окно графика", график открывается неполноценным размером:
Никак не могу заставить новое окно графика открываться не на половину.
Уверен, разработчики исправят.
А пока необходимо наличие еще одного графика любого инструмента в свернутом состоянии. То есть, открыли USDJPY, вручную развернули, затем вручную свернули. После этого открывайте любой нужный график, он будет в полном окне.
В последних билдах MT4 при использовании портативного режима нет возможности запустить MetaEditor - писал в сервис деск, но вразумительного ответа нет.
Если запускать сам экзешник в папке с MT4, то грузится MetaEditor с окружением в папке AppData для виндовс, если в терминале нажать "изменить эксперта", то происходит то ж самое, а раньше грузилось окружение из папки в которой запущен терминал в портативном режиме.
Лог одиночного прогона пустого советника в MT4-тестере по ценам открытия:
112972 tick events (113071 bars, 225205 bar states) processed in 0:00:00.016 (total time 0:00:05.039)
Из лога видно, что сам советник проходит историю за нулевое время. Подготовка же исторических данных занимает пять секунд (немного больше 100К баров). Раньше такого не было.
Воспроизводится в 100% случаев. MT4 build 950, Windows7 SP1 x64.
Подскажите, какой крайний билд не страдает этим недугом. DOWNGRADE необходим.
На одном терминале несколько счетов с разных торговых серверов. Соответственно, присутствуют несколько исторических папок в /history.
Возможно ли при двойном щелчке по счету сразу переключаться на исторические данные соответствующего торгового сервера минуя коннект к нему.
Это нужно, чтобы в оффлайне в тестере можно было быстро переключаться между различными историями одного и того же символа.
Сейчас приходится либо иметь несколько соответствующих оффлайн-терминалов с разной историей, либо в одном терминале выходить в онлайн, коннектится к другому серверву и заходить снова в оффлайн, теряя при этом кастомную историю.
Лог одиночного прогона пустого советника в MT4-тестере по ценам открытия:
Из лога видно, что сам советник проходит историю за нулевое время. Подготовка же исторических данных занимает пять секунд (немного больше 100К баров). Раньше такого не было.
Воспроизводится в 100% случаев. MT4 build 950, Windows7 SP1 x64.
Подскажите, какой крайний билд не страдает этим недугом. DOWNGRADE необходим.
Сделал FXT read-only. Пятисекундная перестройка исчезла, теперь быстро, как раньше.
хотел найти на индикаторе стохастик последние два входа через линии уровней верх и вниз, три входа отображаются нормально и сохраняют свои значения а четвертый работает неправильно обнуляет показания когда выходит из нижней зоны подскажите в чем ошибка
хотел найти на индикаторе стохастик последние два входа через линии уровней верх и вниз, три входа отображаются нормально и сохраняют свои значения а четвертый работает неправильно обнуляет показания когда выходит из нижней зоны подскажите в чем ошибка
Накидал скриптик по-быстрому для примера:
Никак не могу заставить новое окно графика открываться не на половину. При правом клике на любом инструменте в окне "Обзор рынка" и выборе команды "Окно графика", график открывается неполноценным размером:
Как это побороть?
Никак не могу заставить новое окно графика открываться не на половину.
Уверен, разработчики исправят.
А пока необходимо наличие еще одного графика любого инструмента в свернутом состоянии. То есть, открыли USDJPY, вручную развернули, затем вручную свернули. После этого открывайте любой нужный график, он будет в полном окне.
Возможно, Вы это уже знаете.
В последних билдах MT4 при использовании портативного режима нет возможности запустить MetaEditor - писал в сервис деск, но вразумительного ответа нет.
Если запускать сам экзешник в папке с MT4, то грузится MetaEditor с окружением в папке AppData для виндовс, если в терминале нажать "изменить эксперта", то происходит то ж самое, а раньше грузилось окружение из папки в которой запущен терминал в портативном режиме.
Лог одиночного прогона пустого советника в MT4-тестере по ценам открытия:
112972 tick events (113071 bars, 225205 bar states) processed in 0:00:00.016 (total time 0:00:05.039)
Из лога видно, что сам советник проходит историю за нулевое время. Подготовка же исторических данных занимает пять секунд (немного больше 100К баров). Раньше такого не было.
Воспроизводится в 100% случаев. MT4 build 950, Windows7 SP1 x64.
Подскажите, какой крайний билд не страдает этим недугом. DOWNGRADE необходим.
На одном терминале несколько счетов с разных торговых серверов. Соответственно, присутствуют несколько исторических папок в /history.
Возможно ли при двойном щелчке по счету сразу переключаться на исторические данные соответствующего торгового сервера минуя коннект к нему.
Это нужно, чтобы в оффлайне в тестере можно было быстро переключаться между различными историями одного и того же символа.
Сейчас приходится либо иметь несколько соответствующих оффлайн-терминалов с разной историей, либо в одном терминале выходить в онлайн, коннектится к другому серверву и заходить снова в оффлайн, теряя при этом кастомную историю.
Лог одиночного прогона пустого советника в MT4-тестере по ценам открытия:
Из лога видно, что сам советник проходит историю за нулевое время. Подготовка же исторических данных занимает пять секунд (немного больше 100К баров). Раньше такого не было.
Воспроизводится в 100% случаев. MT4 build 950, Windows7 SP1 x64.
Подскажите, какой крайний билд не страдает этим недугом. DOWNGRADE необходим.
Как в коде узнать расписание сессий?