[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 64

 
HoBu4ek >> :
Pouvez-vous m'indiquer comment faire pour qu'un EA ouvre un ordre pour plusieurs symboles à la fois ? >> Merci d'avance !

Ce n'est pas possible parce que l'EA ne peut ouvrir un ordre que pour un seul symbole, et qu'il faut ensuite attendre la transaction (qui n'est pas toujours réussie et pas toujours rapide) pour libérer le flux commercial pour d'autres ordres.

 
Drugoy писал(а) >>

Messieurs, veuillez conseiller un nouveau venu ! J'ai téléchargé le tutoriel MQl4BookRussian.chm (auteur Sergey Kovalev), le problème est que l'impression à partir de ce format est très désordonnée. Probyby a copié ce texte au format doc, les images disparaissent. Savez-vous si le manuel est disponible dans un format adapté à l'impression (pour la lecture sur un écran, les yeux se fatiguent) ?

Essayez la version en ligne du manuel directement sur le site web - https://book.mql4.com/ru/. Et vous pouvez le transférer sur un document sans aucun problème.

 
Reshetov >> :

Ce n'est pas possible parce qu'un EA ne peut ouvrir un ordre que sur un seul symbole, après quoi vous devez attendre que l'opération de transaction soit réalisée (et elle n'est pas toujours réussie et pas toujours rapide) et que le flux de transactions devienne libre pour d'autres ordres.

Avec le trade flow je comprends tout, mais comment faire successivement sur 3 instruments avec un intervalle minimal des opérations d'ouverture (selon l'algorithme du conseiller l'ouverture doit commencer dans une certaine seconde sur trois devises à la fois) ? Si cela ne vous dérange pas, pourriez-vous poster un extrait de code à titre d'exemple ? Je vous en serais très reconnaissant !

 
Dimoncheg >> :

int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}


Personne ne sait pourquoi aucune commande n'est ouverte ici ? Qu'est-ce que je fais de mal ?

Si c'est le code entier, il ne compile même pas. Si vous mettez un nombre à la place de Lot, l'EA fonctionne bien.


 
HoBu4ek >> :

Je comprends tout avec le flux de transactions, mais comment faire pour que les transactions s'ouvrent consécutivement sur 3 symboles avec des intervalles minimaux (selon l'algorithme de l'EA, l'ouverture doit commencer dans une certaine seconde sur trois devises à la fois) ? Si cela ne vous dérange pas, pourriez-vous poster un extrait de code à titre d'exemple ? Je vous en serai très reconnaissant !

Je suppose que vous avez juste besoin de 3 ordres à ouvrir pour des instruments différents ? Pourquoi ne pas faire une variable drapeau par exemple

Créer dans les variables globales

int flag=0;
string Symb;

///////////////

plus loin

int start()
{
if (условие открытия)
{flag=1;}

if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}

if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}

if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}


Il serait également intéressant d'ajouter un contrôle ouvert et de ne déplacer le drapeau qu'une fois le contrôle réussi.

 
Inzer >> :

Si c'est le code entier, il ne compile même pas. Si vous mettez un nombre à la place de Lot, l'EA fonctionne bien.


Vérifiez le type de données du Lot. Il devrait être double.

 
TheXpert >> :

Donc, d'un seul coup d'œil. Je n'ai pas compris les termes, mais il n'y a pas de croisement dans la deuxième variante.

Une dernière chose : la fonction OrderSend renvoie un ticket int, il est donc correct de vérifier le succès comme ceci :

Dans votre cas, vous devez vérifier l'inexactitude :

______

Oui, je ne sais pas comment font les autres, mais pour moi le mot "experts" sonne comme une moquerie. C'est peut-être pour ça que tu n'as pas eu de nouvelles depuis si longtemps. ;)

Bonjour !!!!!!!!!!!!!!

Oui, quoi que tu dises........ ne l'appelle pas ainsi ne l'appelle pas..... Bien qu'experts soit l'abréviation de spécialistes (personnes ayant des connaissances, enseignants, pour ainsi dire).

Je ne m'en soucie pas...... je voulais dire seulement positif et gentil ........

Mais peu importe : ........

Au tout début de ce fil, j'ai posé une question sur le MA. Les réponses étaient très intelligentes. Maintenant, je m'y remets.

Une idée a surgi.....

int start()
  {
//----
    double MA_0=iMA(NULL, 0, pMA, pSh, mode, price,0);
    double MA_1=iMA(NULL, 0, pMA, pSh, mode, price,1);
        
    if( MA_1< Open[1] && MA_0>Open[0])
     if( CheckOrders(OP_SELL))//продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if( MA_1>Open[1] && MA_0<Open[0])
     if( CheckOrders(OP_BUY))//покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }

J'ai décidé de modifier un peu les conditions d'échange. Mais cela n'a pas fonctionné(((((((( je voulais mettre open_1 et open_0 (prix d'ouverture sur la première barre et

Prix ouvert sur une barre de zéro) Lorsque j'ai vérifié, cela a donné des erreurs, j'ai dû revenir à la version originale (que j'ai donnée ci-dessus).

Comme on me l'a expliqué open[1] est un appel de la cellule du tableau avec le nom open et l'index [1]. Tout ceci est bon...... mais il suffit d'avoir un prix ouvert sur 1(2,0) barre.

Conseils pour le mannequin.....)))))))).....

 
Comment puis-je savoir si un ordre en attente a été déclenché (par exemple, un ordre d'achat) ? est-il préférable de le rechercher par son identifiant dans l'historique ou existe-t-il une option plus courte ?
 
fima_ >> :
Comment savoir si l'ordre en attente a été déclenché (par exemple, à l'achat) ? est-il préférable de le rechercher par son identifiant dans l'historique ou existe-t-il une option plus courte ?

Vous pouvez essayer ceci

OrderSelect(1, SELECT_BY_POS)

if(OrderOpenTime()!=0)

{

///необходимая операция

}

Mais ceci n'est une option que si vous n'avez qu'une seule commande !

 
Quelle fonction est utilisée pour déterminer la valeur pip d'un instrument financier ? Par exemple, pour la paire EURUSD, la valeur de 0,0001 est de 10 $ (pour un lot).
Raison: