[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 315

 
dekker:

Les amis !

Une question globale s'est posée

Est-il possible d'obtenir le flux de ticks dans le terminal le week-end, afin de pouvoir écrire et déboguer des EAs tranquillement ?

J'ai déjà quelques astuces pour l'utiliser dans mon robot de trading.

Je ne peux pas utiliser un tick pour déclencher l'EA, j'ai besoin d'un flux de ticks dans une certaine fourchette.

existe-t-il une telle chose dans la nature ?

les serveurs mt4 qui émulent les cotations en continu les week-ends ?

Accrocher un script -
#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, string lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   bool asd;
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(5000);
      if(asd){Comment("A");asd=false;}else{Comment("V");asd=true;}
   }
   return(0);
}
émulation de tique. Je ne sais pas si c'est ce dont vous avez besoin ou non. Il existe également un timer, soit avec kernel32, soit avec user32, recherchez-le sur le forum.
 

Bonjour à tous, veuillez aider un nouveau venu.

La question est la suivante ... par exemple j'ai un indicateur et il est dessiné dans la #property indicator_separate_window, l'indicateur a deux "buffers", il en ressort deux lignes ... ma question est comment faire une flèche ou une ligne dans la fenêtre MAIN (pas la fenêtre de l'indicateur, mais la fenêtre du graphique de prix) quand les lignes se croisent ... ?

Par exemple prenez un RSI classique, comment faire un croisement de ligne avec zéro pour afficher des flèches sur le graphique des prix ...

 
clubsmi:

Bonjour à tous, veuillez aider un nouveau venu.

La question est la suivante ... par exemple j'ai un indicateur et il est dessiné dans la #property indicator_separate_window, l'indicateur a deux "buffers", il en ressort deux lignes ... ma question est comment faire une flèche ou une ligne dans la fenêtre MAIN (pas la fenêtre de l'indicateur, mais la fenêtre du graphique de prix) quand les lignes se croisent ... ?

Par exemple, prenez un RSI ordinaire, comment faire pour que le passage à zéro de la ligne affiche des flèches sur le graphique des prix ...


Autre indicateur sur#property indicator_chart_window via iCustom, et là sur DRAW_ARROW.
 

Je ne comprends pas l'expression :

if (counted_bars==0 && downloadhistory)

si nombre de barres comptées =0 etdownloadhistory ?downloadhistory est une variable logique globale initialementfausse. Quelle condition porte-t-elle ? Je comprendrais si la condition est la suivante

si (counted_bars==0 && downloadhistory == false)

Expliquez à un débutant, s'il vous plaît !

 
dekker:

Les amis !

Une question globale s'est posée

Est-il possible d'obtenir le flux de ticks dans le terminal le week-end, afin de pouvoir écrire et déboguer des EAs tranquillement ?

J'ai déjà quelques astuces pour l'utiliser dans mon robot de trading.

Je ne peux pas utiliser un tick pour déclencher l'EA, j'ai besoin d'un flux de ticks dans une certaine fourchette.

existe-t-il une telle chose dans la nature ?

un serveur mt4 qui émule un flux de cotations le week-end ?

Bibliothèque.

Section"4.7 Fonctions de mise à jour des cartes de contrôle".

 

Encore une chose :)

Il existe un ZigZag dans l'application MT4 dans les indicateurs personnalisés. Il a des paramètres :

//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

Que représentent-ils ?

 

Vadim, ça ne marche pas. Comme c'est le week-end, j'étudie la lecture-écriture toute seule. J'écris deux scripts de vérification : je place l'un d'entre eux sur une période de quelques secondes et il génère un tableau élément par élément. La seconde, je l'envoie à n'importe quelle paire et elle imprime ce tableau. Donc, les scripts :

Secondes :

#import "SharedMemoryMT4.dll"
        bool MemoryWriteInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte, int nValue);
        int MemoryCreateProjection(int nArea, string sPrefixArea, int hFileUser, int nIndex, string sName, int nSize);
        bool MemoryResize(int nArea, string sPrefixArea, int nIndex, string sName, int nSize);
