Questions des débutants MQL5 MT5 MetaTrader 5 - page 90

 
WindSW:
Toutes les options sont indiquées, sauf la fermeture. C'est pourquoi je demande.

on vous l'a déjà dit.

Yedelkin:

"Clôturer une position" est juste le résultat d'une demande de transaction, dont les règles sont les mêmes.

C'est-à-dire prendre la demande "ouverte" et changer le type de commande.

Remplissez les champs obligatoires inutiles avec des zéros.

 

Yedelkin:
Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.

sergeev:

on vous a déjà répondu !

Merci !

J'ai une autre question : la demande ci-dessous est envoyée et une position est ouverte, mais le stop et le profit ne sont pas fixés. Je les ai déjà tordus de différentes manières, mais rien n'y fait. Quel est le problème, qu'est-ce que je fais mal ?

   MqlTick latest_price;       // Будет использоваться для текущих котировок
   if(!SymbolInfoTick(_Symbol,latest_price)) return;        // получить текущее значение котировки в структуру типа MqlTick
   ...
   if(uBuy && opSell==false)    
     {
      if(opBuy) return;                                                // при наличии позиции не добавлять к открытой позиции на покупку
      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask
      mrequest.sl = NormalizeDouble(latest_price.ask - StopLoss*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // символ
      mrequest.volume = WorkLot;                                                // количество лотов для торговли
      mrequest.magic = EA_Magic;                                            // Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку
      mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
      mrequest.deviation=Slippage;                                               // проскальзывание от текущей цены
      OrderSend(mrequest,mresult);                                          // отсылаем ордер
      if(mresult.retcode==10009 || mresult.retcode==10008)                  //запрос выполнен или ордер успешно помещен
        {
         Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
        }
      else
        {
         return;
        }
     }
 

comment additionner les 3 dernières valeurs de ZigZag ?

        double summ=0;//переменная, в которую все суммируется
        int w=0;//счетчик 3 удачных сумирований
        int count_for_buf=0;//Счетчик переходов по буферу ZigZag
        while (w<=3)
         {
         summ=summ+ZigzagBuffer[rates_total-count_for_buf];
         count_for_buf++;
         if (ZigzagBuffer[rates_total-count_for_buf]!=0)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
          {
          w++;
          }
         }
De cette façon, pour une raison quelconque, il se bloque ou quelque chose d'autre se produit.
 
WindSW: La demande ci-dessous est envoyée et une position est ouverte, mais aucun stop ni profit n'est placé. J'ai déjà essayé différents réglages, mais rien n'y fait. Quel est le problème, qu'est-ce que je fais mal ?

Rappelez-vous que les demandes de commerce "pour ouvrir une position" ont plusieurs options à remplir ? Certaines de ces options impliquent le sl/tp, d'autres non. En d'autres termes, quel est le mode de négociation de votre courtier ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Yedelkin:

Rappelez-vous que les demandes de commerce "pour ouvrir une position" ont plusieurs options à remplir ? Certaines de ces options impliquent le sl/tp, d'autres non. En d'autres termes, quel est le mode de négociation de votre courtier ?

Courtier Alpari. En mode manuel, seul un nouvel ordre est placé dans l'exécution de l'échange. Il n'y a pas d'autre option pour entrer sur le marché. Je comprends qu'il s'agit d'une demande d'exécution d'échange. Merci, j'ai réglé le problème. Pouvez-vous me dire pourquoi le compilateur traite le code suivant :

if(CopyBuffer(ema,0,0,3,emaVal)<0) return ; // copier les nouvelles valeurs des tampons indicateurs dans des tableaux

и

IndicateurRelease(ema) ;

Un avertissement "perte possible de données due à la conversion de type" apparaît. Je n'arrive pas à comprendre ce qui ne va pas, je n'arrive pas à le réparer depuis hier soir.

 
WindSW: Pouvez-vous me dire pourquoi le compilateur jure sur les chaînes de caractères suivantes :

if(CopyBuffer(ema,0,0,3,emaVal)<0) return ; // copier les nouvelles valeurs du tampon indicateur dans les tableaux

и

IndicateurRelease(ema) ;

Un avertissement "perte possible de données due à la conversion de type" apparaît. Je n'arrive pas à comprendre ce qui ne va pas ici, je n'ai pas réussi à le réparer depuis hier soir.

Et quel type d'ema variable ?
 
Yedelkin:
Quel type de variable est ema ?
double
 
WindSW double
Je l'ai. Voir quel type de variable doit être utilisé pour stocker les poignées de l'indicateur et le faire correspondre.
 
Yedelkin:
Je l'ai. Voyez quel type de variable doit être utilisé pour stocker les poignées d'indicateurs, et faites-le correspondre.
Et j'ai perdu l'habitude d'écrire comme en 4. Merci encore pour les conseils !
 
lazarev-d-m:

comment additionner les 3 dernières valeurs de ZigZag ?

De cette façon, pour une raison quelconque, il se bloque ou quelque chose d'autre se produit.

Je vais vous donner ma suggestion :

   double   summ=0;  //переменная, в которую все суммируется
   int      w=0;     //счетчик 3 удачных сумирований
   for(int i=0; i<rates_total; i++)
     {
      if(ZigzagBuffer[rates_total]!=0 && w<3)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
        {
         summ+=ZigzagBuffer[i];
         w++;
        }
      if(w>2) break;
     } 
Raison: