[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 183

 
Craft:

Buenas tardes.

Me pueden decir cómo encontrar el cierre más alto de un array:

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

¿Se hace así o me equivoco?

No he podido encontrar ninguna respuesta buscando "máximo cierre".

Tal vez sea así:

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:
Tiempo[i] - tiempo que corresponde a la i-ésima barra del gráfico.
No entiendo lo de los datos de "mañana" en el gráfico. ¿Dónde lo muestran? ¡¡¡Quiero oooh-ooh-ooh!!!

Esta es una versión muy antigua de mi indicador...
Estaba contando las barras hasta el momento adecuado para colocar la flecha allí - pero esta no es la versión correcta, porque en algunos casos son las vacaciones, y sólo el tiempo de la sesión de negociación y el instrumento (en este caso es sberbank)

Ahora he reescrito completamente el código y quiero que esté bien...

Quiero obtener =) valores de tiempo en el eje X bajo la última flecha azul, para comprobar la ubicación.

De hecho, la nueva versión del indicador tiene en sus matrices la información sobre la ubicación de la siguiente flecha a lo largo del eje X (tiempo) y el precio, todo lo que queda es ponerlo en el gráfico..... en general, ayúdame, dime cómo hacerlo bien

Captura de pantalla de una versión antigua...

с

 
alguien aquí está respondiendo a las preguntas en absoluto)
 

Buenas tardes. Me pueden aconsejar, en estas condiciones, las órdenes no se abren por el nivel. ¿Qué ocurre aquí?

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:

Buenas tardes. Me pueden aconsejar, en estas condiciones, las órdenes no se abren por el nivel. ¿Qué ocurre aquí?


Hay un botón SRC para insertar el código

¿A qué tienen que ser iguales estas variables?

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];

Y Mashka=(Alto[i]+Bajo[i])/2;

 
deyron:

Aquí está Mashka con el nivel Min_1.

Aquí hay una opción si:


Max_1 verde,

de la historia

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

¿En qué dirección buscas los problemas?

¿Has probado a gestionar los errores?
 
Si hubiera intentos de abrir una orden, se mostraría en los mensajes. Y si no se intenta abrir una orden, por qué habría un error. La cuestión es si las condiciones de paso de Macha por los niveles están bien establecidas. ¿Por qué las órdenes se abren mucho más tarde de lo previsto cuando los parámetros están codificados?
 

Pregunta.

Por qué la condición no va

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

Ejemplo condicional. \

Busca todo... pero no el tamaño en puntos... Lo he comprobado a través de Comment(waste,5);

¡¡¡Es decir... la condición if(Close_1>Open_1) se ve bien, pero la condición ( Close_1>Open_1 && Close_1-Open_1)>=30*Punto) por qué NO...!!!

¿Qué estoy haciendo mal?

Gracias de antemano!!!):

 
deyron:
Si hubiera intentos de abrir una orden, se mostraría en los mensajes. Y si no se intenta abrir una orden, por qué habría un error. La cuestión es si las condiciones de paso de Macha por los niveles están bien establecidas. ¿Por qué las órdenes se abren mucho más tarde de lo previsto cuando los parámetros están codificados?

Print() y GetLastError() en los lugares adecuados responderían a todas tus preguntas