#import
int Σ, Δt, j;
int start(){
   GlobalVariableSet("nAddress", MemoryCreateProjection(1, "", NULL, -1, "ind", 4));
   for(int i=1; i>Bars; i++){
      Δt=Time[i-1]-Time[i];
      Σ=Σ+Δt;
      MemoryResize(1, "", -1, "ind", 4*Σ);//=ArrayResize(ind, Σ);
      for(; j<Σ; j++) MemoryWriteInt(1, "", -1, "ind", j*4, i);
   }
   /*
   Δt[0]=1 => addr(j*4)=0*4=0, var(i)=0x0001.//out: {0x0001}
   Δt[0]=2 => addr(j*4)=0*4=0, var(i)=0x0001,
              addr(j*4)=1*4=4, var(i)=0x0001.//out: {0x0001, 0x0001}
   Δt[0]=1, Δt[1]=2 => addr(j*4)=1*4=4, var(i)=0x0002,
                       addr(j*4)=2*4=8, var(i)=0x0002.//out: {0x0001, 0x0002, 0x0002}
   Δt[0]=2, Δt[1]=2 => addr(j*4)=2*4=8, var(i)=0x0002,
                       addr(j*4)=3*4=12, var(i)=0x0002.//out: {0x0001, 0x0001, 0x0002, 0x0002}
   */
   return(0);
  }

Le second script, qui imprime le tableau, s'accroche à toute paire déjà formée :

#import "SharedMemoryMT4.dll"
        int MemoryReadInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte);
        bool MemoryUnProjection(int nArea, string sPrefixArea, int nIndex, string sName, int pcAddress);
        int MemorySize(int nArea, string sPrefixArea, int nIndex, string sName);
#import

int start(){
   for(int i=0; i<MemorySize(1, "", -1, "ind"); i=i+4) Print(MemoryReadInt(1, "", -1, "ind", 4*i));
   MemoryUnProjection(1, "", -1, "ind", GlobalVariableGet("nAddress"));
   return(0);
  }

Pour être juste, j'ai mis

{MemoryWriteInt(1, "", -1, "ind", j*4, i); Print(j, " - ", i);}

le second pour. Je regarde le journal. Au moins certaines valeurs sont écrites à des adresses, ou plutôt des décalages par rapport à nAddress : 0-3FF, 7FF-83FF, BFFF-C3FF. Pour toutes les autres plages - erreur critique dansMemoryWriteInt. Je joins le fichier historique avec les chandeliers des secondes.

Dossiers :
sec_eurusd1.zip  18 kb
 
gyfto:

Vadim, ça ne marche pas. Comme c'est le week-end, j'étudie la lecture-écriture toute seule. J'écris deux scripts de vérification : je place l'un d'entre eux sur une période de quelques secondes et il génère un tableau élément par élément. La seconde, je l'envoie à n'importe quelle paire et elle imprime ce tableau. Donc, les scripts :

Secondes :

Le second script, qui imprime le tableau, s'accroche à toute paire déjà formée :

Pour être juste, j'ai mis

le second pour. Je regarde le journal. Au moins certaines valeurs sont écrites à des adresses, ou plutôt des décalages par rapport à nAddress : 0-3FF, 7FF-83FF, BFFF-C3FF. Pour toutes les autres plages - erreur critique dansMemoryWriteInt. Je joins le fichier historique avec les chandeliers des secondes.

Le script de test du kit fonctionne-t-il ?

Il n'est pas nécessaire de modifier la taille de la mémoire allouée aussi souvent. C'est un frein. La mémoire est allouée discrètement par 4Kb. Arrondis. Il s'agit d'une fonction de cartographie.

Faites un projet de test simple afin de pouvoir le vérifier. Ce que vous publiez est impossible à vérifier. Il y a trop d'erreurs de syntaxe.

 
GaNDarM:

Je ne comprends pas l'expression :

si nombre de barres comptées =0 etdownloadhistory ?downloadhistory est une variable logique globale initialementfausse. Quelle condition porte-t-elle ? Je comprendrais si la condition est la suivante

si (counted_bars==0 && downloadhistory == false)

Veuillez expliquer à un débutant !


Laissez-moi l'essayer maintenant. Lorsque nous écrivons

bool bVar=true;
if(bVar) какие-то_действия
//------------------
bool bVar=false;
if(!bVar) какие-то_действия
//------------------
if(true) какие-то_действия

alors dans tous les cas, ces actions seront toujours effectuées, car les deux premières sont similaires à la troisième (vérifier, simplifier l'expression). C'est-à-dire que si ce sont des variables booléennes, nous n'avons pas besoin de mettre ==vrai, ==faux, car elles sont déjà vraies ou fausses par elles-mêmes.

 
gyfto:

Un autre indicateur sur #property indicator_chart_window via iCustom, et là sur DRAW_ARROW.

y a-t-il un autre moyen ? ou pouvez-vous me donner un lien où un tel cas est implémenté, peut-être l'avez-vous vu...

Raison: