Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1433

 
lego9955 gestione degli errori è più corretta. Grazie!

Per sicurezza, è più facile scriverli in una riga, come ho mostrato, piuttosto che in un array di righe separate.

 
Alexey Petrov #:

Salve,

Provi a cercare sul mercato soluzioni già pronte - https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market

Può anche ordinare una soluzione personalizzata da Freelance - https://www.mql5.com/fr/job

Ciao e grazie per la tua risposta. Sono riuscito a creare uno script che soddisfa le mie aspettative, ma purtroppo ci sono ancora due errori che non riesco a capire o a correggere. Sapresti chi contattare per un piccolo aiuto? Sono solo due righe di codice che registrano errori dopo la compilazione...
 
Buon anno! Quale finestra è migliore per MT5 10 o 11? Seduto su un portatile AMD 5900X
 

Ciao a tutti e buon anno! Mi sapreste dire: come posso fare in modo che il mio script utilizzi un indicatore dal mercato?

Più precisamente:
c'è un indicatore "Automatic Trendline" nel mercato. Voglio creare un robot basato su di esso, che apra o chiuda una posizione nel momento in cui il prezzo attraversa queste linee sull'indicatore (bene, e sotto condizioni aggiuntive specificate).

 
Rad89 #:

Ciao a tutti e buon anno! Mi potete dire: come posso fare in modo che il mio script utilizzi un indicatore dal mercato?

Più precisamente:
c'è un indicatore "Automatic Trendline" nel mercato. Voglio creare un robot basato su di esso, che apra o chiuda una posizione nel momento in cui il prezzo attraversa queste linee sull'indicatore (bene, e sotto condizioni aggiuntive specificate).

Nessun problema per me. Per il mercato o CodeBase non è possibile utilizzare i mestieri di qualcun altro dal mercato ...

 
Alexey Viktorov #:

Per te stesso, nessun problema. Non è possibile utilizzare l'artigianato di qualcun altro dal marketplace o da CodeBase...

Per te stesso. Non so come fare. Non riesco a trovare il codice nell'open source. O come inserire nel mio codice la posizione delle linee.

 

Ciao, @Rad89

Sono necessarie le funzioni iCustom() e CopyBuffer().

Ecco un esempio di aggiunta di un indicatore scaricato dal mercato a un Expert Advisor

// Глобальная переменная для хендла индикатора
int tlHandle;

int OnInit() {
   // Создаем хендл индикатора
   tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
   
   // Можем добавить индикатор на график, если хотим. 
   // Для использования в расчетах это необязательно
   ChartIndicatorAdd(ChartID(), 0, tlHandle);

   // Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилось
   OnTick(); 
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

void OnTick() {
   // Объявляем массивы для буферов индикатора
   double tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...
   
   int res;
   
   // Копируем нужное количество значений из индикаторных буферов в массивы
   res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
   res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
   
   // У разных индикаторов различное количество индикаторных буферов, 
   // числа из которых используются для построения линий, значков, цветовых меток на графике
   // Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно
   
   // res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);
   
   // Пользуемся полученными значениями
   ArrayPrint(tlBuffer0);
   ArrayPrint(tlBuffer1);
}
Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
iCustom - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Salve. Esiste un Enum.
enum ENUM_NAME
  {
   ENUM_1,
   ENUM_jsdf
   ....
   ENUM_FEF;   
  };
Come allocare la memoria per l'array E_NAME[] in modo che ci sia abbastanza memoria per tutti i possibili valori di ENUM_NAME (senza ripetizioni)?
ENUM_NAME     E_NAME[];

E inizializzare E_NAME[] con tutti i valori possibili?

 

Ciao, @pivomoe

Se non hai intenzione di forzare l'assegnazione di valori numerici agli elementi dell'enumerazione (a giudicare dall'esempio, non lo farai), puoi farlo in questo modo:

// Объявляем перечисление
enum ENUM_NAME {
   ENAME_1,
   ENAME_JSDF,
   ENAME_ERT,
   ENAME_QWERTY,
   ENAME_FEF
};

// Обявляем константу, хранящую количество элементов перечисления
#define  ENUM_NAME_SIZE 5

// Массив для хранения элементов перечисления
ENUM_NAME     E_NAME[ENUM_NAME_SIZE];

int OnInit() {
   // Заполняем массив значениями, преобразуя к типу ENUM_NAME
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      E_NAME[i] = (ENUM_NAME) i;
   }

   // Пользуемся массивом
   ArrayPrint(E_NAME);
   
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      Print(EnumToString(E_NAME[i]));
   }
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

In questo caso, sarà necessario modificare anche la costante che memorizza il numero di elementi quando si aggiungono elementi all'enumerazione.

Inoltre, è meglio usare il prefisso ENUM_ solo per il nome dell'enumerazione stessa e usare un altro prefisso per i suoi elementi. Questa convenzione è utilizzata in tutte le enumerazioni standard di MQL.

 
Yuriy Bykov #:

Ciao, @pivomoe

Se non vuoi forzare l'assegnazione di valori numerici agli elementi dell'enumerazione (a giudicare dall'esempio - non lo farai), puoi farlo in questo modo:

In questo caso, dovrai modificare la costante che memorizza il numero di elementi quando aggiungi elementi all'enumerazione.

Inoltre, è meglio usare il prefisso ENUM_ solo per il nome dell'enumerazione stessa e usare un altro prefisso per i suoi elementi. Questa convenzione è utilizzata in tutte le enumerazioni standard di MQL.

Grazie per il vostro aiuto. Uso ENUM da così tanti anni che non mi è venuto in mente di leggere la guida.