[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 185

 

Здравствуйте.

Некоторое время назад при выведении на рабочее окно МТ4 индикаторов типа TRIX MTF появляется дополнительная строка из баров. Как я узнал на одном из зарубежных форумах, это происходит в последних выпусках МТ4.

Могу ли я самостоятельно принять меры (с вашей инструкцией) для устранения этой неполадки, или этот эфект будет устранен вами в последующих выпусках МТ4.

С уважением, Евгений. 412500@gmail. com; 4125er@gmail.com

 
Craft:

Добрый день.

Подскажите, как найти наивысшее закрытие в массиве:

double hc = iClose(NULL, 0, iHighest(Symbol(), 0, MODE_HIGH, PERIOD_M1, kk));

Это делается так или я ошибаюсь?

Поиском "наивысшее закрытие" не нашёл ответа.

Может так:

string sym;int PER=1;//таймфрейм
//+------------------------------------------------------------------+
//| script program                                                   |
//+------------------------------------------------------------------+
int init(){sym=Symbol();return(0);}
int start(){int bar=iHighest(sym,PER,MODE_CLOSE,iBars(sym,PER)-1,0);
  double hc=iClose(NULL,PER,bar);Print(sym," PERIOD_M",PER,"  max_close =",hc,"  Time =",
  TimeToStr(iTime(NULL,PER,bar),TIME_DATE|TIME_MINUTES));return(0);}
//+------------------------------------------------------------------+
 
MikeM:
Time[i] - время, соответствующее i-му бару графика.
Про "завтрашние" данные на графике вообще не понял. Где такие показывают? Хочу-у-у-у-у-у-у!!!

Это очень старая вресия моего индикатора...
Ниже картинка сырой версия, здесь я просто считал бары до нужного мне времени чтобы туда разместить стрелку - но это не правельный вариант, т.к. парой бывает выходны праздники, и просто время торговой ссесии и даного инструмента (в данном случае это сбер банк)

щас полностью переписал код и хочется чтобы ве было ок...

что я хачу получить =) значения времени по оси Х под последней синей стрелкой, чтобы сверится в место распложении.

Посуть в новой версии в масивах индикатора находится информация о нахождении следущей стрелки по оси Х (времени) и цене, осталось лишь перекинуть на график..... вобщем, выручайте, подскажите как это сделать красиво

собсвенно скрин старой версии...

с

 
здесь кто нить на вопросы отвечает вообще)
 

Добрый день. Подскажите пожалуйста, при этих условиях прохода машки через уровень ордера не открываются. Что тут не так?

double Mash_Price_1=iCustom(NULL,0,"mashka",0,0);
double Mash_Price_2=iCustom(NULL,0,"mashka",0,1);
double Mash_Price_3=iCustom(NULL,0,"mashka",0,2);

double Max_1,Max_2; //уровень цены 

if(Mash_Price_1>Max_1 && Mash_Price_2==Max_1 && Mash_Price_3<Max_1 || 

Mash_Price_1>Max_1 && Mash_Price_2 < Max_1 && Mash_Price_3<Max_1 ||

Mash_Price_1>Max_1 && Mash_Price_2==Max_1 && Mash_Price_3==Max_1)
{
Opn_B=true;
Opn_S=false;
}
if(Mash_Price_1<Min_1 && Mash_Price_2==Min_1 && Mash_Price_3>Min_1 ||
Mash_Price_1<Min_1 && Mash_Price_2 > Min_1 && Mash_Price_3>Min_1 ||
Mash_Price_1<Min_1 && Mash_Price_2==Min_1 && Mash_Price_3==Min_1)
{
Opn_B=false;
Opn_S=true;
}
}



while(true)
{
if(Total==0 && Opn_B==true)
{
RefreshRates();
SL=Bid-New_Stop(StopLoss)*Point;
TP=Bid+New_Stop(TakeProfit)*Point;
Print("Попытка открыть Buy. Ожидаем ответа...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);
if(Ticket>0)
{
Print("Открыт ордер Buy ",Ticket);
return;
}
if(Fun_Error(GetLastError())==1)
continue;
return; 
}

if(Total==0 && Opn_S==true)
{
RefreshRates();
SL=Ask+New_Stop(StopLoss)*Point;
TP=Ask-New_Stop(TakeProfit)*Point;
Print("Попытка открыть Sell. Ждем ответа...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);
if(Ticket>0)
{
Print("Открыт ордер Sell ",Ticket);
return;
}
if(Fun_Error(GetLastError())==1)
continue;
return;
}
 
deyron:

Добрый день. Подскажите пожалуйста, при этих условиях прохода машки через уровень ордера не открываются. Что тут не так?


Для вставки кода есть кнопка SRC

Чему у Вас равны эти переменные

double Max_1,Max_2; //уровень цены 
 
int Bar_Beg = iBarShift(Symbol(),0,Cur_Beg,false);//начальный бар
int Bar_End = iBarShift(Symbol(),0,Cur_End,false);//конечный бар
int Dif_Bar = Bar_Beg - Bar_End;//Разница баров для расчетов Мах и Мин

int High_1 = iHighest(Symbol(),0,MODE_HIGH,Dif_Bar,Bar_End); //Максимальное значение бара
int Low_1 = iLowest (Symbol(),0,MODE_HIGH,Dif_Bar,Bar_End); //Минимальное значение бара

Max_1=High[High_1];
Min_1=Low[Low_1];

А Машка=(High[i]+Low[i])/2;

 
deyron:

Вот Машка с уровнем Min_1.

Вот вариант если:


Зеленая Max_1,

из истории

Max_1 = 1.5485 Min_1 = 1.5461 Mash_Price_1 = 1.5496 Mash_Price_2 = 1.5495 Mash_Price_3 = 1.549

В каком направлении искать бяку?

А обработку ошибок не пробовали делать?
 
Если были бы попытки открыть ордер, то было б отображение в сообщениях. А если нет попытки открыть ордер то откуда взяться ошибке. Вопрос состоит в правильности оформления условия прохода Машки через уровни. Почему при жестко заданных параметрах ордера открываются гораздо позже чем ожидалось.
 

Вопрос.

Почему условие не идет

if(Close_1>Open_1 && ( Close_1-Open_1)>=30*Point) buffer[i]=High_1;

Пример условный. \

Ищет все...но не размер в пунктах... Проверял через Comment(тратата,5);

Т.е. if(Close_1>Open_1) условие ищет отлино, но условие ( Close_1>Open_1 && Close_1-Open_1)>=30*Point) почетму то НЕТ...!!!

Что не так делаю???

Заранее спасибо!!!))):