Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 89

 
Alexey Kozitsyn:
Non dovresti farlo. Sarebbe un grande spreco di risorse. E cosa c'è di male in un tempo di risposta veloce senza looping?
Grazie. È solo che il tutorial ufficiale di mql4 lo dà come esempio, ecco perché mi interessa. Ho pensato che potesse in qualche modo funzionare meglio del solito modo.
 
LRA:
Un tick è l'arrivo di nuovi dati dal server. E deve essere elaborato immediatamente dopo il suo arrivo. Se lo fate in loop con un ritardo di 5ms, allora la maggior parte dei tic arriverà esattamente durante questo ritardo. Così, l'elaborazione sarà ritardata di 0 ... 5 ms.
Sì, c'è una logica in questo. Ho solo pensato che la funzione start() stessa spende anche del tempo sul suo ciclo, e forse la sua iterazione ruba qualche frazione di secondi o più (potrebbe richiedere di rivolgersi a un server per ottenere un grande set di dati in una volta sola), a differenza di un ciclo puro. Forse è solo la mia immaginazione, perché non capisco i meccanismi interni, ma c'è una ragione per cui questo metodo è stato incluso nel tutorial di mql4.
 
smart_man:
Grazie. È solo che il tutorial ufficiale di mql4 dà questo come esempio, quindi ero interessato. Ho pensato che forse in qualche modo funziona meglio del solito modo.
Sì, ma il tutorial è un po' datato. Certo, è meglio di niente, ma è utile guardare la documentazione allo stesso tempo e controllare se le funzioni come start() ci sono ancora. Ora è meglio usare il gestore OnTick() per gli EA.
 

Buon pomeriggio!

 
Buon pomeriggio, potete dirmi il broker più conveniente per la coppia di valute USD/RUB, lo spread minimo e lo swap minimo ecc. con le commissioni...?
 
kanybek06:
Ciao, puoi dirmi il broker più conveniente per la coppia di valute USD/RUB?

Dato che siete appena agli inizi, sarete molto felici con chiunque. Fai una ricerca su internet e confrontali. Comunicate con loro, fate domande. Avrai una risposta.

Qui stiamo discutendo le domande sulla programmazione e la piattaforma di trading Metatrader.

 

Qual è il modo migliore per chiudere i contro-ordini se devi chiuderli simultaneamente

1) ognuno individualmente (manualmente o tramite TP/SL)

o

2) In coppia con OrderCloseBy (solo manuale)?

Ci sarà un unico salvataggio dello spread con OrderCloseBy come scritto nel tutorial? I DC non proibiscono una tale chiusura e questo spread sarà restituito? Come verificare questo tecnicamente?

Grazie.

 
C'è una classe template per lavorare con un array.
#property strict
#include <ObjectVariables.mqh>
#include <Arrays\varQSort.mqh>
#include <Arrays\objQSort.mqh>

template<typename T1>
class ArrayList
{
   private:
      T1 array[];
      QuickSorts<T1> *qs;
      int size;
      int index;

   public:
      //прочие функции
      void QuickSort();//отсортировать массив
      //прочие функции
};
//+------------------------------------------------------------------+
//| Сортировка массива
template<typename T1>
void ArrayList::QuickSort()
{
   int idx = index;//сохранение положения индекса
   if(IsPointer(array[0])) // true - массив содержит указатели класса
      qs /*ошибка 2*/ = new ObjQSort<T1>();
   else
      qs /*ошибка 2*/ = new VarQSort<T1>();
   qs.Sort(array, 0, index);
   index = idx;
}

Per questa classe template, abbiamo bisogno di implementare l'ordinamento, dato che un array può memorizzare tipi di dati complessi. Per esempio:
ArrayList<PP*> *dde; // PP - класс

Si possono scrivere funzioni diverse per tipi semplici e tipi complessi, ma il compilatore non capisce che le funzioni sono strettamente delimitate dal tipo di dati e continua a imprecare:
'<' - operazione illegale usare ArrayList.mqh

Così ho deciso di incorporare l'interfaccia:

#property strict
template <typename T1>
interface QuickSorts
{
   void Sort(T1 &array[], int beg, int end);
};
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class VarQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end);
   VarQSort(){}
   ~VarQSort(){}
};
template <typename T1>
void VarQSort::Sort(T1 &array[], int beg,int end)
{
   //алгоритм функции
}
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class ObjQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end){}
   ObjQSort(){}
   ~ObjQSort(){}
};

Tutte le parti del costrutto compilano. Ma se si cerca di dichiararlo:
ArrayList<PP*> *dde; // PP - класс
poi, quando si compila il file, questi sono gli errori:

'QuickSorts' - template mismatch varQSort.mqh /*errore 1*/
'=' - errore di tipo ArrayList.mqh /*errore 2*/


Cosa dovrei correggere nel codice per eliminare questo type mismatch? Non capisco perché sia apparso.

P.S.
'<' - operazione illegale usare varQSort.mqh
mi perseguita anche in questo costrutto. È proprio di questo errore che volevo sbarazzarmi. Ma capisco questo errore e non capisco questi due.
 
виталик:
Ciao, si prega di aiutare con un pezzo di codice per risolvere strappato da un indicatore PivotsDaily v2.mq4 come convertire in un'ora o mezz'ora, solo in un modo o nell'altro, quindi sarebbe più chiaro cambia, si prega di aiutare, grazie in anticipo.

Hai già scritto in un thread. È sufficiente. Non c'è bisogno di raggruppare gli altri.
 
Salve, potete per favore consigliarmi, ho scritto un EA 1,5 anni fa, funzionava, tutto andava bene. Non l'ho usato per tutto questo tempo, ora non si installa su un grafico. Chissà quale può essere la ragione? Può essere dovuto a qualche aggiornamento di MT4?
Motivazione: