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

 
Igor Makanu:

Je l'ai vu, je doute qu'il soit capable de tout annuler lui-même, c'est pourquoi j'ai suggéré d'utiliser la méthode éprouvée de fermeture d'un ordre sélectionné via OrderSelect() avec ClosePosBySelect() - il peut le faire, du moins je l'ai vu construire des codes pour lui-même avec le constructeur )))).

ZZY : J'ai un autre soupçon qu'il ferme un ordre deux fois, mais la fonction f de Kim s'imprime dans le journal, pas comme des boucles séparées pour fermer sur la 2ème condition.

:-) Oui.

Artyom Trishkin:

Il est clair que les fonctions d'Igor feront tout pour l'utilisateur (et même là, certains utilisateurs arrivent à faire une erreur avec elles aussi). Mais alors il n'apprendra pas lui-même à faire quoi que ce soit. Même si, bien sûr, c'est leur choix.

Messieurs - Je vais écrire ici ce soir...

Il semble que la durée de vie du compte ait expiré. Ce n'est pas l'erreur habituelle...

La capture d'écran est juste ça.

P.S. Je peux et suis formé pour programmer, si besoin est ! :-) c'est à la question de la collecte du code constructeur !!!!!!!!!!!!!!! :-)

PPS ne soulève pas la bête en moi, s'il te plaît, l'abruti... :-)

JE SUIS BON EN CODE ET PAS SEULEMENT ÇA, JE SUIS BON EN ENCHÈRE AUSSI !

 
Roman Shiredchenko:

:-) Ouaip.

Messieurs - Je vais poster ici ce soir...

Il semble que la durée de vie du compte ait expiré à cet endroit. Ce n'est pas l'erreur habituelle...

La capture d'écran est juste ça.

P.S. Je peux et suis formé pour programmer, si besoin est ! :-) c'est à la question de la collecte du code constructeur !!!!!!!!!!!!!!! :-)

PPS ne réveillez pas la bête en moi, s'il vous plaît, l'imbécile... :-)

JE SUIS UNE MERDE EN CODE ET PAS SEULEMENT ÇA, EN ENCHÈRE AUSSI !

Beaucoup de lettres. Quel est l'intérêt ? Il n'y a pas de vérification pour obtenir un prix. Et l'erreur de fermer des positions à des prix nuls.

C'est le problème de "capable et formé".

 
Artyom Trishkin:

Il a une fermeture à prix zéro là.

Par conséquent, je dois surveiller ce que la fonction MarketInfo a renvoyé, mais il n'y a aucun contrôle. Toutefois, comme d'habitude sur le quatre, certaines personnes sont habituées à écrire - quelque chose reçu, ce qui - n'ont pas vérifié, mais envoyé l'argument.

YEP. J'ai vu ça.

Il semble que la durée de vie du compte ait expiré à cet endroit...

Lorsque j'ai essayé de le fermer manuellement, le message "ERREUR GÉNÉRALE" s'est affiché à l'écran.

Plus tôt - il semble que la fonction ait fonctionné, je n'ai juste pas eu le temps de la vérifier.

La fonction est écrite correctement. Oui - dérapage dans les écarts, et alors ?

Je posterai les TOTAUX ici ce soir.

J'ai rechargé les transactions dans un nouveau compte.

 
Roman Shiredchenko:

Messieurs - Je vais poster ici ce soir...

Il semble que la durée de vie du compte ait expiré. C'est juste une erreur inhabituelle...

c'est la mauvaise ! pourquoi devrais-je deviner quelle est l'erreur si tu l'as imprimée ? - Ou la question était-elle à l'origine destinée aux télépathes... non, aux tushkas ? )))


Roman Shiredchenko:

Lorsque j'ai essayé de fermer manuellement, il est revenu à l'écran dans la boîte - "ERREUR GÉNÉRALE".

Peut-être que le flux de négociation est occupé, peut-être qu'ils vous requalifient, c'est pourquoi l'erreur générale peut signifier ce que vous voulez - le même "chapeau" était à Insta l'année dernière - les ordres ont été fermés exactement 5 minutes chacun - et le code comme il devrait être avec tous les contrôles et les imprimantes ;)

 
Artyom Trishkin:

Beaucoup de lettres. Quel est l'intérêt ? Il n'y a pas de contrôle du reçu de prix. Et il n'y a pas d'erreur à fermer des positions à des prix nuls.

C'est le truc du "je peux faire et apprendre".

Oui parce que j'écris déjà à partir d'une feuille de papier dans Word - gud. à la fois. JE N'AI PAS ACCÈS AU TERMINAL.

Accès au terminal - non. Sera dans la soirée à Moscou - je vais écrire ici.

 
Igor Makanu:

le mauvais ! pourquoi devrais-je deviner quelle est l'erreur si vous l'avez imprimée ? - ou la question était-elle posée à l'origine aux télépathes... non, aux tushkas ? )))

О ! C'est mieux - plus de sourires... :-)

Oui. Les empreintes ne se sont pas imprimées depuis l'onglet "EXPERTS"... c'est ça. Il y avait juste beaucoup de choses à faire... je n'avais pas le temps.

 
Igor Makanu:

