[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 187

 
NayTmeR:

Por ejemplo, cuando la línea val1[c] cruza 0,45 hacia arriba, el valor del tiempo se asigna a la variable TimeBegin

¿Cuál es la pregunta? ¿Cómo se almacena el tiempo al cruzar? Primero se comprueba si hay una intersección y luego se almacena
 

¿Cómo se asigna este tiempo a una variable?

 
eddy:
Bueno, las flechas están en la barra de apertura.

No estoy seguro de entenderlo. Hay flechas en la barra de apertura, pero dibujadas por la función correspondiente - OrderSend(). Estas flechas no están relacionadas con las flechas dibujadas por OrderModify(), ¿verdad? He entendido que usando OrderModify(), no sólo coloreo las flechas, sino que también cambio el nivel de stop loss, cambiando el valor de la variable SL? Está escrito en la ayuda:

bool OrdenModificar( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)

Cambia los parámetros de las posiciones abiertas anteriormente o de las órdenes pendientes.

Esto significa que no sólo cambia el color de la flecha, sino que también "cambia los parámetros de las órdenes abiertas anteriormente". Sugiere que se cambien los topes y se dibujen flechas. Pero no lo hace por alguna razón.

 

La palabra "sólo" se refería a la flecha, no a lo que hace la función.

стрелки на баре открытия есть, но нарисованные соответствующей функцией - OrderSend(). Эти стрелки же не относятся к стрелкам, рисуемым OrderModify()?

A lo que me refiero, es a que fijas un tope y/o una toma, y así cambian las flechas.

 
NayTmeR:

¿Cómo se asigna este tiempo a una variable?

hay una función para esto en el libro de Kim
 
todem:
hay tal característica en la colección de Kim

¿Puede ser más específico? ¿Dónde puedo encontrarlo? ¿Dónde puedo encontrar la colección de Kim?
 
eddy:

La palabra "sólo" se refería a la flecha, no a lo que hace la función.

Puede utilizar la función para establecer un tope y/o una toma, por lo que sus flechas cambiarán.

El manual de OrderModify() dice:

arrow_color - Color de las flechas de modificación de StopLoss y/o TakeProfit en el gráfico. Si falta este parámetro o su valor es CLR_NONE, las flechas no aparecerán en el gráfico.

Es decir, por lo que he entendido, OrderModify() dibuja palos porque dice "flechas de MODIFICACIÓN", lo que significa que no sólo hay flechas de apertura/cierre creadas por OrderSend, sino también flechas de modificación creadas por OrderModify. Y estas flechas de MODIFICACIÓN sólo pueden faltar si el parámetro está ausente o es igual a CLR_NONE. Pero mi parámetro está presente y es igual a "Verde". He entendido que no hay ningún parámetro especial responsable de la presencia o ausencia de flechas de modificación, se controla por la ausencia o igualdad de su CLR_NONE. Juzgo por analogía con OrderSend en el mismo helper:

arrow_color - color de la flecha de apertura en el gráfico. Si falta el parámetro o su valor es CLR_NONE, la flecha de apertura no se muestra en el gráfico.

 

Por favor, ayuda con la función isCloseLastPosByStop ().

Inserto en MetaEditor función isCloseLastPosByStop () (pero sólo lo que está escrito en https://www.mql5.com/ru/forum/107476/page21).

Después de una compilación infructuosa obtengo errores:

'(' - definición de función inesperada

't' - variable no definida

't' - variable no definida

'}' - paréntesis desequilibrados

Es esta función, como he comentado en el resto del código.

 

Hola a todos. Por favor, ayude a combinar las siguientes cosas. El resultado debería ser: dos líneas siguiendo el precio, una 20 pips por debajo de Ask,

el otro es más alto. Además, recibo un pitido si el precio cambia 20 puntos por 1 tick.

Todo funciona bien por separado. Gracias de antemano.

1) La línea está 20 pips por debajo de Ask.

//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int inicio()
{
ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}

//+------------------------------------------------------------------+

2) Línea por encima de Ask por 20p.

//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int inicio()
{
ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+

3) Tasa de variación de los precios en el tiempo.

#property show_inputs

extern int int pips=2; //cambiar Ask
extern double Tiempo_=0.1; //c. ~ garrapata
extern bool all_from_view=true; //sólo símbolo actual - false

int, l, p, número_de_caracteres;
string val[], on_screen;
int Preguntar_guardar[];

//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
void start(){
number_of_characters=SymbolsList(val, true);//escribir las herramientas y su número en la matriz val llamar a la función SymbolsList
ArrayResize(Ask_save,number of_characters);
if(number of_characters == -1){ Alert("SymbolsList(string &Symbols[], bool Selected) failed"); return;}
if(!all_from_selected){
número_de_caracteres=1;
ArrayResize(Ask_save,number_of_characters);
ArrayResize(val,number of_characters);
val[0]=Símbolo();
}

while(true&&!IsStopped()){ //si se permite y no se detiene el script continuará

Alert("recalcular en "+Time_+" seg;)

for(i=0;i<número_de_caracteres;i++){ //calcular el valor del diferencial para los símbolos del market watch
if((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT))>=pips){
Alert(val[i]+", "+Period()+" cambiado a la baja en "+DoubleToStr((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)),0)+" pips");
PlaySound("timeout.wav");
}
if((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i])>=pips){
Alert(val[i]+", "+Period()+" cambió hacia arriba en "+DoubleToStr((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i]),0)+" pips");
PlaySound("email.wav");
}
Ask_save[i]=MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT);
}
Sleep(Time_*1000);//Pausa por seg.
}

/*
number_of_characters=SymbolsList(val, true);//escribir las herramientas y su número en la matriz val Llamada a la función SymbolsList
if(number of_characters == -1){ Alert("Error al abrir el archivo en SymbolsList(string &Symbols[], bool Selected)"); return;}

while(true&&!IsStopped()){ //si se permite y no se detiene el script continuará
on_screen="\r\n"; // indent
for(i=0;i<número_de_caracteres;i++)//calcular el valor del spread para los símbolos de la revisión del mercado
on_screen=on_screen+val[i]+" coste del spread = " + DoubleToStr(MarketInfo(val[i],MODE_SPREAD)*MarketInfo(val[i],MODE_TICKVALUE),0)+"\r\n";
Comentario(a_pantalla);//publicar
Alert("recalcular");//señal
Sleep(3000);//Pausa durante 3 segundos.
}
*/
}
void deinit(){Comentar("");}
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=


//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
//la función lee todos los instrumentos financieros del Market Watch.
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
int SymbolsList(string &Symbols[], bool Selected){
int Offset, SymbolsNumber; string SymbolsFileName;
if(Selected) SymbolsFileName = "symbols.sel"; si no SymbolsFileName = "symbols.raw";
int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ);
if(hFile < 0) return(-1); if(Selected) { SymbolsNumber = (FileSize(hFile) - 4) / 128; Offset = 116; }
else { SymbolsNumber = FileSize(hFile) / 1936; Offset = 1924; }
ArrayResize(Symbols, SymbolsNumber);
if(Selected) FileSeek(hFile, 4, SEEK_SET);
for(int i = 0; i < SymbolsNumber; i++){Symbols[i] = FileReadString(hFile, 12); FileSeek(hFile, Offset, SEEK_CUR);}
FileClose(hFile);
return(NúmeroDeSímbolos);
}

 
globad:

Hola a todos. Por favor, ayude a combinar las siguientes cosas. El resultado final debería ser: dos líneas siguiendo el precio una por debajo de Ask por 20 pips,....

Esto es una falta de respeto a los que pregunta. Aprenda a publicar correctamente el código -> SRC