Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 343

 
Bien sûr que vous pouvez ! !!
 
Vladimirovits:
J'ai l' ensemble du projet Visual Studio dans mon dossier d' experts... Compile est un fichier .exe, non ?

Non, la bibliothèque compilée est le fichier ExpertSample.dll.
 
Forexman77:

Le modèle est tiré d'un manuel scolaire. Je ne suis pas très doué pour les fonctions de gestion des erreurs en ce moment.

A l'ouverture de l'ordre, il y a RefreshRates() ; (j'ai remplacé les Bids et Asks par Market Info, comme on me l'a dit)

Et une fonction de gestion des erreurs :

Je voulais demander. Puis-je y ajouter la ligne suivante provenant de l'erreur 129 ?

129

ERR_INVALID_PRICE

Prix incorrect


Lorsque vous recevez cette erreur, vous devez revoir la logique du conseiller expert. C'est le conseiller expert qui envoie un prix incorrect dans un ordre de transaction. Et vous avez décidé d'enliser le serveur avec un ordre commercial erroné ?


L'auto-trading sera désactivé et c'est tout.

 
artmedia70:

129

ERR_INVALID_PRICE

Prix incorrect


Lorsque vous obtenez cette erreur, vous devez revoir la logique de l'EA. C'est le conseiller expert qui envoie le mauvais prix dans l'ordre de transaction. Et vous avez décidé d'embourber le serveur avec un ordre commercial erroné ?


L'auto-trading sera désactivé et c'est tout.

J'ai tout regardé. Peut-être lorsque le conseiller expert envoie une requête :

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
Se souvient-il du prix d'achat ?

Et j'ai eu ce qui suit :

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

si l'offre est inférieure ou égale à la MA, alors nous achetons. Nous avons acheté à partir de l'offre, nous sommes donc en train de rattraper l'offre.

Je n'ai eu aucun problème pour vendre, seulement pour acheter.

J'ai trouvé des informations sur ce sujet :

"Si le prix d'ouverture demandé n'est pas dans le flux de prix ou si le prix demandé n'est pas normalisé après la virgule, l'erreur 129 (ERR_INVALID_PRICE) sera générée. Si le prix d'ouverture demandé est gravement dépassé, une erreur 138 (ERR_REQUOTE) est générée quelle que soit la valeur du paramètre slippage. Si, en revanche, le prix demandé est obsolète mais est toujours présent dans le flux de prix, la position sera ouverte au prix actuel et seulement si le prix actuel se situe dans la fourchette prix+-slippage."

S'il ne s'agit pas de l'offre et de la demande après tout, alors la transaction aurait dû avoir lieu. Je cite : " Si le prix demandé est périmé mais toujours présent dans le flux de prix, alors la position s'ouvrira au prix actuel et seulement si le prix actuel se situe dans la fourchette prix+slippage " Le prix au survol était dans la zone de négociation à 100%. La clôture était bien en dessous de la moyenne mobile.

 

Question pour le gourou.

Je n'arrive pas à obtenir le rendu de l'indicateur dans certaines zones. L'essence de l'indicateur, si le mouvement ne dépasse pas une certaine valeur, la valeur reste comme dans la valeur écrite de MA_otshet.

Lorsque la valeur est dépassée, la valeur devient, correspondant au moment actuel.

Vous trouverez ci-dessous le code de l'indicateur avec des explications :

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Aqua 
//--- input parameters
//--- buffers
bool flag=true;
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   static double MA_otshet;  //здесь хранится информация по MA_otshet
  for(int i=0;i<limit;i++)
   {  
      MA_1_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t; //разница между сегодня и вчера по скользящей средней
      raznica_static=MA_1_t-MA_otshet; //разница между сегодня и MA_otshet
      RefreshRates();   
      if(raznica > -0.0035 && raznica < 0.0035 && flag) // если raznica не превышает заданное число 
          {
          MA_otshet=MA_2_t; // записываем значение MA_otshet
          ExtMapBuffer1[i]=MA_otshet; //рисуем значение индикатора, как и вчера
          flag=false; // устанавливаем флаг запрета дальнейших расчетов
          }
      if(raznica_static > -0.0035 && raznica_static < 0.0035) //если raznica_static не превышает заданное число
          {
          ExtMapBuffer1[i]=MA_otshet;  // то рисуем значение индикатора, как записанный MA_otshet
          }
      if((raznica > 0.0035) || (raznica <- 0.0035)) // если raznica превышает заданное число
          {
          ExtMapBuffer1[i]=MA_1_t; // то рисуем значение по текущей цене
          flag=true; // разрешаем дальнейшие вычисления для расчета в диапазоне от -0.0035 до 0.0035
          }
   }  
   return(0);
  }
//+------------------------------------------------------------------+

 
Forexman77:

L'indicateur n'est pas dessiné dans certaines zones. L'essence de l'indicateur, si le mouvement ne dépasse pas une certaine valeur, la valeur reste comme dans la valeur enregistrée de MA_otshet.

Lorsque la valeur est dépassée, la valeur devient, correspondant au moment actuel.

Vous trouverez ci-dessous le code et l'explication de l'indicateur :


DRAW_SECTION

 
Forexman77:

J'ai tout regardé. Peut-être quand l'EA envoie une requête :

Se souvient-il du prix auquel il faut acheter ?

Et j'ai eu ce qui suit :

C'est-à-dire que si l'offre est inférieure ou égale au MA, alors nous achetons. Je n'ai pas eu de problèmes pour vendre, mais je n'ai pas eu de problèmes pour vendre.

Je n'ai eu aucun problème pour vendre, seulement pour acheter.

J'ai trouvé des informations sur ce sujet :

"Si le prix d'ouverture demandé n'est pas dans le flux de prix ou si le prix demandé n'est pas normalisé après la virgule, l'erreur 129 (ERR_INVALID_PRICE) sera générée. Si le prix d'ouverture demandé est gravement dépassé, une erreur 138 (ERR_REQUOTE) est générée quelle que soit la valeur du paramètre slippage. Si, en revanche, le prix demandé est obsolète mais est toujours présent dans le flux de prix, la position est ouverte au prix actuel et seulement si le prix actuel se situe dans la fourchette prix+-slippage."

S'il ne s'agit pas de l'offre et de la demande après tout, alors la transaction aurait dû avoir lieu. Je cite : " Si le prix demandé n'est plus d'actualité mais est toujours présent dans le flux de prix, alors la position s'ouvre au prix actuel et seulement si le prix actuel est compris dans la fourchette prix+slippage " Le prix au survol était dans la zone de négociation à 100%. La clôture était bien en dessous de la moyenne mobile.

Partons du principe que la demande est toujours normalisée est le prix : il n'est pas calculé et il n'y a aucun intérêt à le normaliser.

Le prix pourrait donc être erroné, pourquoi ? Les données sont peut-être périmées ? Essayez d'exécuter RefreshRates() immédiatement avant OrderSend().

 
Salutations, chers commerçants - programmeurs ! !!
Quelle est la signification de AccountComany ?
Vous pouvez tirer certaines conclusions du nom, mais quel est le lien avec le langage de programmation MT4 ?

CompteCrédit ?

Devise du compte ?

AccountEquity ?

Marge libre du compte ?

Vérification de la marge libre du compte ?

AccountLeverage ?

AccountStopoutLevel ?

AccountStopoutMode ?

ArrayBsearch?

Je suis très intéressé de connaître la description détaillée de chaque commande. Aidez-moi, s'il vous plaît.

 

ArrayCopy ?

ArrayCopyRates ?

ArrayCopySeries ?

ArrayDimension ?

ArrayGetAsSeries?

 

Qu'est-ce qu'un taux de tableau ?