Peut-être existe-t-il une fonction dans MQL5 ? Je veux comprendre pourquoi je reçois ce message 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerte : La demande de placement d'un ordre de vente a échoué - code d'erreur:4756
//--- собираем все вместеif(Sell_Condition_1 && Sell_Condition_2)
{
if(Sell_Condition_3 && Sell_Condition_4)
{
// есть ли в данный момент открытая позиция на продажу?if(Sell_opened)
{
Alert("Уже есть позиция на продажу!!!");
return; // не добавлять к открытой позиции на продажу
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
Alert("Ордер Sell успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Sell не выполнен - код ошибки:",GetLastError());
return;
}
}
}
return;
}
Peut-être existe-t-il une fonction dans MQL5 ? Je veux comprendre pourquoi je reçois ce message 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerte : La demande de placement d'un ordre de vente a échoué - code d'erreur:4756
Veuillez me dire comment interpréter cette ligne de code : CParabolicStop *SARTrailing[] ;
CNRTRStop *NRTRTrailing[] ; Je comprends que CParabolicStop et CNRTRStop sont des classes, * pointeur, tableaux SARTrailing[] et NRTRTrailing[] Mais que signifient ces chaînes ? L'article de ce conseillerhttps://www.mql5.com/en/articles/134 il est dit que c'est --- Comment dois-je comprendre cela ? Et où sont créés exactement ces tableaux ? Puis-je vraiment charger des classes dans des tableaux, ou des objets de classes ? Et à quoi cela sert-il en termes pratiques ?
//+------------------------------------------------------------------+//| Sample_TrailingStop.mq5 |//| MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#include <Sample_TrailingStop.mqh> // подключение класса трейлинга//--- input parametersinputdouble SARStep = 0.02; // Шаг Parabolicinputdouble SARMaximum = 0.02; // Максимум Parabolicinputint NRTRPeriod = 40; // Период NRTRinputdouble NRTRK = 2; // Коэффициент NRTRstring Symbols[]={"EURUSD","GBPUSD","USDCHF","USDJPY"};
CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[];
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
ArrayResize(SARTrailing,ArraySize(Symbols)); // изменение размера в соответствии с количеством используемых символовArrayResize(NRTRTrailing,ArraySize(Symbols)); // изменение размера в соответствии с количеством используемых символов for(int i=0;i<ArraySize(Symbols);i++)
{ // для всех символов
SARTrailing[i]=new CParabolicStop(); // создание экземпляра класса CParabolicStop
SARTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,5,15+i*17,Silver,Blue); // инициализация экземпляра класса CParabolicStop if(!SARTrailing[i].SetParameters(SARStep,SARMaximum))
{ // установка параметров экземпляра класса CParabolicStop Alert("trailing error");
return(-1);
}
SARTrailing[i].StartTimer(); // запуск таймера//----
NRTRTrailing[i]=new CNRTRStop(); // создание экземпляра класса CNRTRStop
NRTRTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,127,15+i*17,Silver,Blue); // инициализация экземпляра класса CNRTRStop if(!NRTRTrailing[i].SetParameters(NRTRPeriod,NRTRK))
{ // установка параметров экземпляра класса CNRTRcStop Alert("trailing error");
return(-1);
}
NRTRTrailing[i].StartTimer(); // запуск таймера
}
return(0);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
for(int i=0;i<ArraySize(Symbols);i++)
{
SARTrailing[i].Deinit();
NRTRTrailing[i].Deinit();
delete(SARTrailing[i]);
delete(NRTRTrailing[i]);
}
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
for(int i=0;i<ArraySize(Symbols);i++)
{
SARTrailing[i].DoStoploss();
NRTRTrailing[i].DoStoploss();
}
}
//+------------------------------------------------------------------+voidOnTimer()
{
for(int i=0;i<ArraySize(Symbols);i++)
{
SARTrailing[i].Refresh();
NRTRTrailing[i].Refresh();
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam
)
{
for(int i=0;i<ArraySize(Symbols);i++)
{
SARTrailing[i].EventHandle(id,lparam,dparam,sparam);
NRTRTrailing[i].EventHandle(id,lparam,dparam,sparam);
}
}
//+------------------------------------------------------------------+
Et si vous n'êtes pas dur, veuillez préciser où il est écrit que cet astérisque est un pointeur * dans la documentation. Je l'ai vu une fois, mais j'ai déjà parcouru un manuel et je ne le trouve pas. ((((
Основное правило трейдера - дай прибыли расти, обрезай убытки! В статье рассматривается один из основных технических приемов, позволяющий следовать этому правилу - перемещение уровня защитной остановки (уровня Stoploss) вслед за растущей прибылью позиции, другими словами - скользящий стоп или трейлинг стоп (trailingstop). Приводится пошаговая процедура создания класса для трейлинг стопа на индикаторах SAR и NRTR, который каждый желающий сможет за 5 минут встроить в своего эксперта или использовать независимо для управления позициями на своем счете.
Bonjour, est-il possible et comment créer un algorithme d'ouverture et de fermeture d'une transaction sans utiliser d'indicateurs ?
Par exemple, prenez deux lignes, une ligne de tendance est ascendante et la seconde est également descendante, mettez-les l'une sur l'autre, il y a un point d'intersection entre les deux lignes, supposons qu'il soit à 15-30 dans le temps, alors comment faire pour que l'ordre soit automatiquement ouvert au même moment pour commencer dans n'importe quelle direction, comment faire pour que l'algorithme trouve ces points et ouvre une position? J'aimerais obtenir des précisions et connaître votre avis.
Bonjour ! !! Une question comme celle-ci ? J'ai besoin de rassembler dans des tableaux, les manipulations de l'indicateur sur différents timeframes, mais il s'avère que
Fractal=iFractals(Symbol(),tik);
ne peut pas être fait de cette façon( Bizarre, pourquoi les nombres premiers peuvent être utilisés dans ce paramètre, mais pas une variable avec une constante numérique ?
voidOnTick()
{
for(int tik =1; tik <= 6; tik++)
{
Fractal=iFractals(Symbol(),tik); // Вот эта tik переменная вызывает ошибку при компиляции
switch(tik)
{
case1:
CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalUP_W1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalDown_W1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries(FractalUP_W1,true); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries(FractalDown_W1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break;
case2:
CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUP_D1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalDown_D1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries(FractalUP_D1,true); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries(FractalDown_D1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break;
case3:
CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalUP_H4); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalDown_H4); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries(FractalUP_H4,true); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries(FractalDown_H4,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break;
case4:
CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalUP_H1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalDown_H1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries(FractalUP_H1,true); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries(FractalDown_H1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break;
case5:
CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalUP_30); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalDown_30); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries(FractalUP_30,true); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries(FractalDown_30,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break;
case6:
CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalUP_15); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalDown_15); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries(FractalUP_15,true); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries(FractalDown_15,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break;
}
}
Kira27: Bonjour ! J'ai une question. J'ai besoin de rassembler les gestionnaires d'indicateurs sur différents horizons temporels dans des tableaux, mais il s'avère que ne peut pas le faire( C 'est étrange, pourquoi puis-je utiliser des nombres premiers dans ce paramètre, mais pas une variable avec une constante numérique ?
Kira27: J'ai besoin de rassembler les poignées d'indicateurs sur différents délais dans des tableaux, mais il s'avère que ne peut pas être fait de cette façon( Je me demande pourquoi vous pouvez utiliser des nombres premiers dans ce paramètre, mais pas des variables avec des constantes numériques?
La poignée de l'indicateur dans MQL5 DOIT ÊTRE CRÉÉE UNE SEULE FOIS !!! Et cela doit être fait dans OnInit() !!!
Mais comment obtenir cette valeur pour une autre paire de devises ?
Pouvez-vous me le dire ?
Je comprends ce qu'est _Digits_.
Comment l'obtenir pour une autre paire de devises ?
S'il vous plaît, aidez-moi.
SYMBOL_DIGITS
Nombre de chiffres après le point décimal
int
MqlTradeRequest mrequest ? ??
Peut-être existe-t-il une fonction dans MQL5 ? Je veux comprendre pourquoi je reçois ce message 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerte : La demande de placement d'un ordre de vente a échoué - code d'erreur:4756
Bonjour !!! Pouvez-vous me dire comment enregistrer la structure complétée
MqlTradeRequest mrequest ? ??
Peut-être existe-t-il une fonction dans MQL5 ? Je veux comprendre pourquoi je reçois ce message 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerte : La demande de placement d'un ordre de vente a échoué - code d'erreur:4756
https://www.mql5.com/ru/forum/327894
Et voici la transcription : icicomment supprimer par programme la boîte de dialogue d' alerte de la fenêtre ?
Et si vous n'êtes pas dur, veuillez préciser où il est écrit que cet astérisque est un pointeur * dans la documentation. Je l'ai vu une fois, mais j'ai déjà parcouru un manuel et je ne le trouve pas. ((((
Bonjour, est-il possible et comment créer un algorithme d'ouverture et de fermeture d'une transaction sans utiliser d'indicateurs ?
Par exemple, prenez deux lignes, une ligne de tendance est ascendante et la seconde est également descendante, mettez-les l'une sur l'autre, il y a un point d'intersection entre les deux lignes, supposons qu'il soit à 15-30 dans le temps, alors comment faire pour que l'ordre soit automatiquement ouvert au même moment pour commencer dans n'importe quelle direction, comment faire pour que l'algorithme trouve ces points et ouvre une position? J'aimerais obtenir des précisions et connaître votre avis.
Peut-on créer un EA basé sur un tel T3 ?ne peut pas être fait de cette façon( Bizarre, pourquoi les nombres premiers peuvent être utilisés dans ce paramètre, mais pas une variable avec une constante numérique ?
Bonjour ! J'ai une question. J'ai besoin de rassembler les gestionnaires d'indicateurs sur différents horizons temporels dans des tableaux, mais il s'avère que
ne peut pas le faire( C 'est étrange, pourquoi puis-je utiliser des nombres premiers dans ce paramètre, mais pas une variable avec une constante numérique ?
Parce qu'il doit y avoir un calendrier
Identifiant
Description
PERIOD_CURRENT
Période actuelle
PERIOD_M1
1 minute
PERIODE_M2
2 minutes
PERIOD_M3
3 minutes
PERIOD_M4
4 minutes
PERIOD_M5
5 minutes
PERIOD_M6
6 minutes
PERIODE_M10
10 minutes
PERIOD_M12
12 minutes
PERIOD_M15
15 minutes
PERIOD_M20
20 minutes
PERIODE_M30
30 minutes
PERIOD_H1
1 heure
PERIOD_H2
2 heures
PERIOD_H3
3 heures
PERIOD_H4
4 heures
PERIOD_H6
6 heures
PERIOD_H8
8 heures
PERIOD_H12
12 heures
PERIOD_D1
1 jour
PERIODE_W1
1 semaine
PERIOD_MN1
1 mois
J'ai besoin de rassembler les poignées d'indicateurs sur différents délais dans des tableaux, mais il s'avère que
ne peut pas être fait de cette façon( Je me demande pourquoi vous pouvez utiliser des nombres premiers dans ce paramètre, mais pas des variables avec des constantes numériques?
La poignée de l'indicateur dans MQL5 DOIT ÊTRE CRÉÉE UNE SEULE FOIS !!! Et cela doit être fait dans OnInit() !!!