También encontré mi error. La cuestión es que la condición "Buy_close", le da al programa una tarea para ejecutar la operación, y la comprobación de la posición es "Buy_opened".
La operación está cerrada y la condición "Buy_close" coincide, por lo que se genera un error.
No puedo obtener líneas MA con un desplazamiento de -+0,30%.
No hay ningúnproblema en llamar a la media móvil a partir de la cual se producirá el desplazamiento, pero no hay forma de obtener líneas de desplazamiento.
Código básico:
#property indicator_chart_window#property indicator_buffers2#property indicator_plots2#property indicator_type1 DRAW_LINE#property indicator_color1 clrMediumVioletRed#property indicator_style1 STYLE_SOLID#property indicator_label1 ""#property indicator_type2 DRAW_LINE#property indicator_color2 clrRed#property indicator_style2 STYLE_SOLID#property indicator_label2 "Sell TP
inputint Period_ = 34; //Периодint ma1Handle;
double ma1Val[];
double ExtMapBuffer1[];
double ExtMapBuffer2[]
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,ExtMapBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ExtMapBuffer2,INDICATOR_DATA)
ma1Handle=iMA(_Symbol,_Period,Period_,0,MODE_EMA,PRICE_CLOSE);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
CopyBuffer(ma1Handle,0,0,2,ma1Val);
ArraySetAsSeries(ma1Val,true);
int bars=Bars(_Symbol,_Period);
for(int i=0;i<bars;i++)
{
ExtMapBuffer2[i]=ma1Val[0] - ((ma1Val[0]/100)*0.3);//ЗДЕСЬ НЕ ПОЛУЧАЕТСЯ ПОЛУЧИТЬ ЛИНИЮ
}
//--- //--- return value of prev_calculated for next callreturn(rates_total);
}
sandex: Esta cadena debe estar en un bucle e indexada.
¿Cómo puedo indexar una cadena? Probando esto, sale el error
ArraySetAsSeries(ma1Val,true);
int bars=Bars(_Symbol,_Period);
for(int i=0;i<bars;i++)
{
CopyBuffer(ma1Handle,0,0,2,ma1Val[i]);
ExtMapBuffer2[i]=ma1Val[i] - ((ma1Val[i]/100)*0.3);//ЗДЕСЬ НЕ ПОЛУЧАЕТСЯ ПОЛУЧИТЬ ЛИНИЮ
}
No hay ningún evento de "cierre de orden" en el terminal. Debe utilizar un script o un Asesor Experto. Como se muestra arriba.
¿Cómo se llama el evento cuando se pulsa la "cruz" para cerrar una orden abierta?
Eso es lo que necesitas para "asignar" un sonido
¡Muchas gracias!
También encontré mi error. La cuestión es que la condición "Buy_close", le da al programa una tarea para ejecutar la operación, y la comprobación de la posición es "Buy_opened".
La operación está cerrada y la condición "Buy_close" coincide, por lo que se genera un error.
Hizo la condición como sigue:
esta es la acción para "asignar" el sonido a
No puedo obtener líneas MA con un desplazamiento de -+0,30%.
No hay ningúnproblema en llamar a la media móvil a partir de la cual se producirá el desplazamiento, pero no hay forma de obtener líneas de desplazamiento.
Código básico:
Esta cadena debe estar en un bucle e indexada.
¿Cómo puedo indexar una cadena? Probando esto, sale el error
La indexación debe hacerse así:
Esta línea debe tener el siguiente aspecto:
Declara que el array es estático, de tamaño 1: