E in generale, ignori l'aiuto. Sono fuori dal dialogo. Vi ho dato tutti i dati per far funzionare correttamente il codice, ma voi non volete sentirli, quindi fate le cose a modo vostro. È un peccato per il tempo.
Artyom Trishkin: Comunque, stai ignorando l'aiuto. Sono fuori dal dialogo. Vi ho dato tutti i dati perché il codice funzioni correttamente, ma voi non volete ascoltarli e fate le cose a modo vostro. È un peccato per il tempo.
Grazie per l'attenzione e il tempo .... Credo di non averlo ancora capito... Sulle ruote e sul motore sono d'accordo.
Probabilmente rinuncerò al palmare e calcolerò la media iClose per il periodo medio.
Grazie per l'attenzione e il tempo .... Credo di non averlo ancora capito... Sulle ruote e sul motore sono d'accordo.
Probabilmente rinuncerò al palmare e calcolerò la media iClose per il 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);
}
//+------------------------------------------------------------------+
Rimosso tutto il superfluo.
Non dimenticate che non ci sono tick nel fine settimana e la linea sarà emessa solo agli stessi timeframe - quello di lavoro e quello nelle impostazioni.
Se lo si esegue su un timeframe diverso da quello specificato nelle impostazioni, allora senza tick nel fine settimana, è necessario aggiornare forzatamente il grafico con il tasto destro del mouse: Refresh, in modo che la linea venga disegnata.
Non dimenticare che non ci sono tick nel fine settimana e la linea sarà visualizzata solo sui timeframe corrispondenti - quello di lavoro e quello nelle impostazioni.
Se lo si esegue su un timeframe diverso da quello specificato nelle impostazioni, allora senza tick nel fine settimana, è necessario aggiornare forzatamente il grafico con il tasto destro del mouse: Refresh, in modo che la linea venga disegnata.
Grazie molte volte!!1 Ho pasticciato tutto il giorno.... i miei occhi sono ricuciti. Grazie ancora
Buon pomeriggio a tutti. Di fronte al problema della mancata corrispondenza dei tempi, per favore aiutatemi a risolverlo. Cercando di capire perché gli ordini sono in ritardo, sto registrando le informazioni di debug nel mio EA, è assolutamente corretto, si può vedere nello screenshot. Ho notato che l'ora del messaggio è 4,5 ore più dell'ora di inizio delle barre (TF=M30) ed è questo ritardo che causa il ritardo degli ordini. Cioè, secondo le informazioni di debug vedo che la condizione per entrare nel mercato è stata soddisfatta, per esempio, l'ora sulla barra è 10:00 ma l'ordine è piazzato sulla barra con l'ora 14:30. È la prima volta che incontro una situazione del genere. Cosa fare?
per ora
altro (non nativo) lasso di tempo
Comunque, stai ignorando l'aiuto. Sono fuori dal dialogo. Vi ho dato tutti i dati perché il codice funzioni correttamente, ma voi non volete ascoltarli e fate le cose a modo vostro. È un peccato per il tempo.
Grazie per l'attenzione e il tempo .... Credo di non averlo ancora capito... Sulle ruote e sul motore sono d'accordo.
Probabilmente rinuncerò al palmare e calcolerò la media iClose per il periodo medio.
Grazie per l'attenzione e il tempo .... Credo di non averlo ancora capito... Sulle ruote e sul motore sono d'accordo.
Probabilmente rinuncerò al palmare e calcolerò la media iClose per il periodo medio.
Rimosso tutto il superfluo.
Non dimenticate che non ci sono tick nel fine settimana e la linea sarà emessa solo agli stessi timeframe - quello di lavoro e quello nelle impostazioni.
Se lo si esegue su un timeframe diverso da quello specificato nelle impostazioni, allora senza tick nel fine settimana, è necessario aggiornare forzatamente il grafico con il tasto destro del mouse: Refresh, in modo che la linea venga disegnata.
Rimosso tutto il superfluo.
Non dimenticare che non ci sono tick nel fine settimana e la linea sarà visualizzata solo sui timeframe corrispondenti - quello di lavoro e quello nelle impostazioni.
Se lo si esegue su un timeframe diverso da quello specificato nelle impostazioni, allora senza tick nel fine settimana, è necessario aggiornare forzatamente il grafico con il tasto destro del mouse: Refresh, in modo che la linea venga disegnata.
Buon pomeriggio a tutti.
Di fronte al problema della mancata corrispondenza dei tempi, per favore aiutatemi a risolverlo.
Cercando di capire perché gli ordini sono in ritardo, sto registrando le informazioni di debug nel mio EA, è assolutamente corretto, si può vedere nello screenshot. Ho notato che l'ora del messaggio è 4,5 ore più dell'ora di inizio delle barre (TF=M30) ed è questo ritardo che causa il ritardo degli ordini. Cioè, secondo le informazioni di debug vedo che la condizione per entrare nel mercato è stata soddisfatta, per esempio, l'ora sulla barra è 10:00 ma l'ordine è piazzato sulla barra con l'ora 14:30. È la prima volta che incontro una situazione del genere. Cosa fare?
Ho trovato il codice trailing stop su youtube, come può essere usato?
Ho trovato il codice trailing stop su youtube, come può essere usato?
Questo trawl è solo per l'acquisto ed è implementato male, non può essere usato.
questo trawl è solo per l'acquisto ed è implementato male, non può essere usato.