[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 933

 
Dimka-novitsek:

C'est ici


Le conseiller travaille. Il ouvre les marchés
 
gheka:

Je ne comprends pas d'où vient le numéro de séquence unique, tout est différent dans les exemples,

si je ne me trompe pas, je ne suis pas celui qui le crée, par exemple

Puisque vous avez supprimé la question du MP, sans attendre de réponse, je la pose ici :

Disons que c'est comme ça :

indice -

Position de l'ordre ou numéro d'ordre en fonction du deuxième paramètre.
(Position ou numéro d'ordre, d'où vient-il ? ? ???)

"Selon le deuxième paramètre" - cela signifie-t-il que cela dépend de "select" ?

La position de l'ordre est son emplacement dans le tableau des ordres de votre terminal. C'est exactement le poste que nous recherchons dans la boucle :

Recherche de commande :

for (int index=0; index<OrdersTotal(); index++) // Цикл по терминалу. В кач-ве переменной цикла будет index для наглядности
    {
       if (OrderSelect(index, SELECT_BY_POS) && OrderMagicNumber()==Magic) // Если выбран ордер и магик равен магику советника
           {
                if (OrderTipe()==OP_BUY)                                   // Если нам нужен ордер Бай
                   {
                       //............... Тут код обработки выбранного орд
                   }
           }
    }

Si nous recherchons SELECT_BY_POS, le paramètre suivant est par défaut MODE_TRADES et vous pouvez l'omettre. Le conseiller expert recherche les positions qui ne sont pas encore fermées, c'est-à-dire sur le marché.

Si nous devons rechercher les commandes qui ont déjà été clôturées, nous devons ajouter le paramètre suivant après le SELECT_BY_POS : MODE_HISTORY. Ensuite, le conseiller expert ne cherchera que dans la liste des positions fermées et des ordres supprimés ou déclenchés.

(Si je ne me trompe pas, ce sont les ordres qui ont déjà été définis, n'est-ce pas ? "0" est le premier en haut,
"1" est le deuxième dans la liste, et ainsi de suite).

C'est exactement la position, la position de l'ordre dans le tableau des ordres du terminal, pour ainsi dire - son indice - l'indice même
... Et ils sont situés dans le tableau à partir des cellules zéro du tableau, bien que le numéro d'ordre commence par 1. C'est-à-dire que le premier ordre est situé dans la cellule zéro du tableau, le second dans la première, le troisième dans la seconde, etc...

Maintenant, le billet. Le ticket, numéro unique d'un ordre, est attribué par votre société de courtage. En fonction de ce nombre, nous pouvons clairement identifier cet ordre ou cette position. Cependant, nous avons quelques réserves. Le ticket doit être enregistré quelque part dans l'EA (une variable ou un tableau) afin que vous sachiez exactement de quelle commande vous avez besoin pour avoir ce ticket. À cette fin, j'utilise la fonction de carnet d'ordres de mon propre EA où je stocke non seulement les données des ordres qui peuvent être obtenues à l'aide des fonctions standard, mais j'y stocke également, par exemple, les niveaux Fibo, que je calcule juste après avoir ouvert une position et que je saisis ensuite dans mon carnet d'ordres. Ensuite, je choisis facilement une position en fonction de son heure d'ouverture et de sa prise et je déplace le niveau de stop en fonction des niveaux de Fibo que j'ai sauvegardés pour cette position dans mon tableau d'ordres .... De là, je peux également obtenir le ticket de l'ordre dont j'ai besoin et l'utiliser ultérieurement avec les fonctions standard :

   if (OrderSelect(Ticket, SELECT_BY_TICKET) && OrderCloseTime()==0) // Если выбран ордер по тикету и время его закрытия равно нулю
      {
         if (OrderTipe()==OP_BUY)                                   // Если нам нужен ордер Бай
            {
               //............... Тут код обработки выбранного ордера
            }
      }

Ici, il est nécessaire de comparer le temps de clôture de l'ordre avec zéro. Parce que pendant la sélection par rapport au ticket, MODE_TRADES et MODE_HISTORY sont ignorés et ne sont pas utilisés et nous devons voir le moment de la fermeture de l'ordre pour déterminer s'il est fermé et est sélectionné dans la liste des positions ouvertes. S'il est encore sur le marché, son heure de clôture sera également nulle.
Si vous voulez voir les données d'un ordre clôturé et que vous devez le choisir par ticket, l'heure de clôture doit être comparée à zéro, et si c'est le cas, l'ordre a déjà été clôturé.

piscine -

Source des données pour la sélection. Il est utilisé lorsque le paramètre de sélection est égal à SELECT_BY_POS. Il peut s'agir de l'une des valeurs suivantes :
MODE_TRADES (par défaut) - l'ordre est sélectionné parmi les ordres ouverts et en attente,
il s'agit d'ordres courants


MODE_HISTORY - l'ordre est sélectionné parmi les ordres fermés et supprimés.

et il s'agit de la liste des ordres terminés, comme dans la liste du journal, n'est-ce pas ?

C'est exact.

double OrderProfit( )
il renvoie un bénéfice net, mais lequel ? la dernière commande ou toutes les commandes ?

Elle renvoie le bénéfice actuel pour l'ordre qui n'a pas encore été clôturé.

Si l'ordre a déjà été clôturé, il retournera le profit ou la perte de cet ordre. Un, sélectionné.

Sans tenir compte des swaps, des commissions, etc... Pour les prendre en compte, nous devons créer notre propre fonction.

=============================================================================

J'espère que vous trouverez la solution... :)
 

Le conseiller travaille. C'est l'ouverture des marchés.

Merci !!!! sachant que la plateforme de trading est malade, apparemment.

 
Renown:
Il est nécessaire qu'un EA lisse la volatilité (voici la valeur : High[iHighest(NULL, 0, MODE_HIGH, 30, 1)] - Low[iLowest(NULL, 0, MODE_LOW, 30, 1)] ) de la moyenne mobile exponentielle. D'après ce que j'ai compris, cela ne peut pas être fait par l'iMA standard et je dois écrire une fonction pour cela ? Quelqu'un peut-il m'aider avec le code ?


iMAOnArray

 

bonne journée à tous.... il y a un problème...quelqu'un peut-il aider... ?

Je trade un EA basé sur le principe de la martingale... j'ai décidé d'y inclure également un stop loss... pour calculer une perte, j'ai utilisé la formule suivante...

Stopper = AveragePrice - Stoploss * Point; cela ne me convient pas, car le stopper dans ce cas change pour les prochains bends... et je voudrais qu'il soit fixe pour tous les bends, par exemple 100 pips .... c'est-à-dire qu'après l'ouverture d'un ordre le stop est fixé à 100 pips...Disons que le deuxième genou s'ouvre après 30 pips, le stop doit donc être de 70 pips pour arriver au même endroit que le premier ... en bref, j'ai besoin d'un stop loss fixe et immuable pour toute la série ... si vous voulez bien l'expliquer)))) ou m'envoyer la fonction)))) je vous en serais reconnaissant.
 

Une question a été soulevée concernant la détection d'une touche enfoncée. Il est nécessaire de suivre le fait d'appuyer et si, par exemple, K est appuyé, alors nous effectuons certaines actions. Ici ( _http://msdn.microsoft.com/en-us/library/ms646293%28v=VS.85%29.aspx ) j'ai trouvé la fonction int GetAsyncKeyState(int vKey) qui est en principe ce dont j'ai besoin... Mais il y a un hic : le fait d'appuyer ne doit être défini que si une fenêtre MetaTrader est active. J'utilise le code simple suivant dans mon conseiller expert pour vérifier :

#define VK_K                            0x4B    // K key 
#import         "user32.dll"
   int GetAsyncKeyState(int vKey);

//-----------------------------------------------------------------------------------------------//
int init()  {

 return(0);
}
//-----------------------------------------------------------------------------------------------//
int deinit()   {

 return(0);
}
int start() {
   if(GetAsyncKeyState(VK_K)==0) Print("K не нажата...");
   else {Alert("НАЖАТА K");}
 return(0);
}
J'écoutais des alertes en écrivant ce billet :). Veuillez m'aider à surmonter ce problème =)
 

L'horreur ! !! Mes amis, je suis perdu... :)

Il y a deux boucles imbriquées. Lorsque je sors de la boucle intérieure par rupture, où dois-je sortir - au début ou à la fin de la boucle extérieure ?

Sur le support de fermeture du support extérieur ou sur le support d'ouverture ?

 
artmedia70:

L'horreur ! !! Mes amis, je suis perdu... :)

Il y a deux boucles imbriquées. Lorsque je sors de la boucle interne par une rupture, où dois-je sortir - au début ou à la fin de la boucle externe ?

Sur le support de fermeture de l'extérieur ou sur le support d'ouverture ?

code dans le studio.

En fait, juste derrière la parenthèse fermante de la boucle interne

 
Necron:

code s'il vous plaît.

En fait, juste derrière la parenthèse fermante de la boucle interne

Merci. C'est exactement ce que j'ai fait, mais j'ai eu quelques doutes quant à savoir si je devais vérifier le drapeau dans la boucle externe avant la parenthèse fermante ou au début après la parenthèse ouvrante...
 

Personne ne sait comment faire un arrêt fixe pour la série((((.

Il y a beaucoup de pros ici, le travail n'est probablement pas si difficile.

Raison: