[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 326
Non sono un fan degli indicatori, ma ho deciso di controllare una cosa. L'Expert Advisor dovrebbe comprare al prezzo dell'indicatore RSI superiore e vendere al prezzo di quello inferiore, rispettivamente. Solo se il prezzo è già sopra il limite superiore dell'indicatore RSI, allora l'acquisto dovrebbe essere sopra questo limite e sotto il valore di questo limite + un certo valore di rientro dal limite verso l'alto (nel codice ho specificato solo un numero 0,1), per le vendite, al contrario.
externdouble i_RSIToUpLimit = 55, // Верхняя граница RSI
i_RSIToDnLimit = 45; // Нижняя граница RSI
Codice della funzione che riceve il segnale e il valore RSI stesso:(0,1 qui è la tolleranza di margine per la gamma di acquisto o vendita)
//+-------------------------------------------------------------------------------------+//| Получаем RSI с заданными параметрами |//+-------------------------------------------------------------------------------------+double GetRSI(int RSIIndex)
{
return (iRSI(NULL, i_RSITF, i_RSIPeriod, i_RSIApplied, RSIIndex));
}
//+-------------------------------------------------------------------------------------+//| Получаем общий торговый сигнал |//+-------------------------------------------------------------------------------------+int GetGeneralSignal()
{
if (FindOrders() > 0)
return (SIGNAL_NO);
// if (GetRSI(PRICE_CLOSE, 0) > GetRSI(PRICE_CLOSE, 1))if (GetRSI(0) > i_RSIToUpLimit)
if (GetRSI(0) < (i_RSIToUpLimit + 0.1))
return (SIGNAL_BUY); // Запускаем функцию открытия покупки
if (GetRSI(0) < i_RSIToDnLimit)
if (GetRSI(0) > (i_RSIToDnLimit - 0.1))
return (SIGNAL_SELL); // Запускаем функцию открытия продаж
return (SIGNAL_NO);
}
A volte l'EA apre gli ordini dal livello stesso, a volte molto più in alto (per comprare) e a volte molto più in basso (per vendere). Perché? L'algoritmo è elementare.
Ciao a tutti. Ho una domanda. Mi sono procurato una copiatrice /**/, cosa buona e comoda quando si lavora con diversi account. Ma il problema è che quando si esegue qualsiasi altro programma (video, gioco, solo mappe) in parallelo, c'è un costante rumore di crepitio che esce dagli altoparlanti. È possibile eliminare il problema (sonaglio)? Grazie in anticipo.
Sto cercando di scrivere un semplice indicatore basato su RSI (l'analogo è RandomIndicatorSignals mq4).
Sto cercando di scrivere un semplice indicatore basato su RSI (per l'analogo di questo indicatore RandomIndicatorSignals.mq4 dall'articolo MQL4 Language for Dummies. Indicatori personalizzati (parte 1)(https://www.mql5.com/ru/articles/1500).
L'idea è semplice, se l'RSI traccia un top o un trogolo, disegna una freccia sul grafico.
Sembra essere ok, ma secondo me il buffer dei valori RSI per ogni candela non viene riempito, per questo non funziona. Ecco il codice.
//+------------------------------------------------------------------+//| RSI+Arrow.mq4 |//| _______ |//| |//+------------------------------------------------------------------+#property copyright "_______"#property link "_________"#property indicator_chart_window#property indicator_buffers 3#property indicator_color1 Crimson#property indicator_color2 RoyalBlue//---- input parametersexternint barsToProcess=500;
//---- buffersdouble ExtMapBuffer1[],
ExtMapBuffer2[],
RSIBuffer3[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicators
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,236);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,238);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
SetIndexBuffer (2,RSIBuffer3);
// для информации о значениях буфера
SetIndexLabel (2,"RSIBuffer3");
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
//расчет индикатора на последних барах int limit,i;
int counted_bars=IndicatorCounted();
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(limit>barsToProcess)
limit=barsToProcess;
//заполняем буфер RSI значениями for(i=0; i<limit; i++)
if(i>=1)
{
RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,0);
}
//проводим сравнения for(i=0; i<limit; i++)
if(i>=1)
{
if(RSIBuffer3[i+2]-RSIBuffer3[i+1]>0 && RSIBuffer3[i+1]-RSIBuffer3[i]>0) // условия выставления стрелки /* так тоже не работает
if(RSIBuffer3[i+2]>=RSIBuffer3[i+1] && RSIBuffer3[i+1]<=RSIBuffer3[i])
*/
ExtMapBuffer2[i]=Low[i]-5*Point;
else
ExtMapBuffer2[i]=0.0;
if(RSIBuffer3[i+2]-RSIBuffer3[i+1]<0 && RSIBuffer3[i+1]-RSIBuffer3[i]<0) // условия выставления стрелки/* так тоже не работает
if(RSIBuffer3[i+2]<=RSIBuffer3[i+1] && RSIBuffer3[i+1]>=RSIBuffer3[i])
*/
ExtMapBuffer1[i]=High[i]+5*Point;
else
ExtMapBuffer1[i]=0.0;
}
return(0);
}
//+------------------------------------------------------------------+
Sto cercando di scrivere un semplice indicatore basato su RSI (l'analogo è RandomIndicatorSignals mq4).
Sto cercando di scrivere un semplice indicatore basato su RSI (per l'analogo di questo indicatore RandomIndicatorSignals.mq4 dall'articolo MQL4 Language for Dummies. Indicatori personalizzati (parte 1)(https://www.mql5.com/ru/articles/1500).
L'idea è semplice, se l'RSI traccia un top o un trogolo, disegna una freccia sul grafico.
Sembra essere ok, ma secondo me il buffer dei valori RSI per ogni candela non viene riempito, per questo non funziona. Ecco il codice.
State accedendo a valori di indicatori non calcolati in loop.
State tornando ai valori non calcolati dell'indicatore.
Cambia
a
E quello che ho anche pensato, secondo la tua logica lo strumento dovrebbe calcolare l'RSI dal limite e alla barra 0, ma fa differenza quale lato dovrebbe calcolare l'RSI dalla fine o dall'inizio? Dovrebbe calcolare l'RSI per ogni barra in un dato intervallo e mettere il valore in un buffer (intendo in un array), e poi semplicemente confrontare tre valori consecutivi in un array con l'altro. O non lo è?
Non sono un fan degli indicatori, ma ho deciso di controllare una cosa. L'Expert Advisor dovrebbe comprare al prezzo dell'indicatore RSI superiore e vendere al prezzo di quello inferiore, rispettivamente. Solo se il prezzo è già sopra il limite superiore dell'indicatore RSI, allora l'acquisto dovrebbe essere sopra questo limite e sotto il valore di questo limite + un certo valore di rientro dal limite verso l'alto (nel codice ho specificato solo un numero 0,1), per le vendite, al contrario.
Ho fatto così:
Parametri esterni:
Codice della funzione che riceve il segnale e il valore RSI stesso:(0,1 qui è la tolleranza di margine per la gamma di acquisto o vendita)
A volte l'EA apre gli ordini dal livello stesso, a volte molto più in alto (per comprare) e a volte molto più in basso (per vendere). Perché? L'algoritmo è elementare.
Sto cercando di scrivere un semplice indicatore basato su RSI (l'analogo è RandomIndicatorSignals mq4).
Sto cercando di scrivere un semplice indicatore basato su RSI (per l'analogo di questo indicatore RandomIndicatorSignals.mq4 dall'articolo MQL4 Language for Dummies. Indicatori personalizzati (parte 1)(https://www.mql5.com/ru/articles/1500).
L'idea è semplice, se l'RSI traccia un top o un trogolo, disegna una freccia sul grafico.
Sembra essere ok, ma secondo me il buffer dei valori RSI per ogni candela non viene riempito, per questo non funziona. Ecco il codice.
Sto cercando di scrivere un semplice indicatore basato su RSI (l'analogo è RandomIndicatorSignals mq4).
Sto cercando di scrivere un semplice indicatore basato su RSI (per l'analogo di questo indicatore RandomIndicatorSignals.mq4 dall'articolo MQL4 Language for Dummies. Indicatori personalizzati (parte 1)(https://www.mql5.com/ru/articles/1500).
L'idea è semplice, se l'RSI traccia un top o un trogolo, disegna una freccia sul grafico.
Sembra essere ok, ma secondo me il buffer dei valori RSI per ogni candela non viene riempito, per questo non funziona. Ecco il codice.
State accedendo a valori di indicatori non calcolati in loop.
Cambia
a
State tornando ai valori non calcolati dell'indicatore.
Cambia
a
Grazie, mi ha dato un'idea! Tuttavia, vorrei capire il "significato fisico":) come diceva il nostro fisico
Anch'io ho un problema: 2 codici d'azione "leggermente" diversi, ma essenzialmente uguali: Cancellare tutti gli ordini in sospeso
1) Non funziona correttamente - solo un ordine viene cancellato
2) Funziona bene - li cancella tutti
Spiegare: il significato di "in questo ciclo, si accede ai valori non calcolati dell'indicatore".
State tornando ai valori non calcolati dell'indicatore.
Cambia
a
Puoi fare lo spelling? Perché? Così non faccio più errori in futuro.
State tornando ai valori non calcolati dell'indicatore.
Cambia
a
ancora non funziona, RSIBuffer3 mostra solo il valore RSI sull'ultima barra quando si passa sopra una barra
E ancora non funziona, RSIBuffer3 mostra solo il valore RSI sull'ultima barra quando si passa sopra la barra
Il tuo quinto parametro è 0 - cioè l'ultima barra!
fare in questo modo:
Estratto dal documento:
State tornando ai valori non calcolati dell'indicatore.
Cambia
a
E quello che ho anche pensato, secondo la tua logica lo strumento dovrebbe calcolare l'RSI dal limite e alla barra 0, ma fa differenza quale lato dovrebbe calcolare l'RSI dalla fine o dall'inizio? Dovrebbe calcolare l'RSI per ogni barra in un dato intervallo e mettere il valore in un buffer (intendo in un array), e poi semplicemente confrontare tre valori consecutivi in un array con l'altro. O non lo è?
Il tuo quinto parametro è 0 - cioè l'ultima barra!
fare in questo modo:
Estratto dal documento:
Farò una prova, grazie