Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 679

 
Artyom Trishkin:

Merci.

 
Bonjour, aidez-moi à répondre à une question sur une simple boucle.
L'essence de la boucle est que la variable I est incrémentée de un.
La valeur est imprimée.
La boucle elle-même :

for (int i=0 ; i<100000;i++)
{
Print("I =",i) ;
si(i>3000)
{
Print("I =",i) ;
pause ;
}

Le problème est que si le nombre dans la condition if(i>3000) est approximativement supérieur à 100 (dans mon cas trois mille),
alors l'impression sort des valeurs différentes. Constamment.
Ce que je veux dire c'est que si la boucle ressemble à ceci
for (int i=0 ; i<100000;i++)
{
Print("I =",i) ;
si(i>100)
{
Print("I =",i) ;
pause ;
}

L'impression dans le testeur montre la valeur I = 0, puis 1, puis 2, puis 3, puis 4,... et ainsi de suite jusqu'à 100.
Mais ! si la condition est par exemple if(i>3000), l'impression montrera la valeur depuis... Je ne sais même pas comment le formuler correctement...
à partir d'un seul nombre, par exemple 2895, puis en ajoute un !

Voici un exemple de ce que cela peut donner :

si i > 100

100


si i >3000

3000



Quel est le problème ? J'ai lutté toute la journée et je n'arrive pas à le comprendre(((( S'il vous plaît AIDEZ-MOI !







 
eflaer:
Quel est le problème ? J'ai lutté toute la journée et je n'arrive pas à le comprendre(((( S'il vous plaît, aidez-moi !

ouvrez le fichier journal, il y a un rapport complet

 
Taras Slobodyanik:

ouvrez le fichier journal, il y a un rapport complet

Merci, j'ai ouvert le fichier journal, effectivement tous les comptes à rebours commencent par zéro................ pourquoi tout n'est pas écrit dans le journal ?

Comment faire pour que tout apparaisse dans le journal, j'ai besoin du timing complet, je cherche un bug dans l'algorithme.

 
Ce n'est tout simplement pas pratique d'ouvrir à chaque fois un fichier journal de 7+GB........
 
eflaer:

Merci, j'ai ouvert le fichier journal, en effet tout le compte à rebours commence avec zéro................ pourquoi tout n'est pas dans le journal ?

Comment faire pour que tout apparaisse dans le journal, j'ai besoin de la chronologie complète, je cherche un bug dans l'algorithme.

Étant donné que l'enregistrement et le travail avec des objets graphiques nécessitent beaucoup de ressources (temps), MT est optimisé pour cela et peut "avaler" une partie de l'enregistrement, tout en exécutant rapidement le corps du script lui-même.

ajoutez Sleep(120) après Print().


eflaer:
Ce n'est pas pratique d'ouvrir à chaque fois le fichier journal, txt qui pèse 7+GB........

Supprimez périodiquement le fichier journal, il est enregistré par date, si vous n'y écrivez que des expériences aujourd'hui, pourquoi avez-vous besoin d'un si gros fichier ?

 
Merci beaucoup ! Vraiment utile ! Je vais continuer à chercher l'erreur...
 
Vitali Vakulin:
Bonjour.Je voudrais faire un drawdown de 10% de sorte que si j'ai un drawdown par exemple, mon Expert Advisor n'ouvrira pas de nouveaux ordres, il rattrapera juste les ordres ouverts au TP et c'est tout, seuls les ordres de moyenne s'ouvriront. Cela m'aidera à ne pas tomber dans un gros drawdown, si mon trading est effectué sur plusieurs paires. Je comprends la fonction, j'aimerais pouvoir la mettre en œuvre.

Les gars, s'il vous plaît, aidez-nous.

 

Bonsoir.

Premières tentatives d 'écriture d'une EA. Pouvez-vous me dire pourquoi mon conseiller expert n'ouvre que l'achat ? Où se trouve l'erreur ?

extern double volume     = 0.05;   // Volume
extern int    stopLoss   = 1;      // StopLoss
extern int    takeProfit = 3;      // TakeProfit
extern int    slippage  = 10;          // Slippage
extern int    Period_bars  = 100;    // Period
extern int    magic      = 321;    // Magic
extern int    ATR_Period = 50;      // ATR Period

datetime newCandle;
double ABS_High=0;
double ABS_Low=1000000;

int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
//---
 

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {

        double TD_Close=Close[1];

        double ATR=iATR(Symbol(),Period(),ATR_Period,0);

        double bsl=NormalizeDouble(Ask-(stopLoss*ATR),_Digits);

        double btp=NormalizeDouble(Ask+(takeProfit*ATR),_Digits); 

        double ssl=NormalizeDouble(Bid+(stopLoss*ATR),_Digits);

        double stp=NormalizeDouble(Bid-(takeProfit*ATR),_Digits); 

        for (int i=2; i<=Period_bars; i++)
        {
                if (Period_bars<=Bars-1)
                {
                        if (ABS_High<High[i]) ABS_High=High[i];
                        if (ABS_Low>Low[i]) ABS_Low=Low[i];
                }

                break;
        }

        if (TD_Close>ABS_High)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,bsl,btp,"Система пробоя открыла ордер BUY ",magic,0);

                else newCandle = Time[0];
        }
        else
        if (TD_Close<ABS_Low)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,ssl,stp,"Система пробоя открыла ордер SELL ",magic,0);
                else newCandle = Time[0];
        }
}

 
Andrey.Sabitov:

Bonsoir.

Premières tentatives d 'écriture d'une EA. Pouvez-vous me dire pourquoi mon conseiller expert n'ouvre que l'achat ? Où se trouve l'erreur ?



Insérez (dans) le code plus attentivement :-)

Je ne vois pas où ABS_High est modifié, il semble être constant à 0 et la condition TD_Close>ABS_High est toujours correcte.