Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 871

 

Qu'est-ce que je fais de mal ? Sur la M5, l'interrupteur fonctionne bien, mais pas plus loin.

extern string helper111="Настройки Helper";//Helper
extern bool helperTRUE=TRUE;        //Вкл/Выкл Helper
extern bool timeM1=TRUE;            //Переключения на М старт когда ордера все закрыты
extern int helper_period=PERIOD_M5; //Периуд М старт в минутах
extern int helper_period0=PERIOD_H1;//Базовый таймфрейм работы советника
extern int order_period1=6;         //Колво ордеров для переключения на Time 1
extern int helper_period1=PERIOD_D1;//Time 1 в минутах
extern int order_period2=8;         //Колво ордеров для переключения на Time 2
extern int helper_period2=PERIOD_W1;//Time 2 в минутах


int helperrr()
{
   if(helperTRUE==TRUE) {  
   if(timeM1==TRUE && NumberOfPositions()==0) ChartSetSymbolPeriod(0, NULL, helper_period);
   else {
   if(((NumberOfPositions1()>=0 && NumberOfPositions1()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions2()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions3()<order_period1)) && _Period != helper_period0)
   ChartSetSymbolPeriod(0, NULL, helper_period0);
   if((NumberOfPositions1()>=order_period1 && NumberOfPositions1()<order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period1 && NumberOfPositions2()<order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period1 && NumberOfPositions3()<order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period1);
   if((NumberOfPositions1()>=order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period2);
   }
   }
   return(0);
}
 
fxsaber:

Je n'ai pas trouvé d'outils de trading comme l'indice du dollar, etc. (indicateurs ?)

ils ne sont pas autorisés à les négocier, comment se comportera votre code ?

 
Igor Makanu:

Je n'ai pas trouvé d'outils de trading comme l'indice du dollar, etc. (indicateurs ?)

si le commerce sur eux est interdit, comment votre code se comportera-t-il ?

Le faux OrderSend d'un EA ne vous permet pas toujours de déterminer ses paramètres.


Le code que j'ai fourni montre les paramètres de n'importe quel EA, indépendamment des propriétés des symboles et autres. Par exemple, exécutez un EA quelconque et ensuite ce script sur le même graphique.

// Скрипт показывает, в каком режиме Long/Short запущен советник на данном чарте.
void OnStart()
{
  Alert(LongShortToString());
}
 
fxsaber:

Le faux OrderSend d'un EA ne révèle pas toujours ses paramètres.


Le code que j'ai fourni montre les paramètres de n'importe quel EA, indépendamment des propriétés des symboles et autres. Par exemple, exécutez un EA quelconque et ensuite ce script sur le même graphique.

vérifié, il fonctionne, mais

1. dans la discussion https://www.mql5.com/ru/forum/214590/page6#comment_11947599

le code devrait être remplacé par return(INIT_SUCCEEDED) ; - je l'ai essayé et je n'ai pas compris où l'EA manquait ;))

2. je ne comprends pas pourquoi, lorsque je sélectionne les propriétés de l'EA et que je mets une autre case à cocher, l'alerte ne réapparaît pas, lorsque je change de TF, tout est normal

Библиотеки: Expert
Библиотеки: Expert
  • 2019.04.23
  • www.mql5.com
Expert: Автор: fxsaber...
 
fxsaber:

Le faux OrderSend d'un EA ne révèle pas toujours ses paramètres.


Le code que j'ai fourni montre les paramètres de n'importe quel EA, indépendamment des propriétés des symboles et autres. Par exemple, exécutez un EA quelconque et ensuite ce script sur le même graphique.

est-il possible d'ajouter votre code à l'EA ?

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

avec ce code il ouvre sans cesse des ordres longs et courts sur xauusd

 
Lomonosov1991:

Puis-je ajouter votre code à mon EA ?

Oui.


Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toutes les questions des débutants de MQL4 et MQL5, aide et discussion sur les algorithmes et les codes

Lomonosov1991, 2019.06.04 19:01

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

Avec ce code, il ouvre sans cesse des ordres longs et courts sur xauusd.

L'idée ici est que vous avez besoin d'exactement zéro volume.
 
fxsaber:

Oui.


L'idée ici est que vous avez besoin d'exactement zéro volume.
Il ouvre 0.01 lot sans volume.
int testTicket=OrderSend(Symbol(),OP_SELL,0,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

et ça ne marche pas du tout.

int testTicket=OrderSend(Symbol(),OP_SELL,0,0,0,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,0,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";





 
Igor Makanu:

vérifié, il fonctionne, mais

1. dans la discussion à l'adresse https://www.mql5.com/ru/forum/214590/page6#comment_11947599

Je devrais remplacer le code par return(INIT_SUCCEEDED) ; - Je l'ai essayé et je n'ai pas compris où le conseiller expert manquait ;))

J'ai volontairement mis FAILED dans cet exemple, afin de ne pas avoir à le supprimer manuellement par la suite.

2. je ne comprends pas pourquoi, lorsque je sélectionne les propriétés de l'EA et que je coche une autre case, l'alerte ne réapparaît pas, lorsque je change de TF, tout est normal

Lors d'un changement Long/Short, il n'y a pas d'appel OnDeinit/OnInit.

 
Je ne comprends pas comment l'exécuter((
Dossiers :
 
fxsaber:

Pas d'appel OnDeinit/OnInit lors du changement de Long/Short.

comportement étrange, normalement OnIniT() est exécuté après l'appel de la fenêtre des paramètres.


Lomonosov1991:
Je ne comprends pas comment l'exécuter((

joindre l'échantillon, le dézipper et le disperser dans des dossiers

Dossiers :
MQL4.zip  5 kb