//+------------------------------------------------------------------+//| MACD Sample.mq4 |//| Copyright 2005-2014, MetaQuotes Software Corp. |//| http://www.mql4.com |//+------------------------------------------------------------------+#property copyright"2005-2014, MetaQuotes Software Corp."#property link"http://www.mql4.com"inputdouble TakeProfit =3160;
inputdouble Lots =0.5;
inputdouble TrailingStop =1040;
inputint OpenLevel =22;
inputint CloseLevel=77;
inputintPeriod =85;
inputint Period1 =57;
int LastBars=0;
externint Magic = 110725;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnTick(void)
{
int cnt,ticket,total;
//---// initial data checks// it is important to make sure that the expert works with a normal// chart and the user did not make any mistakes setting external // variables (Lots, StopLoss, TakeProfit, // TrailingStop) in our case, we check TakeProfit// on a chart of less than 100 bars//---//--- Trade only if new bar has arrivedif(LastBars!=Bars) LastBars=Bars;
elsereturn(0);
if(Bars<100)
{
Print("bars less than 100");
return;
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return;
}
//--- to simplify the coding and speed up access data are put into internal variables
total=OrdersTotal();
if(total<1)
{
//--- no opened orders identifiedif(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ",AccountFreeMargin());
return;
}
//--- check for long position (BUY) possibilityif(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period)>iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-TakeProfit*Point,Bid+TakeProfit*Point,"USDCADH4",Magic,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
}
elsePrint("Error opening BUY order : ",GetLastError());
return;
}
//--- check for short position (SELL) possibilityif(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period1)<iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+TakeProfit*Point,Ask-TakeProfit*Point,"USDCADH4",Magic,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
elsePrint("Error opening SELL order : ",GetLastError());
}
//--- exit from the "no opened orders" blockreturn;
}
//--- it is important to enter the market correctly, but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
//--- long position is openedif(OrderType()==OP_BUY)
{
//--- should it be closed?if(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period1)<iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period))
{
//--- close order and exitif(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
Print("OrderClose error ",GetLastError());
return;
}
//--- check for trailing stopif(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
//--- modify order and exitif(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}
else// go to short position
{
//--- should it be closed?if(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period)>iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period1))
{
//--- close order and exitif(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
Print("OrderClose error ",GetLastError());
return;
}
//--- check for trailing stopif(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
//--- modify order and exitif(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}
}
}
//---
}
//+------------------------------------------------------------------+
Bonjour, aidez-moi à comprendre... Le conseiller expert ferme les transactions d'autres personnes ou n'ouvre pas les siennes s'il y a des transactions d'autres personnes.
Bonjour, aidez-moi à comprendre... Le conseiller expert ferme les transactions d'autres personnes ou n'ouvre pas les siennes s'il y a des transactions d'autres personnes.
Où est votre magicien pour trouver des commandes ?
Si c'est écrit ci-dessus, le Conseiller Expert ferme les trades ouverts manuellement,
Si je le dis comme ça
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()&& OrderMagicNumber()==Magic) // check for symbol
S'il y a des transactions ouvertes manuellement, le conseiller expert ne fermera pas les autres transactions, mais il n'ouvrira pas les siennes s'il y a des transactions ouvertes manuellement.
Si c'est écrit ci-dessus, le Conseiller Expert ferme les trades ouverts manuellement,
Si je le dis comme ça
S'il y a des transactions ouvertes manuellement, le conseiller expert ne fermera pas les autres transactions, mais il n'ouvrira pas les siennes s'il y a des transactions ouvertes manuellement.
doivent également être sélectionnés par la magie lors de l'ouverture
Qu'est-ce que c'est ? L'ouverture est indiquée. Le fait est que lorsque vous utilisez plusieurs Expert Advisors, il n'y a pas de problème. Le problème ne se pose que lorsqu'il y a une ouverture manuelle d'une position sur le compte.
Dès que des transactions sont ouvertes manuellement sur le compte, le conseiller expert cesse de fonctionner.
Dès que j'enlève ceci dans le code, total=OrdersTotal() ;
si(total<1)
Les EAs vont tout droit, mais ouvrent beaucoup de transactions
Qu'est-ce que c'est ? L'ouverture est indiquée. Le fait est que lorsque vous utilisez plusieurs Expert Advisors, il n'y a pas de problème. Le problème ne survient que lorsqu'il y a une ouverture manuelle d'une position sur le compte.
Dès que des transactions sont ouvertes manuellement sur le compte, le conseiller expert cesse de fonctionner.
Dès que j'enlève ceci dans le code, total=OrdersTotal() ;
si(total<1)
Les EA vont droit au but, mais ouvrent beaucoup de transactions.
C'est ce dont je parle - OrdersTotal() est pour tous les ordres et vous avez besoin d'un ordre EA.
if(CountOrders("", -1, Magic)<1)
{
открытие ордеров
}
//+----------------------------------------------------------------------------+//| Подсчет ордеров |//+----------------------------------------------------------------------------+//| -1 - Все типы ордеров |//| 0 - ордера типа BUY |//| 1 - ордера типа SELL |//| 2 - ордера типа BUYLIMIT |//| 3 - ордера типа SELLLIMIT |//| 4 - ордера типа BUYSTOP |//| 5 - ордера типа SELLSTOP |//+----------------------------------------------------------------------------+int CountOrders(string symb="", int or_ty=-1, int magiс=-1)
{
int cnt=0;
if(symb=="0") symb=_Symbol;
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos,SELECT_BY_POS)==true)
{
if((OrderSymbol()==symb || symb=="")&&(or_ty<0 || or_ty==OrderType()))
{
if(magiс<0 || OrderMagicNumber()==magiс) cnt++;
}
}
}
return(cnt);
}
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.
J'ai envoyé une demande hier, plus d'un jour s'est écoulé et silence.
1. Allez au distributeur le plus proche, insérez la carte, entrez le code pin...
2. Allez à la banque la plus proche, établissez un contact visuel, puis suivez la situation...
3. Allez au marché. 3) Allez au marché. Allez à la banque. Retirer des fonds (vous pouvez les retirer tous, pas seulement les vôtres...) ...
4. Si vous devez retirer de l'argent de MMM, alors même le réservoir ne vous aidera pas !
Et sérieusement, vous ne pouvez pas !
Bonjour, aidez-moi à comprendre... Le conseiller expert ferme les transactions d'autres personnes ou n'ouvre pas les siennes s'il y a des transactions d'autres personnes.
Bonjour, aidez-moi à comprendre... Le conseiller expert ferme les transactions d'autres personnes ou n'ouvre pas les siennes s'il y a des transactions d'autres personnes.
Si c'est écrit ci-dessus, le Conseiller Expert ferme les trades ouverts manuellement,
Si je le dis comme ça
S'il y a des transactions ouvertes manuellement, le conseiller expert ne fermera pas les autres transactions, mais il n'ouvrira pas les siennes s'il y a des transactions ouvertes manuellement.
Si c'est écrit ci-dessus, le Conseiller Expert ferme les trades ouverts manuellement,
Si je le dis comme ça
S'il y a des transactions ouvertes manuellement, le conseiller expert ne fermera pas les autres transactions, mais il n'ouvrira pas les siennes s'il y a des transactions ouvertes manuellement.
J'ai également besoin d'une sélection sur le nombre magique à l'ouverture.
Qu'est-ce que c'est ? L'ouverture est indiquée. Le fait est que lorsque vous utilisez plusieurs Expert Advisors, il n'y a pas de problème. Le problème ne se pose que lorsqu'il y a une ouverture manuelle d'une position sur le compte.
Dès que des transactions sont ouvertes manuellement sur le compte, le conseiller expert cesse de fonctionner.
Dès que j'enlève ceci dans le code, total=OrdersTotal() ;
si(total<1)
Les EAs vont tout droit, mais ouvrent beaucoup de transactions
Qu'est-ce que c'est ? L'ouverture est indiquée. Le fait est que lorsque vous utilisez plusieurs Expert Advisors, il n'y a pas de problème. Le problème ne survient que lorsqu'il y a une ouverture manuelle d'une position sur le compte.
Dès que des transactions sont ouvertes manuellement sur le compte, le conseiller expert cesse de fonctionner.
Dès que j'enlève ceci dans le code, total=OrdersTotal() ;
si(total<1)
Les EA vont droit au but, mais ouvrent beaucoup de transactions.
C'est ce dont je parle - OrdersTotal() est pour tous les ordres et vous avez besoin d'un ordre EA.
C'est ce dont je parle, OrdersTotal() représente toutes les commandes et vous voulez les commandes de l'EA.
C'est au lieu de
total=OrdersTotal() ;
if(total<1) ou est-ce qu'on laisse celui-là aussi ?