Placer un ordre de transaction pour l'exécution dans des conditions spécifiées (ordre en attente).
Exemple de l'opération TRADE_ACTION_PENDING pour placer un ordre en attente :
#property description"Example of placing pending orders"#property script_show_inputs#define EXPERT_MAGIC 123456// MagicNumber of the expertinputENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT; // order type//+------------------------------------------------------------------+//| Placing pending orders |//+------------------------------------------------------------------+voidOnStart()
{
//--- declare and initialize the trade request and result of trade requestMqlTradeRequest request={0};
MqlTradeResult result={0};
//--- parameters to place a pending order
request.action =TRADE_ACTION_PENDING; // type of trade operation
request.symbol =Symbol(); // symbol
request.volume =0.1; // volume of 0.1 lot
request.deviation=2; // allowed deviation from the price
request.magic =EXPERT_MAGIC; // MagicNumber of the orderint offset = 50; // offset from the current price to place the order, in pointsdouble price; // order triggering pricedouble point=SymbolInfoDouble(_Symbol,SYMBOL_POINT); // value of pointint digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); // number of decimal places (precision)//--- checking the type of operationif(orderType==ORDER_TYPE_BUY_LIMIT)
{
request.type =ORDER_TYPE_BUY_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_LIMIT)
{
request.type =ORDER_TYPE_SELL_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_BUY_STOP)
{
request.type =ORDER_TYPE_BUY_STOP; // order type
price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price=NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_STOP)
{
request.type =ORDER_TYPE_SELL_STOP; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseAlert("This example is only for placing pending orders"); // if not pending order is selected//--- send the requestif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // if unable to send the request, output the error code//--- information about the operationPrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//+------------------------------------------------------------------+
Artyom Trishkin: Vladimir, tu ne peux pas l'écrire en russe ?
Tu ne peux pas. Parce que j'ai cité l'intégralité de la référence. Sinon, c'est peine perdue : tout le monde a un "ticket" et certains ont des "tickets". C'est pourquoi les fonctions, l'aide et les citations de l'aide sont en anglais.
Tu ne peux pas. Parce que j'ai cité la référence complète. Sinon, c'est peine perdue : tout le monde a un "ticket" et certains ont des "tickets". C'est pourquoi les fonctions, la référence et les citations dans la référence sont en anglais.
Et ils ont des "tickets" juste parce qu'ils commencent à traduire avec google :)
Dans l'aide officielle russe, il y a des "tickets".
En forêt-da-drow juste à partir de traductions libres.
Bonjour à tous ! Je pense que la question s'adresse principalement aux professionnels (comme il s'avère). Cela fait une semaine et une seule question sur le code.
Par exemple - nous savons que la bougie M5 contient 5 bougies M1 (par exemple, 00:00, 00:01, 00:02, 00:03 et 00:04). De plus, nous ne considérerons que cette conjonction - c'est-à-dire que nous exécutons l'indicateur sur M1 et voulons voir les lectures de l'indicateur à partir de M5.
C'est-à-dire que pour afficher correctement les données du TF du milieu sur le TF du bas, je devrais passer en boucle les 5 barres du TF du bas au fur et à mesure qu'elles apparaissent. C'est-à-dire que la première barre apparaît à 00:00, puis 00:01 etc. jusqu'à 00:04 et après cela la suivante apparaît. Cela signifie que le cycle doit être de 0 à 4 - c'est le maximum, tandis que les trous dans l'historique ne sont pas considérés. Le problème est que j'obtiens le cycle de 0 à 5, et je n'ai pas assez de logique pour le faire jusqu'à 4 ! Croyez-moi, cela fait une semaine que je me débats avec ce problème et je vous demande vraiment de m'aider. Ci-dessous un code très tronqué où la boucle va à 5 au lieu de 4. Je veux que ce soit 4 !!!!!
#property copyright""#property link""#property version""#property indicator_chart_window//+----------------------------------------------+//| Входные параметры индикатора |//+----------------------------------------------+inputENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, // количество истории в барах на текущем тикеconstint prev_calculated,// количество истории в барах на предыдущем тикеconstdatetime &time[],
constdouble &open[],
constdouble& high[], // ценовой массив максимумов цены для расчёта индикатораconstdouble& low[], // ценовой массив минимумов цены для расчёта индикатораconstdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime IndTime[1];
//--- объявления локальных переменныхint limit,bar;
//--- индексация элементов в массивах как в таймсерияхArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баровif(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
{
limit=100; // стартовый номер для расчёта всех баров
LastCountBar=limit;
}
else
limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров//--- основной цикл расчёта индикатораfor(bar=limit; bar>=0; bar--)
{
//--- копируем вновь появившиеся данные в массив IndTimeif(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
return(0);
if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
{
LastCountBar=bar;
//--- Далее проводим вычисления индикатора МТФ ...............Print(bar," ",IndTime[0]);
//---
}
}
return(rates_total);
}
//+------------------------------------------------------------------+
J'ai la bibliothèque ci-dessus. Je veux ajouter une boîte d'édition avec une étiquette dans cette liste. Pouvez-vous me dire comment je peux faire cela ? J'ai essayé, mais ça ne marche pas.
La question est la suivante. Puis-je ouvrir 2 tableaux (ou plus) en appuyant sur un bouton de manière à ce qu'ils soient positionnés verticalement et occupent également tout l'écran ?
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
ENUM_TRADE_REQUEST_ACTIONS
Identifiant
Description
TRANSACTION_ACTION_DEAL
Placez un ordre de transaction pour une exécution immédiate avec les paramètres spécifiés (ordre de marché).
ACTION_COMMERCIALE_EN_ATTENTE
Placer un ordre de transaction pour l'exécution dans des conditions spécifiées (ordre en attente).
Exemple de l'opération TRADE_ACTION_PENDING pour placer un ordre en attente :
ENUM_TRADE_REQUEST_ACTIONS
Identifiant
Description
TRANSACTION_ACTION_DEAL
Placez un ordre de transaction pour une exécution immédiate avec les paramètres spécifiés (ordre de marché).
ACTION_COMMERCIALE_EN_ATTENTE
Placer un ordre de transaction pour l'exécution dans des conditions spécifiées (ordre en attente).
Merci !
Exemple de l'opération TRADE_ACTION_PENDING pour placer un ordre en attente :
Vladimir, tu ne peux pas l'écrire en russe ?
Tu ne peux pas. Parce que j'ai cité l'intégralité de la référence. Sinon, c'est peine perdue : tout le monde a un "ticket" et certains ont des "tickets". C'est pourquoi les fonctions, l'aide et les citations de l'aide sont en anglais.
Tu ne peux pas. Parce que j'ai cité la référence complète. Sinon, c'est peine perdue : tout le monde a un "ticket" et certains ont des "tickets". C'est pourquoi les fonctions, la référence et les citations dans la référence sont en anglais.
Bonjour à tous ! Je pense que la question s'adresse principalement aux professionnels (comme il s'avère). Cela fait une semaine et une seule question sur le code.
Par exemple - nous savons que la bougie M5 contient 5 bougies M1 (par exemple, 00:00, 00:01, 00:02, 00:03 et 00:04). De plus, nous ne considérerons que cette conjonction - c'est-à-dire que nous exécutons l'indicateur sur M1 et voulons voir les lectures de l'indicateur à partir de M5.
C'est-à-dire que pour afficher correctement les données du TF du milieu sur le TF du bas, je devrais passer en boucle les 5 barres du TF du bas au fur et à mesure qu'elles apparaissent. C'est-à-dire que la première barre apparaît à 00:00, puis 00:01 etc. jusqu'à 00:04 et après cela la suivante apparaît. Cela signifie que le cycle doit être de 0 à 4 - c'est le maximum, tandis que les trous dans l'historique ne sont pas considérés. Le problème est que j'obtiens le cycle de 0 à 5, et je n'ai pas assez de logique pour le faire jusqu'à 4 ! Croyez-moi, cela fait une semaine que je me débats avec ce problème et je vous demande vraiment de m'aider. Ci-dessous un code très tronqué où la boucle va à 5 au lieu de 4. Je veux que ce soit 4 !!!!!
Comment ajouter une fenêtre d'édition de la vue en liste ?
https://www.mql5.com/en/docs/standardlibrary/controls/clistview
J'ai la bibliothèque ci-dessus. Je veux ajouter une boîte d'édition avec une étiquette dans cette liste. Pouvez-vous me dire comment je peux faire cela ? J'ai essayé, mais ça ne marche pas.
Et ils ont des "tickets" juste parce qu'ils commencent à traduire avec google :)
OK, j'avoue : je me suis fait avoir. Réponse rapide et pas de changement de langue de l'aide 😎.
Copie cela ;)