Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1120

 

Ho un EA, voglio che sia in grado di scegliere in quali giorni fare trading e in quali no.

Lun - falso

Mar - vero

Cp- ...

Si prega di consigliare come implementarlo?

 
RichLux:

Ho un EA, voglio che sia in grado di scegliere in quali giorni fare trading e in quali no.

Lun - falso

Mar - vero

Cp- ...

Si prega di consigliare come implementarlo?

DayOfWeek

Restituisce il numero sequenziale del giorno della settimana dell'ultima ora conosciuta del server.

intDayOfWeek();

Valore restituito

Numero sequenziale del giorno della settimana (domenica-0,1,2,3,4,5,6).

Nota

Durante i test, viene simulato l'ultimo orario noto del server.

Esempio:

// non lavora nei fine settimana.
if(DayOfWeek()==0 ||DayOfWeek()==6)return(0);

 

DayOfWeek

Restituisce il numero di sequenzadel giorno della settimana dell'ultima ora conosciuta del server.

Grazie, questo ha più senso.

Ora non riesco a capire come implementare la selezione dei giorni di trading nei parametri esterni. In dettaglio, voglio che uno stesso Expert Advisor operi su una coppia di scambi il lunedì e non su un'altra.

Come scriverlo in "extern" e poi implementarlo in condizione (if...else)?

 
RichLux:

DayOfWeek

Restituisce il numero di sequenzadel giorno della settimana dell'ultima ora conosciuta del server.

Grazie, questo ha più senso.

Ora non riesco a capire come implementare la selezione dei giorni di trading nei parametri esterni. In dettaglio, voglio che uno stesso Expert Advisor operi su una coppia di scambi il lunedì e non su un'altra.

Come scriverlo in "extern" e poi implementarlo in condizione (if...else)?

Ecco un semplice esempio che permette di fare trading solo il lunedì. Questo codice funziona in MT4 e MT5

//+------------------------------------------------------------------+
//|                                                       test08.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict

input ENUM_DAY_OF_WEEK dayofweek=MONDAY;

MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),time);
   if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
  
   // тут остальной код советника.
  }
//+------------------------------------------------------------------+


...

 
RichLux:

DayOfWeek

Restituisce il numero di sequenzadel giorno della settimana dell'ultima ora conosciuta del server.

Grazie, questo ha più senso.

Ora non riesco a capire come implementare la selezione dei giorni di trading nei parametri esterni. In dettaglio, voglio che uno stesso Expert Advisor faccia trading su una coppia di trade il lunedì, e non su un'altra.

Come scriverlo in "extern" e poi implementarlo in condizione (if...else)?

Utilizzare l'enumerazione ENUM_DAY_OF_WEEK

Alla fine della pagina.

Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
 

void OnTick()
{
//---
TimeToStruct(TimeCurrent(),time);
if(time.day_of_week!=dayofweek)return; // esce da OnTick() se il giorno corrente non è uguale al giorno impostato

// qui il resto del codice EA
}
//+------------------------------------------------------------------+


...

Grazie!

Davvero, ora dobbiamo affrontare il punto, che ogni coppia ha un numero diverso di giorni "lavorativi".

Probabilmente è necessario inserire 5 variabili:giorno della settimana1,giorno della settimana2,...?

Ma di nuovo, cosa dovrei inserire nelle restanti 2 variabili se ci sono 3 giorni di trading?

 
Buon pomeriggio, potreste dirmi come risolvere questo problema? C'è un codice con entrata su M15, ma il segnale da H1 è preso in considerazione. Mentre c'è un segnale su H1, su M15 l'indicatore dà diversi segnali. La questione è di limitarlo a uno (cioè il primo segnale).
File:
nsm.txt  1 kb
 
RichLux:


...

Grazie!

Ora, però, dobbiamo affrontare il fatto che ogni coppia ha un numero diverso di giorni "lavorativi".

Probabilmente è necessario inserire 5 variabili:giorno della settimana1,giorno della settimana2,...?

Ma di nuovo, cosa dovrei inserire nelle restanti 2 variabili se ci sono 3 giorni di trading!

Possiamo provare a farlo in questo modo:

#property strict

//-
enum YesNo {
_no       = 0, // NoTrade
_yes      = 1  // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no;  // Чт
sinput YesNo day5 = _yes; // Пт


MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//--

 // здесь какой-то код, например закрытие

  ... 

 // проверка запрета на торговлю
  if(TradeAllow()) return;
   // далее код
  
}

//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням                                   |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
  switch(time.day_of_week) {
   case 1 : return(!day1);
   case 2 : return(!day2);
   case 3 : return(!day3);
   case 4 : return(!day4);
   case 5 : return(!day5);
   defaultreturntrue);
  }
}

C'è un divieto di trading il giovedì

Si può fare un po' più bello, tutto dipende dal compito:

#property version   "1.00"
#property strict

//-
enum YesNo {
_no       = 0, // No trade
_yes      = 1  // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no;  // Чт
sinput YesNo day5 = _yes; // Пт


MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//--
  if(TradeAllow()) {
    ClosePos(); // Только закрытие
  } else {
    ClosePos(); // Закрытие
    OpenPos();  // Открытие
    Function()  // Ещё что-то
  }
  
//-
}
//+------------------------------------------------------------------+
//| Функция закрытия                                                 |
//+------------------------------------------------------------------+
void ClosePos()
{
  // код
}

//+------------------------------------------------------------------+
//| Функция открытия                                                 |
//+------------------------------------------------------------------+
void OpenPos()
{
  // код
}

//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням                                   |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
  switch(time.day_of_week) {
   case 1 : return(!day1);
   case 2 : return(!day2);
   case 3 : return(!day3);
   case 4 : return(!day4);
   case 5 : return(!day5);
   default: return( true);
  }
}
//+------------------------------------------------------------------+
 
Ciao a tutti! Uso l'indicatore delta di clusterdelta.com nel mio trading MT4. Ho bisogno di un freelancer che possa fare in modo che quando una certa soglia nei valori dell'indicatore viene raggiunta, venga emesso un allarme o qualche altro suono. Potete dirmi chi contattare per questo problema?
 
Lexx1:
Ciao a tutti! Uso l'indicatore delta di clusterdelta.com nel mio trading MT4. Ho bisogno di un freelancer che possa fare in modo che quando una certa soglia nei valori dell'indicatore viene raggiunta, venga emesso un allarme o qualche altro suono. Può dirmi chi contattare per questo?
C'è una barra blu in alto con molte lettere diverse. Cerca la parola "Freelance" e cliccaci sopra. Penso che tu sappia cosa fare da lì.
Motivazione: