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

 
nemo811:

Qu'est-ce que ça veut dire ?

?

J'ai essayé - ça ne marche pas.


Dérapage, après le prix d'ouverture, au moins 30 pour un 5 !
 
borilunad:

Dérapage, après le prix d'ouverture, au moins 30 pour un 5 !
Ah, je vois ce que vous voulez dire.J'ai le jeu de déviation.
 
nemo811:
C'était mon idée. Je vais l'essayer maintenant. Merci.

En outre, certains supports ne sont pas placés correctement :

    for (i=OrdersTotal()-1;i>=0;i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
        else
        {
            SMB = OrderSymbol();
            SchBuyLotsSMB = 0;
            SchSellLotsSMB = 0;
            for (ii=OrdersTotal()-1;ii>=0;ii--)
            {
                if (!OrderSelect (ii, SELECT_BY_POS, MODE_TRADES))
                {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
                else
                {
                    if (OrderSymbol() == SMB)
                    {
                        if (OrderType()==OP_BUY) {SchBuyLotsSMB +=OrderLots();}
                        if (OrderType()==OP_SELL) {SchSellLotsSMB += OrderLots();}
                    }
                }
            }
            MarketLotSMB=SchBuyLotsSMB-SchSellLotsSMB;
            if (MarketLotSMB == 0.0) continue;
            RefreshRates();
            if (MarketLotSMB<0)
            {
                MarketLotSMB = MathAbs (MarketLotSMB);
                Price = MarketInfo (SMB, MODE_ASK);
                OPENORDER ("Buy", SMB, MarketLotSMB, Price);
            }
            else if (MarketLotSMB>0)
            {
                Price = MarketInfo (SMB, MODE_BID);
                OPENORDER ("Sell", SMB, MarketLotSMB, Price);
            }            
        }
    }

et nous devons également tenir compte du fait que dans le deuxième cycle, il y a une réaffectation des ordres et qu'après la fin du deuxième cycle (s'il ne s'agit pas d'un testeur), par exemple, SMB peut être != OrderSymbol().

 
TarasBY:

En outre, certains supports ne sont pas placés correctement :

et vous devez également tenir compte du fait que dans le deuxième cycle, il y a une surallocation des ordres et qu'après la fin du deuxième cycle (si ce n'est pas un testeur), par exemple, SMB pourrait être != OrderSymbol().

Bravo ! Votre variante fonctionne.

Je vous remercie sincèrement.


borilunad- merci également.

 
TarasBY:

De plus, certaines des parenthèses sont fausses :

J'ai mis les parenthèses correctement dans ma propre version et ça a marché aussi.

Merci encore.

 

granit77

Je ne suis pas d'accord. Pas besoin d'aller au-delà de mql, pas besoin de supprimer l'EA du graphique. Il suffit de bloquer le trading de manière programmatique en le prévoyant dans le code de l'EA.

Zhunko:
Oui ! Bien ! Exception faite de la télécommande.

Merci pour les commentaires, mais je ne sais toujours pas lequel est le meilleur et j'ai choisi :

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

Maintenant, j'ai une autre question : que dois-je ajouter au code pour qu'il ne se déclenche pas immédiatement, mais après un certain nombre de déclenchements (par exemple : Kol=3) ?

#property show_inputs
#include <WinUser32.mqh>
extern int Kol=3;

int start()
{
OrderSend(Symbol(),OP_SELL,0.05,Bid,333,0,0,"Тест",0,0,CLR_NONE);
while(!IsTradeAllowed()) Sleep(1000);
PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
return(0);
}

Merci d'avance

 

Bonjour !

J'ai commencé à construire un EA pour l'indicateur Aroon. Je n'ai jamais voulu utiliser un indicateur qui n'est pas déjà inclus dans MT4. JE N'ARRIVE PAS À LE FAIRE FONCTIONNER : (((((

Je ne vais pas utiliser l'indicateur Aroon dans MT4 mais je dois l'utiliser dans Aroon.

Dossiers :
 
Sarguss:

Bonjour !

J'ai commencé à construire un EA pour l'indicateur Aroon. Je n'ai jamais voulu utiliser un indicateur qui n'est pas déjà inclus dans MT4. JE N'ARRIVE PAS À LE FAIRE FONCTIONNER : (((((

Je n'arrive pas à obtenir un indice ou à suggérer mes erreurs.

C'est un code TRÈS intéressant :

Up1 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,0);
 Up2 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,1);
      Dn1 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,0);
   Dn2 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,1);

Highest() et Lowest() sont des fonctions utilisateur ? Si non, où avez-vous trouvé une telle construction ?
Si vous voulez obtenir des valeurs de l'indicateur, vous devez utiliser la fonction iCustom().

 
TarasBY:

C'est un code TRÈS intéressant :

Les fonctions Highest() et Lowest() sont-elles des fonctions personnalisées ? Si non, où avez-vous trouvé une telle construction ?
Si vous voulez obtenir des valeurs de l'indicateur, vous devez utiliser la fonction iCustom().

J'en ai eu l'intuition grâce à l'indicateur. Cela doit être drôle :)

Est-ce le seul bug ?

Lorsque je place le conseiller expert en mode Démo, il indique "2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1 : invalid integer number as parameter 2 for iLowest function".

2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1 : invalid integer number as parameter 2 for iHighest function" Mais l'intersection Up & Down fonctionne.

 
TarasBY:

C'est un code TRÈS intéressant :

Highest() et Lowest() sont des fonctions personnalisées ? Si non, où avez-vous trouvé une telle construction ?
Si vous voulez obtenir des valeurs de l'indicateur, vous devez utiliser la fonction iCustom().

Je m'excuse pour les questions idiotes et je vous remercie.

Shas wikidid.

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1 : le nom de l'indicateur personnalisé doit être une chaîne de caractères

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1 : nombre entier invalide comme paramètre 2 pour la fonction d'appel de l'indicateur