Y en general, ignoras la ayuda. Estoy fuera del diálogo. Te he dado todos los datos para que el código funcione correctamente, pero no quieres escucharlo y haces las cosas a tu manera. Es una pena lo del tiempo.
Artyom Trishkin: De todos modos, estás ignorando la ayuda. Estoy fuera del diálogo. Te he dado todos los datos para que el código funcione correctamente, pero no quieres escucharlo y haces las cosas a tu manera. Es una pena el tiempo.
Gracias por su atención y tiempo.... Supongo que aún no lo he descubierto... Sobre las ruedas y el motor estoy de acuerdo.
Seguramente dejaré el portátil y calcularé la media de iClose para el periodo medio.
Gracias por su atención y tiempo.... Supongo que aún no lo he descubierto... Sobre las ruedas y el motor estoy de acuerdo.
Seguramente dejaré el portátil y calcularé la media de iClose para el periodo medio.
//+------------------------------------------------------------------+//| TestMA.mq5 |//| Copyright 2018, MetaQuotes Software Corp. |//| https://mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2018, MetaQuotes Software Corp."#property link"https://mql5.com"#property version"1.00"#property description"Выводит данные скользящей средней с заданного таймфрейма на любом текущем"#property indicator_chart_window#property indicator_buffers1#property indicator_plots1//--- plot LWMA#property indicator_label1"MA"#property indicator_type1DRAW_LINE#property indicator_color1clrBlue#property indicator_style1STYLE_SOLID#property indicator_width11//--- input parametersinputuint InpPeriod = 14; // MA periodinputint InpShift = 0; // MA shiftinputENUM_MA_METHOD InpMethod = MODE_SMA; // MA methodinputENUM_APPLIED_PRICE InpApplierPrice = PRICE_CLOSE; // MA applied priceinputENUM_TIMEFRAMES InpTimeframe = PERIOD_H1; // LRMA timeframe//--- indicator buffersdouble BufferMA[];
//--- global variables//ENUM_TIMEFRAMES timeframe1;int period_ma;
int shift_ma;
int handle_ma;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- timerEventSetTimer(90);
//--- set global variables
period_ma=int(InpPeriod<1 ? 1 : InpPeriod);
shift_ma=InpShift;
//timeframe1=(InpTimeframe>Period() ? InpTimeframe : Period());//--- indicator buffers mappingSetIndexBuffer(0,BufferMA,INDICATOR_DATA);
//--- setting indicator parametersIndicatorSetString(INDICATOR_SHORTNAME,"Any TF MA on current");
IndicatorSetInteger(INDICATOR_DIGITS,Digits());
//--- setting plot buffer parametersstring label=TimeframeToString(InpTimeframe)+" "+MethodToString(InpMethod)+"("+(string)period_ma+")";
PlotIndexSetString(0,PLOT_LABEL,label);
//--- setting buffer arrays as timeseriesArraySetAsSeries(BufferMA,true);
//--- create handlesResetLastError();
handle_ma=iMA(NULL,InpTimeframe,period_ma,shift_ma,InpMethod,InpApplierPrice);
if(handle_ma==INVALID_HANDLE)
{
Print("The ",TimeframeToString(InpTimeframe)," iMA(",(string)period_ma,") object was not created: Error ",GetLastError());
returnINIT_FAILED;
}
//--- get timeframeTime(NULL,InpTimeframe,1);
//---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[])
{
//--- Проверка количества доступных баровif(rates_total<fmax(period_ma,4)) return0;
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated;
if(limit>1)
{
limit=rates_total-1;
ArrayInitialize(BufferMA,EMPTY_VALUE);
}
//--- Подготовка данныхif(Time(NULL,InpTimeframe,1)==0)
return0;
int bars=(InpTimeframe==PERIOD_CURRENT ? rates_total : Bars(NULL,InpTimeframe));
int count=(limit>1 ? fmin(bars,rates_total) : 1),copied=0;
copied=CopyBuffer(handle_ma,0,0,count,BufferMA);
Comment(TimeframeToString(InpTimeframe)," ",MethodToString(InpMethod),": copied=",copied,", count=",count,", bars=",bars,", rates_total=",rates_total);
if(copied!=count) return0;
//--- Расчёт индикатора//for(int i=limit; i>=0 && !IsStopped(); i--)// {// // }//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Custom indicator timer function |//+------------------------------------------------------------------+voidOnTimer()
{
Time(NULL,InpTimeframe,1);
}
//+------------------------------------------------------------------+//| Возвращает Time |//+------------------------------------------------------------------+datetimeTime(conststring symbol_name,constENUM_TIMEFRAMES timeframe,constint shift)
{
datetime array[];
ArraySetAsSeries(array,true);
return(CopyTime(symbol_name,timeframe,shift,1,array)==1 ? array[0] : 0);
}
//+------------------------------------------------------------------+//| Возвращает наименование таймфрейма |//+------------------------------------------------------------------+string TimeframeToString(constENUM_TIMEFRAMES timeframe)
{
returnStringSubstr(EnumToString(timeframe),7);
}
//+------------------------------------------------------------------+//| Возвращает наименование метода МА |//+------------------------------------------------------------------+string MethodToString(ENUM_MA_METHOD method)
{
returnStringSubstr(EnumToString(method),5);
}
//+------------------------------------------------------------------+
Eliminado todo lo innecesario.
No olvide que no hay ticks en el fin de semana y que la línea sólo saldrá en los mismos plazos: el de trabajo y el de la configuración.
Si lo ejecuta en un marco de tiempo distinto al especificado en la configuración, entonces sin ticks en el fin de semana, necesita actualizar forzosamente el gráfico con el botón derecho del ratón: Actualizar, para que se dibuje la línea.
No olvide que no hay ticks en el fin de semana y que la línea se mostrará sólo en los plazos coincidentes - el de trabajo y el de la configuración.
Si lo ejecuta en un marco de tiempo distinto al especificado en la configuración, entonces sin ticks en el fin de semana, necesita actualizar forzosamente el gráfico con el botón derecho del ratón: Actualizar, para que se dibuje la línea.
Muchas gracias!!! He estado todo el día liándola.... mis ojos están cosidos. Gracias de nuevo
Buenas tardes a todos. Ante el problema del desajuste horario, por favor, ayúdenme a resolverlo. Tratando de averiguar por qué las órdenes se retrasan, estoy registrando información de depuración en mi EA, es absolutamente correcto, se puede ver en la captura de pantalla. Observo que la hora del mensaje es 4,5 horas más que la hora de inicio de las barras (TF=M30) y es este desfase el que hace que las órdenes lleguen tarde. Es decir, según la información de depuración veo que la condición para entrar en el mercado se ha cumplido, por ejemplo, la hora en la barra es 10:00 pero la orden se coloca en la barra con la hora 14:30. Es la primera vez que me encuentro con una situación así. ¿Qué hacer?
por ahora
otro marco temporal (no nativo)
De todos modos, estás ignorando la ayuda. Estoy fuera del diálogo. Te he dado todos los datos para que el código funcione correctamente, pero no quieres escucharlo y haces las cosas a tu manera. Es una pena el tiempo.
Gracias por su atención y tiempo.... Supongo que aún no lo he descubierto... Sobre las ruedas y el motor estoy de acuerdo.
Seguramente dejaré el portátil y calcularé la media de iClose para el periodo medio.
Gracias por su atención y tiempo.... Supongo que aún no lo he descubierto... Sobre las ruedas y el motor estoy de acuerdo.
Seguramente dejaré el portátil y calcularé la media de iClose para el periodo medio.
Eliminado todo lo innecesario.
No olvide que no hay ticks en el fin de semana y que la línea sólo saldrá en los mismos plazos: el de trabajo y el de la configuración.
Si lo ejecuta en un marco de tiempo distinto al especificado en la configuración, entonces sin ticks en el fin de semana, necesita actualizar forzosamente el gráfico con el botón derecho del ratón: Actualizar, para que se dibuje la línea.
Eliminado todo lo innecesario.
No olvide que no hay ticks en el fin de semana y que la línea se mostrará sólo en los plazos coincidentes - el de trabajo y el de la configuración.
Si lo ejecuta en un marco de tiempo distinto al especificado en la configuración, entonces sin ticks en el fin de semana, necesita actualizar forzosamente el gráfico con el botón derecho del ratón: Actualizar, para que se dibuje la línea.
Buenas tardes a todos.
Ante el problema del desajuste horario, por favor, ayúdenme a resolverlo.
Tratando de averiguar por qué las órdenes se retrasan, estoy registrando información de depuración en mi EA, es absolutamente correcto, se puede ver en la captura de pantalla. Observo que la hora del mensaje es 4,5 horas más que la hora de inicio de las barras (TF=M30) y es este desfase el que hace que las órdenes lleguen tarde. Es decir, según la información de depuración veo que la condición para entrar en el mercado se ha cumplido, por ejemplo, la hora en la barra es 10:00 pero la orden se coloca en la barra con la hora 14:30. Es la primera vez que me encuentro con una situación así. ¿Qué hacer?
Encontré un código de trailing stop en youtube, ¿cómo se puede utilizar?
Encontré un código de trailing stop en youtube, ¿cómo se puede utilizar?
Este arrastre es sólo para comprar y está mal implementado, no se puede utilizar.
este arrastre es sólo para comprar y está mal implementado, no se puede utilizar.