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

 
ToLik_SRGV:

C'est vrai, je pense que Rustam a fait une allusion à ça.

Oui, je l'ai lu après l'avoir posté :)
 
Merci à tous, je vais me remettre au travail :)
 

JE NE COMPRENDS PAS POURQUOI IL Y A DES VARIABLES GLOBALES

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool
b,s, 
bs,
ss,
bt,
st;
double 
bl,sl;  
//+------------------------------------------------------------------+

ILS SONT UTILISÉS POUR OUVRIR DES ORDRES

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(bs==1&&bl==1)
{
    NewOrder1(OP_BUYLIMIT,Lot);

Today=TimeDay(TimeCurrent())
;}

return(0);}

//+------------------------------------------------------------------+
int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;
        }
int tic=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
if(tic<0) {Print(GetLastError());
        }else
        {
b=0;s=0;  
bs=0;
ss=0;
bt=0;
st=0;    
bl=0;sl=0; }
return(tic);}

SI UN ORDRE A UN TICKET SUPÉRIEUR À 0, CETTE FONCTION DEVRAIT FONCTIONNER

else
        {
b=0;s=0; 
bs=0;
ss=0;
bt=0;
st=0;   
bl=0;sl=0; }

CE QUI DEVRAIT CHANGER TOUTES LES VALEURS DES VARIABLES GLOBALES À 0 ET NE PLUS OUVRIR UNE NOUVELLE COMMANDE,

MAIS IL REVIENT EN QUELQUE SORTE À L'OUVERTURE DE L'ORDRE ET OUVRE DE NOUVEAUX ORDRES À CHAQUE NOUVEAU TICK.

QUELLE EST LA RAISON DE CET ÉTRANGE PHÉNOMÈNE ?

LES VARIABLES GLOBALES SONT DÉFINIES À PARTIR D'ICI LORS DE LA FERMETURE D'UN ORDRE AU MARCHÉ.

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
       
         }
      }

VOICI ÉGALEMENT LE CONSEILLER EXPERT COMPLET

Dossiers :
test8_2.mq4  7 kb
 
FoxUA:

LES GENS, AIDEZ-MOI, JE NE COMPRENDS PAS...


Où se trouve le bloc qui remplit ces variables avec des valeurs ?
Je voudrais voir le code exact de votre Expert Advisor en un seul morceau, sous la forme dans laquelle il est compilé et testé.
Non pas en morceaux, car cette question se pose depuis longtemps et a déjà reçu plusieurs réponses, mais en raison de ces morceaux, personne ne peut comprendre pleinement l'ensemble du problème.

Veuillez donc montrer l'ensemble du tableau afin qu'il n'y ait pas de confusion.

 
ToLik_SRGV:

Où se trouve le bloc qui remplit ces variables avec des valeurs ?
J'aimerais voir le code exact de votre EA en un seul morceau, sous la forme dans laquelle il est compilé et testé.
Pas en morceaux, car cette question traîne depuis longtemps et a reçu de nombreuses réponses, mais personne ne peut comprendre complètement l'ensemble du problème à cause de ces morceaux.

Veuillez donc montrer l'ensemble du tableau afin qu'il n'y ait pas de confusion.

VOICI L'ENSEMBLE DE L'EA

Dossiers :
test8_1.mq4  7 kb
 

demander dans le fil "Je vais écrire une EA gratuitement" n'obtient pas toujours une réponse ?

 
diaspar:

demander dans le fil "Je vais écrire une EA gratuitement" n'obtient pas toujours une réponse ?

Laissez-moi vous demander : combien de fois allez-vous travailler gratuitement ?
C'est à peu près la fréquence à laquelle ils répondent.
 
diaspar:

demander dans le fil "Je vais écrire une EA gratuitement" n'obtient pas toujours une réponse ?

Le sujet a été lancé par le démarreur du sujet. Cependant, il a reçu beaucoup plus de demandes qu'il ne peut en digérer. La logique veut qu'il réponde - c'est lui qui exige. A quoi vous attendiez-vous ?
 
FoxUA:

JE NE SAIS PAS CE QUI NE VA PAS AVEC MON EA, J'AI TOUT ESSAYÉ ET LE SEUL RÉSULTAT EST 1 POUR CHAQUE TICK + 1 ORDRE EN ATTENTE LA SEULE CHOSE EST QUE LORSQUE JE FERME UN AUTRE MARCHÉ UN CHANGE LA VARIABLE EN OUVRE UN AUTRE ET EN OUVRE UN NOUVEAU À CHAQUE TICK

En cours...

Très probablement, le bug se trouve dans le bloc qui remplit ces variables avec des valeurs (dans la boucle for), j'ai déjà trouvé une erreur (dans OrderSelect()) à cet endroit, mais le résultat n'a pas encore changé. Il semble qu'il s'agisse d'un bug dans la logique du bloc.

P.S.
S'il vous plaît, changez la casse en symbole normal.

 
FoxUA:

Le bug est évident, bien sûr, il ouvre des positions à chaque tick, puisque l'ordre perdant dans l'historique ne va nulle part, donc il le trouve à chaque tick et remplit les valeurs des variables de contrôle avec les mêmes valeurs, et ensuite le bloc d'ouverture des transactions se déclenche.

Raison: