Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 512

 
woin2110:

si ((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//ouvre un ordre d'achat.

si (achat>0)
{
Alerte ("L'ordre d'achat stop a été fixé ",buy) ;
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//ouvre un ordre de vente.
si (vente>0)
{
Alert ("SellStop order set ",sell) ;
}
if (DayOfWeek()==5 && Hour()==22) //supprime les ordres en attente et ouverts le vendredi, à 23h00, heure du serveur.
{
si (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,lot,prix de clôture, slippage en pips,couleur de la flèche de clôture sur le graphique){Fermeture de l'ordre de marché pour vendre.
OrderDelete(sell);//fermeture de la limite de vente.
}
si (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket,lot,prix de clôture,slippage en points,couleur de la flèche de clôture sur le graphique)/ordre de marché de clôture à l'achat.
OrderDelete(buy);//fermeture de la limite d'achat.
retour(0) ;
}
}
}

Qui peut me dire pourquoi il ne ferme pas les ordres et ne supprime pas les limites ?


Fermer l'ordre d'achat au prix de l'offre, vendre au prix de la demande.
 
isn-88:

Fermer l'ordre d'achat au prix de l'offre, vendre au prix de la demande.
merci
 
AlexeyVik:
Condition simple dans la fonction init
Les métaux, les stocks et les matières premières ne comptent pas.

Merci. Pouvez-vous me dire quel est le moyen le plus simple. Besoin de comprendre s'il y a des positions ouvertes sur cette paire ou non. S'il y a des ordres de vente et s'il y a des ordres d'achat. Cela signifie que nous devons obtenir

0 - s'il n'y a pas d'ordres ouverts

1-J'ai des ordres de vente mais pas d'ordres d'achat.

2. Il y a des ordres d'achat mais pas d'ordres de vente.

3. Il y a à la fois...

 
woin2110:

https://docs.mql4.com/ru/series

if(DayOfWeek()==1,2..... && Hour()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//définit high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//définir low.

/////////////////////////////////////////////////////////////////////////////////////////////////

double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//définir l'ouverture.


Merci !
 
Zolotai:

Merci. Pouvez-vous me dire quel est le moyen le plus simple. Besoin de comprendre s'il y a des positions ouvertes sur cette paire ou non. S'il y a des ordres de vente et s'il y a des ordres d'achat. Cela signifie que nous devons obtenir

0 - s'il n'y a pas d'ordres ouverts

1-J'ai des ordres de vente mais pas d'ordres d'achat.

2. Il y a des ordres d'achat mais pas d'ordres de vente.

3 - il y a les deux.

Par exemple, comme ceci :

int i_buy=0;

int i_sell=0;

//--- получим количество открытых и отложенных ордеров

int total=OrdersTotal();

for(int i=0;i<total;i++)

{

//--- выберем i-й ордер из списка торговли

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{

//--- если ордер открыт по текущему финансовому инструменту

if(OrderSymbol()==Symbol())

{

switch(OrderType())

{

//--- Бай ордер

case OP_BUY:

i_buy++;

break;

//--- Селл ордер

case OP_SELL:

i_sell++;

break;

case OP_BUYSTOP:

case OP_BUYLIMIT:

case OP_SELLSTOP:

case OP_SELLLIMIT:

//--- пробойники, лимитники

break;

}

}

}

}


if(i_buy==0 && i_sell==0)

{

//--- нет открытых ордеров

}

if(i_buy>0 && i_sell==0)

{

//--- открыты баи

}

if(i_buy==0 && i_sell>0)

{

//--- открыты селы

}

if(i_buy>0 && i_sell>0)

{

//--- открыты и баи и селы

}

 
isn-88:

Par exemple, comme ceci :



Merci beaucoup. D'après ce que j'ai compris, l'asc est le prix actuel. J'ouvre un ordre alors qu'il n'y a aucun ordre ouvert. La boucle va du premier au dernier ordre ouvert ? Comment puis-je transmettre dans une variable le lot du dernier ordre ouvert et son prix ?
 
Zolotai:

Merci beaucoup. D'après ce que j'ai compris, l'asc est le prix actuel. J'ouvre un ordre alors qu'il n'y a aucun ordre ouvert. La boucle va du premier au dernier ordre ouvert ? Comment puis-je définir le lot du dernier ordre ouvert et son prix dans une variable ?

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z ; //déclare une variable "z".
double y ; //déclaration de la variable "y".


if(OrderSelect(10,SELECT_BY_POS)==true) //si la commande (par ticket) est déjà sélectionnée

{

OrderLots()=z //attribue le lot de cette commande à la variable "z".

OrderOpenPrice()=y //attribue le prix d'ouverture à la variable "y".

}

essayez ceci

 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z ; //déclaration de la variable "z".
double y ; //déclaration de la variable "y".


if(OrderSelect(10,SELECT_BY_POS)==true) //si la commande (par ticket) est déjà sélectionnée

{

OrderLots()=z //attribue le lot de cette commande à la variable "z".

OrderOpenPrice()=y //attribue le prix d'ouverture à la variable "y".

}

essayez ceci

y = OrderOpenPrice() ;


Oups, je l'ai, mais je ne comprends pas. if((i_buy==0 && i_sell==0) || y > Step). Doit ouvrir un autre ordre si la distance par rapport au dernier ordre ouvert est supérieure à 5 pips. Mais ça ne marche pas, question.

for(int i=0;i<total;i++) Il va de la première commande ouverte à la dernière ? C'est-à-dire que je devrais finalement obtenir le prix de la dernière commande ouverte.

 
Zolotai:

y = OrderOpenPrice() ;


Je ne comprends pas if((i_buy==0 && i_sell==0) || y > Step). Devrait ouvrir un autre ordre si la distance par rapport au dernier ordre ouvert est supérieure à 5 pips. Mais ça ne marche pas, question.

for(int i=0;i<total;i++) Il va de la première commande ouverte à la dernière ? En d'autrestermes, je devrais obtenir le prix du dernier ordre ouvert.


Je ne sais pas, je ne l'ai pas rencontré.
 

Bonjour. J'ai vu un message sur https://forum.mql4.com/ru/51490/page2 où il y a un script qui ouvre la fenêtre des paramètres EA :

Celui-ci ouvre la fenêtre des paramètres de l'EA :

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

Est-il possible de faire en sorte que le script ouvre la fenêtre des paramètres de l'EA à intervalles de 1 seconde et la confirme immédiatement (en appuyant sur le bouton ok) et ainsi de suite ?

Raison: