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

 
danya-asg:

J'ai compris mon erreur, mais je n'ai pas compris comment la résoudre. La tâche est normalement lancée toutes les secondes, mais le temps depuis le début de la bougie actuelle n'est pas compté correctement.

La fonction Seconds() produit des secondes à partir des données du dernier tick connu, mais j'ai besoin de compter le nombre réel de secondes depuis l'ouverture de la bougie minute au moment où la fonction est appelée, même s'il n'y a pas eu de ticks au cours des dernières secondes.

TimeSeconds (TimeLocal()) ou ( TimeLocal() - Time[0]) ne fonctionnera pas non plus, car l'heure locale peut différer du serveur de plusieurs secondes. Comment résoudre le problème ?


Vous avezOnTimer() qui s'exécute toutes les secondes,

void OnTimer()
{
OnTick(); //-- старт каждую секунду
}
 
Alekseu Fedotov:


Vous avezOnTimer() qui s'exécute toutes les secondes,


Mais pour que le programme fonctionne correctement, j'ai besoin qu'il affiche l'heure du serveur toutes les secondes, et ici cela dépend si le prochain tick est arrivé ou pas. Si ce n'est pas le cas, alors ontimer est lancé mais affiche un temps de retard, c'est le problème.
 

C'est la seule chose que j'ai trouvée pour l'instant, mais elle est un peu tordue :

int sek
void OnTick()
{
if(Seconds() > sek)
sek = Seconds ();
Clicker (); //-- старт каждый тик
}
void OnTimer()
{
sek = TimeSeconds(TimeLocal());
Clicker (); //-- старт каждую секунду
}

Et pour ce faire, j'ai dû paramétrer l'ordinateur pour qu'il synchronise l'heure toutes les 10 minutes.

 
danya-asg:

C'est la seule chose que j'ai trouvée pour l'instant, mais elle est un peu tordue :

Et pour ce faire, j'ai dû paramétrer l'ordinateur pour qu'il synchronise l'heure toutes les 10 minutes.


Vous devez créer une minuterie de 100 à 200 ms et travailler entièrement à l'intérieur de celle-ci.
Les secondes sont trop longues, et elles glissent fréquemment.

EventSetMillisecondTimer(200);
GetTickCount();
 

Je n'ai aucune idée de ce qu'il faut faire au début, au milieu et à la fin. Le problème est de faire une chouette sur un indicateur, et le stop de glisser 2 bougies après l'entrée, si l'affaire va à l'encontre de la tendance actuelle, alors fermer l'affaire et ouvrir un reversal, en inversant le stop de la même manière. Je n'ai aucune idée de la façon de faire une constante 20 et 80 comme point d'entrée et de sortie.

Dossiers :
f9h46khtl1.png  29 kb
 
novikov433:

Je n'ai aucune idée de ce qu'il faut faire au début, au milieu et à la fin. Le problème est de faire une chouette sur un indicateur, et le stop de glisser 2 bougies après l'entrée, si l'affaire va à l'encontre de la tendance actuelle, alors fermer l'affaire et ouvrir un reversal, en inversant le stop de la même manière. Je n'ai aucune idée de la façon de faire une constante 20 et 80 comme point d'entrée et de sortie.

Pardonne-moi, idiot ivre... Mais je vais vous dire ceci : si vous êtes si sûr que " cette EA ne peut pas échouer ", qu'est-ce qui vous empêche de gagner 20 $ manuellement et de commander cette EA à des freelances ? Je vous assure, la plupart des gens décents là et ne distribueront pas ce TS, encore moins conseiller n'importe où ...
 
Alexey Viktorov:
Pardonne-moi, ivrogne idiot... Mais je vais vous dire ceci : si vous êtes si sûr que " cette EA ne faillira pas ", qu'est-ce qui vous empêche de gagner 20 $ manuellement et de commander cette EA sur freelancer ? Je peux vous assurer que la plupart des gens décents ne distribueront pas ce TS, et encore moins le conseiller...

Je veux apprendre à faire un EA. Peut-être que le marché va changer et que je devrai payer plus cher, par exemple pour modifier un peu l'algorithme ?

Je ne sais pas si je peux vraiment le faire avec un constructeur de hiboux, mais je préférerais comprendre les fonctions de base comme faire un stop à un certain endroit ou ordonner des transactions à certains jours.

