[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 326

 
drknn:


Comience con la definición del problema.

- Utilice el script para detectar la presencia de una línea en el gráfico.

- Si la línea existe, imprime su precio inicial y final en las variables; imprime los números de barra (o la hora) en las variables.

- Realiza los cálculos necesarios con el script.

- Imprimir los resultados en la pantalla (o en un documento de texto o en el Diario del Asesor Experto)

Si no consigues resolver estos 4 problemas de inmediato, empieza por aprender el idioma.


¡Darknn! ¡Gracias! ¡¡Investigaré!!
 
Zhunko:

No es ningún secreto. Hay mucho escrito al respecto. No importa qué herramienta se haya utilizado para crear la historia. Se trata de actualizar el gráfico para que el Asesor Experto trabaje en él.

Esto puede hacerse mediante WinAPI. Se ha descrito aquí muchas veces. He escrito una biblioteca. Lo he publicado aquí.

Contiene funciones para controlar la actualización autónoma del gráfico. No requiere ningún guión ni experto. Pero no es para todos. También hay funciones disponibles para todos para actualizar el gráfico desde un Asesor Experto, un script o un indicador. Es más difícil utilizarlos. Porque tienes que pensar cuál de tus programas va a actualizar el gráfico. Los ejemplos están en el script de prueba.

¿Por casualidad tienes una solución preparada para "extraer" la última línea del archivo de registro para mostrarla en los comentarios?
 

Ayuda a un empollón. Sólo para repasar la esencia de la pregunta.

Tengo dos puntos en el gráfico, el punto 2 -el más cercano a la barra cero- y el t.1 -el más alejado de la barra cero en el historial-. Trato de trazar una línea de tendencia a partir de estos dos puntos,

extendiendo un segmento entre estos puntos por N (variable int RayLong) intervalos por delante. El código es el siguiente:

if (RayLong!=0 && point1s==true && point2s==true)
{
//расчет цены в будущем
if (price11s>price22s) {price11s=NormalizeDouble(price11s+((price11s-price22s)*RayLong),Digits);} 
if (price11s<price22s) {price11s=NormalizeDouble(price11s-((price22s-price11s)*RayLong),Digits);}
//расчет бара в будущем
int bis=iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true);
Print("Sup "+iBarShift(Symbol(),0,time22s,true)+" "+iBarShift(Symbol(),0,time11s,true)+" "+bis+
" sec="+bis*Period()*60*NormalizeDouble(RayLong,Digits)+" Time="+TimeToStr(time11s+(Period()*60*
(iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true)+1)*RayLong),TIME_DATE|TIME_SECONDS));
time11s=time11s+(Period()*60*((iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true))*RayLong));
//time11s=time11s+((time11s-time22s)*RayLong); //альтернативный вариант предыдущей строки
}
El problema es que el punto de cálculo es flotante en la fecha. El precio está bien. La fecha, en cambio, es fina o flotante. La impresión muestra que esto ocurre cuando la fecha de liquidación no está en el calendario: fines de semana o días festivos. Por favor, sugiera una solución al problema.
 
forexnew:
¿Por casualidad tienes una solución preparada para "extraer" la última línea del archivo de registro para mostrarla en los comentarios?
Esto es inútil. El archivo de registro se rellena después de la carga de MT4 o cuando MT4 tiene tiempo de hacerlo.
 
ZZZEROXXX:

Ayuda a un empollón. Sólo para repasar la esencia de la pregunta.

Tengo dos puntos en el gráfico, el punto 2 -el más cercano a la barra cero- y el t.1 -el más alejado de la barra cero en el historial-. Trato de trazar una línea de tendencia a partir de estos dos puntos,

extendiendo un segmento entre estos puntos por N (variable int RayLong) intervalos por delante. El código es el siguiente:

El problema es que el punto de cálculo es flotante en la fecha. Todo está bien con el precio. La fecha, en cambio, es fina o flotante. Con la ayuda de la impresora, esto ocurre cuando la fecha de liquidación no está en el calendario, es decir, los fines de semana o los días festivos. Por favor, aconséjeme cómo resolver este problema.

No entiendo el problema. Si se dibuja por precio y barras En el gráfico no hay barras de fin de semana y de no fin de semana. Así que la tendencia y debe continuar a las próximas barras correspondientes a las fechas de los días de negociación.

¿O es diferente para ti?

 

Podría decirme si el array se llenará con tikets de órdenes pendientes en el siguiente código:

int tiket[];

int SetFunk()

{

for (i=0; i<=k-1; i++)

{
ticket [i] =OrderSend(Symbol() , OP_BUYSTOP ,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);
ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
se devuelven nulos al intentar imprimir()

 
¿Para qué sirve la clase de memoria estática? Si es posible, ¿puede dar un buen ejemplo de su uso en el código y destacar las características que lo hacen destacar de otras clases de memoria? Esta cosa parece ser inútil, ¿quién sabe qué?
 
myrzila:

Podría decirme si el array se llenará con tikets de órdenes pendientes en el siguiente código:

int tiket[];

int SetFunk()

{

for (i=0; i<=k-1; i++)

{
ticket [i] =OrderSend(Symbol() , OP_BUYSTOP ,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);
ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
se devuelven nulos al intentar imprimir()

primero establecer el tamaño del array (ArrayResize) y luego trabajar con él
 

Hola.

Tengo un EA.

¿Cómo puedo conseguir que muestre los niveles de media móvil que se muestran en la imagen?

Ahora mismo sólo muestra ceros.


//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
return(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




 
emilien:


Hola.

Tengo un EA.

¿Cómo puedo conseguir que muestre los niveles de media móvil que se muestran en la imagen?

Ahora mismo sólo muestra ceros.


//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
return(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Todavía no he oído hablar del plazo 13