c'est la mauvaise ! pourquoi devrais-je deviner quelle est l'erreur si tu l'as imprimée en caractères d'imprimerie ? - ou la question était-elle à l'origine destinée aux télépathes... non, aux tushkas ? )))


il peut s'agir d'un flux chargé, de requêtes, donc vous devez deviner - l'erreur commune pourrait signifier n'importe quoi - à insta l'année dernière le même "chapeau" était là, les commandes prenaient 5 minutes à fermer - et le code devrait être imprimé avec tous les chèques et imprimantes ;)

Ok. :-)

PS : je posterai le résultat ici ce soir.

 
 #property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_plots 1
#include  "Includes//Symbol.mqh"
enum price_types
  {
   Bid,
   Ask
  };
input datetime start_date = D'2019.10.07 00:00:00' ;
input int Chops = 10 ;
input price_types applied_price= 0 ; //Price
int data_filled = 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string symbol_custom= StringFormat ( "%s_%dsec" , _Symbol ,Chops);
long chart_id = 0 ;
datetime start;
void OnInit ()
  {
//CustomSymbolDelete(symbol_custom);
   start=start_date- 60 ;
   Print ( "Ticks History Deleted : " , CustomTicksDelete (symbol_custom, 0 , LONG_MAX ));
   data_filled = 0 ;

   const SYMBOL SYMB(symbol_custom);
   SYMB.CloneProperties( _Symbol );
   SYMB.On();
   MqlTick ticks_add[];
   int len = CopyTicksRange ( _Symbol ,ticks_add, COPY_TICKS_INFO , ulong (start_date)* 1000 , ulong ( TimeCurrent ())* 1000 );
   Print ( "Ticks: " ,len);
   start = start - (len* 60 );
   Print ( "Start Date : " ,start);
   for ( int i= 0 ; i<len && ! IsStopped (); i++)
     {
       if (data_filled%Chops== 0 )
        {
         start = start+ 60 ;
         start = datetime ( TimeToString (start, TIME_DATE )+ " " + TimeToString (start, TIME_MINUTES )+ ":00" );
        }
       else
        {
         start++;
        }
      ticks_add[i].time = start;
      ticks_add[i].time_msc = long (ticks_add[i].time)* 1000 ;
      data_filled++;
     }
//Print(SYMB.CloneTicks(ticks_add));
   Print ( CustomTicksAdd (symbol_custom,ticks_add));
   chart_id = ChartOpen (symbol_custom, _Period );
   Print ( GetLastError ());
  }
void OnDeinit ( const int r)
  {
   if (chart_id != 0 )
     {
       ChartClose (chart_id);
     }
   return ;
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   if (rates_total <= 0 )
       return 0 ;
   MqlTick ticks[ 1 ];
   CopyTicks ( _Symbol ,ticks, COPY_TICKS_INFO , ulong ( TimeCurrent ())* 1000 , 1 );
   if (data_filled%Chops== 0 )
     {
      start = start+ 60 ;
      start = datetime ( TimeToString (start, TIME_DATE )+ " " + TimeToString (start, TIME_MINUTES )+ ":00" );
     }
   else
     {
      start++;
     }
   Print (start);
   ticks[ 0 ].time = start;
   ticks[ 0 ].time_msc = long (start)* 1000 ;
   data_filled++;

   Print ( CustomTicksAdd (symbol_custom,ticks));
   Print ( GetLastError ());

   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

Pourquoi les tics ne sont pas ajoutés à mon personnage personnalisé ?

Dossiers :
Symbol.mqh  7 kb
 
Igor Makanu:

Quelle est l'erreur ? mauvais écran

en théorie, cela devrait fonctionner, mais je n'ai pas vu de clôture aussi sophistiquée, prenant en compte le spread et l'ajoutant comme slippage - à mon avis, si vous décidez de clôturer, alors le slippage n'est pas la chose la plus importante à surveiller, les erreurs de clôture sont plus importantes, puis les requotes, puis la connexion est complètement perdue


Retirez OrderClose(....) et remplacez-le par ClosePosBySelect() de Kimhttps://www.mql5.com/ru/forum/131859/page2#comment_3359664.

si vous l'utilisez, vous verrez clairement où il y a une rupture - soit dans vos conditions de fermeture, soit le serveur a une sorte d'astuce.

Artyom Trishkin:

Il y a un prix zéro à proximité. Respectivement, nous devrions vérifier ce qui a été retourné par la fonction MarketInfo mais nous n'avons aucun contrôle. Cependant, comme d'habitude sur le quatre certaines personnes sont habituées à écrire - quelque chose reçu, ce qui - n'a pas vérifié, mais a envoyé un argument.

Collègues, je vous remercie du fond du cœur pour l'aide opportune dans le code, pas de blague ici, vous m'avez toujours aidé avant et aider.

Toutes les fi ions de la dernière page sur la clôture des transactions fonctionnent bien. Il y a eu un problème avec la fin de la période du compte démo ici, c'est pourquoi il n'y a pas eu de clôture sur les conditions, y compris les prix zéro...

J'ai mis à jour le compte et je continue les tests.

 
jaffer wilson :

Pourquoi les tics ne sont pas ajoutés à mon personnage personnalisé ?

@ Artyom Trishkin

Pouvez-vous répondre à ma question ? Je pense que tout le monde s'en moque.