Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 755

 

Buon pomeriggio!

Ho bisogno di aiuto/consiglio. Nel terminale c'è un'opzione per mescolare diversi indicatori. In questo caso è possibile fissare gli intervalli.

Per esempio, CCI min=-300 max=300 e RSI min=0 max=100.

È possibile implementare nell'Expert Advisor l'incrocio di 2 indicatori. Supponiamo che il CCI incroci la RSI dal basso verso l'alto => apri un ordine Bay.

È possibile?

O non è possibile perché questi indicatori hanno una gamma di valori diversi. Con l'rsi la gamma di valori è limitata da 0 a 100, e con il cci i valori possono essere sia positivi che negativi e non sono limitati al valore max/min...

 
lomaxx7:

Buon pomeriggio!

Ho bisogno di aiuto/consiglio. Nel terminale c'è un'opzione per mescolare diversi indicatori. In questo caso è possibile fissare gli intervalli.

Per esempio, CCI min=-300 max=300 e RSI min=0 max=100.

È possibile implementare nell'Expert Advisor l'incrocio di 2 indicatori. Supponiamo che il CCI incroci la RSI dal basso verso l'alto => apri un ordine Bay.

È possibile?

O non è possibile perché questi indicatori hanno una gamma di valori diversi. Con l'rsi la gamma di valori è limitata da 0 a 100, e con il cci i valori possono essere sia positivi che negativi e non sono limitati al valore max/min...

Se scrivete il vostro iRSI per questo scopo, potete sottrarre 50 dal valore iRSI e ottenere un indicatore con livello zero. Resta una domanda: a cosa serve mescolare gli indicatori in questo modo?

 
Alexey Viktorov:

Se scrivete il vostro iRSI proprio per questo scopo, potete sottrarre 50 dal valore dell'iRSI e ottenere un indicatore a livello zero. Resta una domanda: a cosa serve mescolare gli indicatori in questo modo?

Grazie. Ci sono alcune idee che devono essere elaborate.
 

lomaxx7:

È possibile implementare in un EA la funzione di incrociare 2 indicatori. Supponiamo che il CCI incroci la RSI dal basso verso l'alto => apre l'ordine Bay...

È possibile?

O non è possibile perché questi indicatori hanno una gamma di valori diversi. Con l'rsi la gamma di valori è limitata da 0 a 100, e con il cci i valori possono essere sia positivi che negativi e non sono limitati al valore max/min...

Non è complicato. Puoi calcolareCCI attraversoRSI e viceversa. Guarda la documentazione. C'è una spiegazione per ogni indicatore, quali prezzi possono essere utilizzati.

https://www.mql5.com/ru/docs/indicators/irsi

prezzo applicato

