Questions des débutants MQL4 MT4 MetaTrader 4 - page 222

 

Vous pouvez vérifier le robot de trading

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

//| Experts1.mq4 |

//| Copyright 2017, MetaQuotes Software Corp.

//| https://www.mql5.com |

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

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#lien de propriété "https://www.mql5.com"

#propriété version "1.00"

#propriété stricte

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

//| https://www.mql5.com |

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

#property copyright "Copyright 2020, MetaQuotes Software Corp.

#lien de propriété "https://www.mql5.com"


entrée double Lots=0.01 ;

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

//| |

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

int OnInit()

( OrderSend(Symbol(),OP_BUY,Lots,3,0,Ask+0.0084,Ask-0.0084)


double lot=Lots ;

si profit alors Lots=lot+0.01 sinon Lots=lot-0.01

si Lots=0 alors Lots=0.01

si Lots>0.03 alors Lots=0.01

//---

//---

retour() ;

}


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Bonjour, chers professionnels, conseillez-moi comment écrire la condition lorsque l'ordre en attente estdéplacé une fois lors d'un certain mouvement de prix, par exemple, l'ordre Sellstop a été placé à 1,28, le prix a évolué vers 1,50 et l'ordre en attente s'est déplacé vers le prix à une certaine distance du prix, mais il ne s'est pas déplacé derrière le prix constamment, il s'est déplacé une seule fois, c'est-à-dire qu'il s'est déplacé par exemple de dix pips et s'est arrêté même si le prix est allé plus loin. Salutations, Alexander !
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 

Bonjour, chers experts !

S'il vous plaît aidez, des conseils sur la façon de le faire, où lire, écrire une partie du code.

J'ai joint une partie du code. J'ai besoin de pouvoir saisir mon commentaire lors de l'ouverture d'un ordre ou d'un ordre à cours limité. C'est-à-dire, pas directement dans le code, mais lors de l'ouverture du panneau EA.

extern double Lots     = 0.1;
extern int StopLoss    = 250;
extern int TakeProfit  = 150;
extern int Magic       = 1;

double SL, TP;

int ticket;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double price = Ask;

   if(BUY() == 0)
     {
      SL = NormalizeDouble(Ask - StopLoss*Point, 5);
      TP = NormalizeDouble(Ask + TakeProfit*Point, 5);
      ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, "", Magic, 0, Red);
      if(ticket<0)
         Print("Не удалось открыть ордер");
     }
  }
//+------------------------------------------------------------------+
int BUY()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=X; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic &&
         OrderType() == OP_BUY)
        {
         count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
d4vv:

J'ai besoin de pouvoir saisir mon commentaire lors de l'ouverture d'un ordre ou d'un ordre à cours limité.

input string Mycomment="Preved Medved";


ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, Mycomment, Magic, 0, Red);

Le commentaire est écrit lors de la création de l'ordre et ne peut plus être modifié.

 
Aleksei Stepanenko:

Le commentaire est écrit lors de la création de l'ordre et il ne peut plus être modifié.

Merci beaucoup. C'est exactement ce dont j'ai besoin.

 
Knelson:
Veuillez m'indiquer comment écrire une condition pour qu'un ordre en attentesoit déplacé une fois à un certain mouvement de prix,

1. Créez un tableau dans lequel vous stockerez les tickets des ordres ouverts et un drapeau indiquant que l'ordre a déjà été déplacé.

struct Orders
   {
   int ticket;
   bool moved;
   } orders[];

2. Gardez la trace des ordres nouvellement apparus et enregistrez dans ce tableau les informations sur l'ordre ouvert avec le drapeau "n'a pas bougé".

bool finded;
int index==ArraySize(orders)-1;
for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
   if(OrderSymbol()!=symbol) continue;
   if(OrderMagicNumber()!=magic) continue;
   if(OrderType()!=OP_BUYSTOP && OrderType()!=OP_SELLSTOP) continue;
   finded=false;
   for(int j=index; j>=0; j--)
      {
      if(orders[j].ticket==OrderTicket())
         {
         finded=true;
         break;
         }
      }
   if(!finded)
      {
      ArrayResize(orders,++index+1);
      orders[index].ticket=OrderTicket();
      orders[index].moved=false;
      }
   }

3. Supprimer les informations du tableau si l'ordre est fermé, supprimé ou transformé.

4. Vérifiez la condition pour le déplacement, si la condition est remplie et que le drapeau "n'a pas bougé", alors déplacez-vous et changez le drapeau en "déplacé".

 
Aleksei Stepanenko:

1. Créez un tableau dans lequel vous stockerez les tickets des ordres ouverts et un drapeau indiquant que l'ordre a déjà été déplacé.

2. Gardez la trace des ordres nouvellement apparus et enregistrez dans ce tableau les informations sur l'ordre ouvert avec le drapeau "n'a pas bougé".

3. Supprimer les informations du tableau si l'ordre est fermé, supprimé ou transformé.

4. Vérifiez les conditions de déplacement, si la condition est remplie et que le drapeau "n'a pas bougé", alors déplacez-vous et changez le drapeau en "déplacé".

Je ne pense pas que ce soit fiable.

Je résoudrais un tel problème d'une manière plus simple : placer un ordre en attente avec le numéro magique 2 et supprimer un ordre en attente avec le numéro magique 1 à la condition que l'ordre soit déplacé.

Le code serait simple - après la réception du tick, la boucle passerait par l'ordre avec le numéro magique 1 s'il est trouvé et doit être déplacé, alors nous supprimerions cet ordre et en placerions un nouveau avec le numéro magique 2.

 

Oui, c'est une bonne option.

 
Aleksei Stepanenko:

Oui, c'est une bonne option.

UPD : le code sera simple - quand le tick arrive la boucle sur l'ordre avec le numéro magique 1 si trouvé et besoin de bouger, alors supprimer cet ordre et mettre un nouvel ordre avec le numéro magique 2.

.... alors nous essaierons d'établir un nouvel ordre avec le numéro magique 2 et si c'est OK, nous supprimerons l'ordre avec le numéro magique 1.

donc moins de contrôles à faire - par exemple les niveaux d'arrêt ont augmenté et ne pourront pas déplacer l'ordre une fois et nous avons déjà supprimé l'ordre trouvé

de cette façon ;)

 
En observant le cerveau humain (principalement le mien, mais pas seulement), je trouve une propriété - le tunneling. Le processus de réflexion se déroule à l'intérieur des stéréotypes de pensée, comme dans un tunnel. Et il n'est pas facile d'en sortir par mes propres efforts. Le "je" est inséparable de moi et il semble que le train de pensées soit correct, absolument correct. Mais lorsque des connaissances extérieures arrivent, on commence à se rendre compte qu'on était prisonnier de ses idées. Les miracles...