[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 543

 
Dimka-novitsek:

Rebonjour !

1. Imaginez, où a disparu le dernier expert ? Voici ce qu'il reste.

2. Est-il possible de le récupérer ?


Bonjour !

1. Vous conduisez ce genre d'argent ! Il est grand temps que vous vous procuriez une caméra autonome avec une ligne in-net ! IMHO ! (Quand on n'est pas seul devant l'ordinateur - une telle suppression n'est pas surprenante, il est fort probable que quelqu'un ait fait de la vapeur, mais peu importe - le code est démoli...) Et puis, comment se fait-il (sans trucage) que le code soit presque effacé et que l'on appuie sur le bouton "Save" (disquette en haut à gauche)? Même si quelqu'un a effacé quelque chose par précipitation, pourquoi le sauver ? Encore une fois, n'oubliez pas que lorsque vous écrivez un programme, vous devez effectuer une sauvegarde intermédiaire, et dans ce cas, continuez avec eux (en chargeant la version finale de la sauvegarde intermédiaire (finale - c'est si le programme est terminé)).

2. Tu ne peux pas.

 

Bonjour à tous !

J'ai finalisé mon premier expert. La tâche initiale consistait à concrétiser mon idée sous forme de code.

Je vous demande de jeter un coup d'œil à mon EA et de donner votre avis.

Merci beaucoup pour votre aide dans la rédaction de l'EA!

La logique du conseiller expert est la suivante :

-Le prix franchit le niveau du RSI (condition 1),

-Puis, à l'aide d'un drapeau, il remplit la deuxième condition (rupture du haut ou du bas dans n barres).

-J'ai également introduit une fonction pour éviter l'ouverture d'une deuxième commande alors que la première est ouverte.

Une fois encore, l'objectif était d'écrire correctement une EA. Veuillez me signaler mes erreurs et mes lacunes.

Je vous remercie d'avance.

Dossiers :
proboitrsi.mq4  12 kb
 
Merci !
 
Pacman:

Bonjour à tous !

J'ai finalisé mon premier expert. La tâche initiale était de concrétiser mon idée sous forme de code.

...

J'ai décidé de fouiller un peu dans votre code.

1) Ce qui manque, c'est init() et deinit(),

2) Ceci :
for(int i=1; i<=OrdersTotal(); i++)
      {
       if(OrderSelect(i-1,SELECT_BY_POS)==true)
         {
          if(OrderSymbol() == Symb)
            {
             if(OrderMagicNumber()==777)
                return;
            }    
         }   
      }

vous pouvez le faire de cette façon :

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {   if(OrderSymbol() != Symb) continue;
          if(OrderMagicNumber() != 777) continue;
          return;
      }
   }
}

3) Ceci.

Symb=  Symbol();
...
Min_Lot= MarketInfo(Symbol(),MODE_MINLOT);
...
Steep=   MarketInfo(Symbol(),MODE_LOTSTEP);

écrire dans init(), il suffit de les définir une fois à l'initialisation, pas à chaque tic, car"l'appel de fonction prend plus de temps que la référence à une variable".

4) La logique de ce message n'est pas claire pour moi.

while(true)
...

Quand est-ce que ça peut être faux ?

C'est juste un petit bout qui a directement attiré mon attention.

 
paladin80:

J'ai décidé de fouiller un peu dans votre code.


3) Ceux-ci.

mis dans init(), il suffit de les définir une fois à l'initialisation, pas à chaque tic, car "l'appel de fonction prend plus de temps que la référence à une variable".


N'oubliez pas que dans init() l'environnement du marché n'est pas toujours disponible.
 
Vinin:
N'oubliez pas que l'environnement du marché n'est pas toujours disponible dans init().
Vous savez qu'il existe toujours une solution au "s*** délicat" - la bonne valeur est obtenue par une boucle.
 
TarasBY:
Vous savez qu'il y a toujours une solution au "s*** délicat" - vous obtenez la bonne valeur par une boucle.

Il y a des contraintes de temps pour la fonction init()
 

Soirée.

L'EA surveille plusieurs paires dans plusieurs cadres. Comment le faire réagir non seulement aux ticks de la paire/fenêtre à laquelle il est attaché, mais aux ticks de toutes les paires. Merci !

int start()

{

double MA50 [4][9] ;

double OBarHigh [4][9] ;

double OBarLow [4][9] ;

for (int t=0 ; t<=3 ; t++) // délai d'attente

{

for (int p=0 ; p<=8 ; p++) // paire

{

MA50[t][p]=iMA(paire[p],tframe[t],50,0,MODE_EMA,PRICE_CLOSE,0) ;

OBarHigh [t][p]=iHigh(paire[p],tframe[t],0) ;

OBarLow [t][p]=iLow(paire[p],tframe[t],0) ;

 
imux:

Soirée.

L'EA surveille plusieurs paires dans plusieurs cadres. Comment le faire réagir non seulement aux ticks de la paire/fenêtre à laquelle il est attaché, mais aux ticks de toutes les paires. Merci !



Peut-être qu'une EA en boucle pourrait aider
 
Vinin:

Il y a des contraintes de temps pour que la fonction init() fonctionne.
Je tire au moins une douzaine de valeurs de l'environnement de marché dans mon EA dans init(). Au stade initial, il y avait parfois des problèmes - maintenant tout fonctionne. Il s'agit de mon expérience personnelle - je ne prétends pas être une règle. ;)