[Prezzousato . Può essere una qualsiasi delle costanti di prezzo ENUM_APPLIED_PRICE o può essere un handle di un altro indicatore.

Per esempio, sostituiamo la maniglia CCI nell'RSI:

int OnInit()
h_cci=iCCI(_Symbol, _Period, cci_ma_period, cci_applied_price);
h_rsi=iRSI(_Symbol, _Period, rsi _ma_period, h_cci);
Далее
void OnTick() 
if(CopyBuffer(h_cci,0,0,to_copy, cci_buf)<=0) return(0);
if(CopyBuffer(h_rsi,0,0,to_copy, rsi _buf)<=0) return(0);
Далее сравниваете значения:
if(cci_buf>rsi_buf) {...ваши действия; ...buy; ...sell;} 
else
if(cci_buf<rsi_buf) {...ваши действия; ...buy; ...sell;}

La gamma di valori in questo caso non è importante perché l'oscillatore successivo utilizza già i valori dell'oscillatore precedente.

Документация по MQL5: Технические индикаторы / iRSI
Документация по MQL5: Технические индикаторы / iRSI
  • www.mql5.com
Технические индикаторы / iRSI - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 //+------------------------------------------------------------------+
class A
  {
public: int       propA;
public:
                     A(void) {propA = 15;};
                    ~A(void) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public:
                     B(void){};
                    ~B(void){};
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print(obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for(int i=0;i<ArraySize(obj);i++)
      Print(obj[i].propA);
  }
//+------------------------------------------------------------------+

Se decommentiamo le linee rimanenti in OnStart() otteniamo "newObjArray - parameter conversion not allowed".

Due domande: perché e come risolvere il problema?
 

Potete dirmi come ottenere un rapporto di posizione dal terminale?

Il fatto è che nel terminale vedo una posizione normale, ma nel rapporto in Excel è diviso in parti, il che non è conveniente per me.

 

Ciao 2017.06.30_18:11 GMT+3. Conoscitori del forum. Ho testato il mio EA in MT5 nel tester di strategia. Apre e chiude i trade, ma sembra essere solo sulla prima condizione per aprire e chiudere i trade. Così ho deciso di testare l'EA su un conto demo. Tuttavia, l'EA scompare immediatamente dal grafico sul conto demo. Si scopre che ha un errore sul conto demo: 2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) array out of range in 'Cross.mqh' (18,12).
Stranamente, nessun errore del genere è stato trovato nel tester della strategia. Ho provato a cercare l'errore ma non sono riuscito a capirlo. La domanda è quanto di più stupido possa esistere. Mi ha confuso molto. I programmatori di MetaQuotes potrebbero sbagliare in questo caso? L'Expert Advisor standard Moving Average.mq5 ha lo stesso codice (l'ho riscritto da lì). Non ha errori sul conto demo. Ma non è stato scambiato. Ho scambiato su М1. Non ho aspettato molto, però. Qual è il problema? Aspetterò le vostre risposte. Non vedo l'ora. In allegato ci sono i file, anche se non tutti accuratamente. 18:26 GMT+3. Ho provato diversi modi per cambiare il codice, ma il risultato è due: o va fuori dall'array, o scrive l'errore "No indicator data". E nel diario del tester di strategia si può vedere come si ottengono gli "overshoots". Si prende il prezzo di apertura del primo trade. Differisce dal prezzo di apertura del secondo trade. Questa "deviazione" (è più grande dei miei 130 punti) si chiama "overshoot". Dovresti anche dire "grazie" ai programmatori di MetaQuotes? Non vi annoierete. Tutto quello che fai è lento. Ho intenzione di finire l'Expert Advisor prima. 18:45 GMT+3. Se avete bisogno di chiarimenti, non esitate a contattarmi. Questo è tutto. 18:51 GMT+3.

 
Николай Никитюк:

Ciao 2017.06.30_18:11 GMT+3. Conoscitori del forum. Ho testato il mio EA in MT5 nel tester di strategia. Apre e chiude i trade, ma sembra essere solo sulla prima condizione per aprire e chiudere i trade. Così ho deciso di testare l'EA su un conto demo. Tuttavia, l'EA scompare immediatamente dal grafico sul conto demo. Si scopre che ha un errore sul conto demo: 2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) array out of range in 'Cross.mqh' (18,12).
Stranamente, nessun errore del genere è stato trovato nel tester della strategia. Ho provato a cercare l'errore ma non sono riuscito a capirlo. La domanda è quanto di più stupido possa esistere. Mi ha confuso molto. I programmatori di MetaQuotes potrebbero sbagliare in questo caso? L'Expert Advisor standard Moving Average.mq5 ha lo stesso codice (l'ho copiato da lì). Non ha errori sul conto demo. Ma non è stato scambiato. Ho scambiato su М1. Non ho aspettato molto, però. Qual è il problema? Aspetto le vostre risposte. Non vedo l'ora. In allegato ci sono i file, anche se non tutti accuratamente. 18:26 GMT+3. Ho provato diversi modi per cambiare il codice, ma il risultato è due: o va fuori dall'array, o scrive l'errore "No indicator data". E nel diario del tester di strategia si può vedere come si ottengono gli "overshoots". Si prende il prezzo di apertura del primo trade. Differisce dal prezzo di apertura del secondo trade. Questa "deviazione" (è più grande dei miei 130 punti) si chiama "overshoot". Dovresti anche dire "grazie" ai programmatori di MetaQuotes? Non vi annoierete. Tutto quello che fai è lento. Ho intenzione di finire l'Expert Advisor prima. 18:45 GMT+3. Se avete bisogno di chiarimenti, non esitate a contattarmi. Questo è tutto. 18:51 GMT+3.


Finora sembra che "rates" (file "Cross.mqh", linea 18, posizione del cursore 12) sia dichiarato da qualche parte a livello globale - quindi tutte le domande si riducono a: "Come si compila effettivamente questo "tasso"?

 

Sto cercando di calcolare l'angolo di intersezione di due curve. Il compito non è nemmeno quello di trovare l'angolo in sé, ma di verificare se è acuto o ottuso. Ho anche disegnato questo. Posso trovare la tangente di B e la tangente di C. Come faccio a conoscere queste tangenti, per determinare se l'angolo A è acuto. Aiutami, non sono molto bravo in trigonometria. Naturalmente, senza trovare gli angoli stessi - a causa della differenza di scala i loro valori sono inadeguati.


 
igorbel:

Sto cercando di calcolare l'angolo di intersezione di due curve. Il compito non è nemmeno quello di trovare l'angolo in sé, ma di verificare se è acuto o ottuso. Ho anche disegnato questo. Posso trovare la tangente di B e la tangente di C. Come faccio a conoscere queste tangenti per determinare se l'angolo A è acuto. Aiutami, non sono molto bravo in trigonometria. Naturalmente, senza trovare gli angoli stessi - a causa della differenza di scala i loro valori sono inadeguati.


Per trovare le tangenti, avete un triangolo rettangolo?