Je ne sais pas pourquoi je dois faire 1,2,3 etc. même dans le constructeur et pourquoi je dois tout relier par des flèches dans un tel ordre. Qui en général étudie le mql 4 et ne crée pas de cours comme les guerriers de l'internet qui n'ont rien pour expliquer pourquoi ça se passe comme ça, en d'autres termes, vous ne ferez rien de nouveau par vous-même et devrez copier leur code ..... Je veux dire, ils savent quel ordre est responsable de quoi, et ils ne se sont pas contentés de pointer au hasard ...... Laissez les professionnels faire du pyramidage, du lot dynamique, du smart stop ; ma tâche est différente - télécharger les filtres nécessaires et comprendre l'essence de la formation des tendances. Merci pour votre aide !

 
novikov433:

Je veux apprendre à faire un EA. Peut-être que le marché va changer et que je devrai payer plus cher, par exemple pour modifier un peu l'algorithme ?

Quant à la possibilité de faire un TS avec un constructeur de hiboux, elle devrait être réaliste pour comprendre les fonctions de base comme faire un stop à un certain endroit ou ordonner des transactions à certains jours.

Il est réaliste d'écrire des TOR pour l'ATC, et de préciser dans les TOR que toutes les lignes seraient commentées - vous paierez un peu plus, mais vous verrez comment et ce qui fonctionne, et ensuite, progressivement, vous ferez des changements dans le code de travail et observerez les changements - et ainsi vous commencerez à vous auto-former.
 
novikov433: ... veulent ... comprendre comment faire un EA ... je veux comprendre comment faire un EA ... je veux comprendre comment faire un EA ... mais cet EA ne doit pas être vraiment perdant car les ordres déficitaires sont déplacés vers le Breakeven et je dois juste attendre que la tendance évolue ... donc je travaille déjà dessus ...
Cher novikov433! Comme vous connaissez les caractéristiques symboliques du robot de trading, vous devez être prudent lorsque vous rédigez votre robot de trading, et vous devez être prudent lorsque vous rédigez votre robot de trading ! Vous pouvez utiliser un exemple simple. Je donne un ordre à ma femme (ordre) : acheter un seau de pommes de terre tôt le matin au marché, et à 10 heures (analyse fondamentale) le prix augmente - vendre. Mais parfois un camion de pommes de terre arrive à 10h30 (nouvelles). Et le prix (aux nouvelles) baisse instantanément et cela dure jusqu'à la fin de la journée, voire pendant toute la semaine. Je place un Stop Loss - si le prix baisse de 10 roubles, je vends dès que possible (au prix du marché). Comment changer l'ordre, pour éviter les pertes. Si cette variante vous intéresse - écrivez votre adresse e-mail dans mon message personnel.
 
Bonjour. Veuillez m'aider à résoudre une erreur lors d'un test sur le testeur. Pendant le test, sur tous les ticks, mon Expert Advisor ouvre le 1er trade sellstop, la condition n'a pas été passée et il le supprime. Le 2ème sellstop est ouvert et fermé alors que la condition n'a pas été déclenchée. Puis dans le journal apparaît une tentative de fermer buy2, ticket inconnu pour la fonction orderclose. Je colle le code car je travaille et certaines inexactitudes peuvent apparaître. Le bloc de commandes est habituel
Symb=Symbol();                               
   Total=0;                                     
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if (OrderSymbol()!=Symb)continue;      
         if (OrderType()>1) continue;
         if (OrderType<=1)                     
            {
             Total++;                               
             if (Total>1)                           
               {
                Alert("Несколько рыночных ордеров. Эксперт не работает.");
                return;                             
               }
             Ticket=OrderTicket();                  
             Tip   =OrderType();                    
             Price =OrderOpenPrice();               
             SL    =OrderStopLoss();                
             TP    =OrderTakeProfit();              
             Lot   =OrderLots();                    
            }
        }

le bloc de fermeture ne semble pas non plus soulever beaucoup de questions, il a été démontré que les conditions sont simplifiées :

while(true)                                  
     {
      if (Tip==0 && Cls_B==true)                
        {                                       
         Alert("Попытка закрыть Buy ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Bid,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              
           }
         return;                                
        }
 
      if (Tip==1 && Cls_S==true)                
        {                                       
         Alert("Попытка закрыть Sell ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Ask,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
     }

serait très apprécié.