Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 863

 

Igor Makanu: Hors sujet bien sûr. Voici une petite idée concernant votre code. Si vous utilisez un tableau, vous pouvez définir un nombre illimité d'intervalles.

CWork *Work[];

int OnInit()
  {
   if(ArrayResize(Work,3) != 3)
      ExpertRemove();
   Work[0] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[1] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[2] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i] != NULL)
         delete Work[i];
   ZeroMemory(Work);
  }

void OnTick()
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i].Disable())
        {
         Comment("Не торговое время!!!");
         return;
        }
/* work */
  }
 
Konstantin Nikitin:

Igor Makanu: Hors sujet bien sûr. Voici une petite idée concernant votre code. Si vous utilisez un tableau, vous pouvez définir un nombre illimité d'intervalles.

Pourquoi est-ce hors sujet ? - Le sujet est technique, je soutiendrai toujours toute discussion sur les questions techniques.


Bien sûr, vous pouvez utiliser un tableau de la classe ex. J'ai vérifié ma classe plusieurs fois - tout semble fonctionner correctement, vous pouvez définir un intervalle pour chaque minute et trader par n'importe quel TS ;)


L'idée de créer ce moyen d'analyser le temps de commerce à moi plus comme la chaîne de temps à la date, et la signification de mon code - une fois par jour pour compter le début et la fin de la transaction comme une date, jusqu'à ce qu'un nouveau jour n'a pas de sens pour recalculer ces intervalles, il est venu un nouveau jour - tout recalculer à nouveau en date, et la comparaison entre date, il doit se produire très rapidement, c'est à dire, ne sera pas charger le terminal (testeur)


Seric29:

Pourquoi ce code ne fonctionne-t-il pas ?

Peut-être qu'une classe devrait être décrite par deux points :: ? L'idée est de créer un pointeur qui pointera vers un autre pointeur.

Vous avez des erreurs de syntaxe, ça devrait ressembler à ça :

#include <Object.mqh>
class CArray : public CObject
  {
public:
   double            m_Array[100];
  };

void OnStart()
  {
   CArray *arr=new CArray;
   arr.m_Array[22]=1.23456;
  }
 
novichok2018:

Bonjour !

Merci encore àAlexey Viktorov pour le conseil sur les citations - tout fonctionne. Ce lundi, nous sommes confrontés à une situation : les Allemands ont fait du commerce, tandis que les Anglais ont un jour de congé. Il s'est avéré qu'en condition d'ouverture de la position euro, les anciennes valeurs de la livre ont été utilisées. D'où ma demande : comment vérifier dans le code que les deux symboles sont négociés ce jour-là ?

Merci.

Désolé, je suis trop paresseux pour lire la documentation aujourd'hui. Et les puces mémoire ont depuis longtemps brûlé la quasi-totalité d'entre elles, il ne reste que la sclérose et le marasme.

 
Alexey Viktorov:

Désolé, je suis trop paresseux pour lire la documentation aujourd'hui. Et les puces mémoire ont depuis longtemps brûlé presque toutes, il ne reste que la sclérose.

Eh bien, je ne suis pas encore paresseux, même si j'ai assez de mes propres idioties. Mais où lire ? Je n'ai pas pu le trouver. Mes yeux sont tout chamboulés sur l'ordinateur.

 
novichok2018:

Eh bien, je ne suis pas encore paresseux, même si j'ai assez de mes propres idioties. Mais où lire ? Je n'ai pas pu le trouver. Je me suis trompé dans les yeux sur l'ordinateur.

De la documentation

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) peut retourner false dans les cas suivants

  • aucune connexion au serveur commercial. Peut être vérifié avec TerminalInfoInteger(TERMINAL_CONNECTED)) ;
  • le compte de trading est passé en mode lecture seule (envoyé aux archives) ;
  • le trading sur le compte a été interdit du côté du serveur de trading ;
  • la connexion au compte de trading a été faite en mode investisseur.

Et si ce n'est pas exactement le cas, cherchez d'autres options.

 
Alexey Viktorov:

Dans la documentation.

Et si ce n'est pas tout à fait ça, cherchez d'autres options.

Malheureusement, ce n'est pas le cas. Le trading n'est pas interdit sur le compte - nous négocions sur les euros, mais nous ne négocions pas sur la livre. Par conséquent, nous devons vérifier les transactions sur un symbole spécifique. Peut-être que quelqu'un a rencontré quelque chose de ce genre, ou sait comment résoudre le problème. Je ne l'ai pas encore trouvé sur les forums ou sur google.

 
novichok2018:

Malheureusement, ce n'est pas le cas. Le trading n'est pas interdit sur le compte - nous négocions sur les euros, mais nous ne négocions pas sur la livre. Par conséquent, je dois vérifier les transactions sur un symbole particulier. Peut-être que quelqu'un a rencontré quelque chose de ce genre, ou sait comment résoudre le problème. Je ne l'ai pas encore trouvé sur les forums ou sur google.

Il existe d'autres fonctions dans la documentation

IsTradeAllowed(symbol,TimeCurrent()
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
 

Après-midi.

Dans MT4, le texte spécifié dans les paramètres de l'objet TrendLine dans le champ "Description" est affiché sur le côté gauche de la tendance (à l'extrémité gauche). Peut-être quelqu'un a-t-il une solution toute prête pour afficher le texte à l'extrémité droite ?

 
Taras Slobodyanik:

il existe d'autres fonctions dans la documentation

Je l'ai essayé.

bool uk = IsTradeAllowed("GPBUSD",TimeCurrent());
bool de = IsTradeAllowed("EURUSD",TimeCurrent());

      if(de && uk) Alert("uk == true");

Il a écritvrai le lundi 27 aussi, même si c'était un jour férié en Angleterre.

 
novichok2018:

Je l'ai essayé.

Il ditvrai le lundi 27, même si c'était un jour férié en Angleterre.

Faut-il donc identifier un jour férié ou une interdiction de commercer ?
Le commerce a été autorisé le 27.

Si c'est un week-end, vous avez besoin d'un analyseur syntaxique d'informations pour identifier les jours fériés et les week-ends.

Raison: