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

 

Bonjour, messieurs les programmeurs.

Je suis trop paresseux pour regarder le tutoriel. Peut-être savez-vous ce qui devrait être modifié dans votre conseiller expert pour qu'il applique la gestion de l'argent à 0,01 et non à 0,1.

Dossiers :
 
SteelKnight84:

Bonjour, messieurs les programmeurs.

Je suis trop paresseux pour regarder le tutoriel. Peut-être savez-vous ce qui devrait être modifié dans votre conseiller expert pour qu'il applique la gestion de l'argent à 0,01 et non à 0,1.


Tout le monde est trop paresseux
 
Vinin:

Tout le monde est paresseux

C'est une chose pour un programmeur qui connaît le langage d'être trop paresseux pour ouvrir le programme. C'est autre chose quand une personne qui ne connaît pas la langue est trop paresseuse pour apprendre la langue afin de répondre à une question essentiellement simple. Si la connaissance du langage est une nécessité pour un programmeur, cela n'a aucun sens pour moi de m'y plonger :) C'est tout. Mais bien sûr, si personne ne répond, je dois le faire. Mais quel est alors l'intérêt du forum, si seuls les programmeurs communiquent ici ?
 
SteelKnight84:

C'est une chose pour un programmeur qui connaît le langage d'être trop paresseux pour ouvrir un programme. C'est autre chose quand une personne qui ne connaît pas la langue est trop paresseuse pour apprendre la langue afin de répondre à une question essentiellement simple. Si la connaissance du langage est une nécessité pour un programmeur, cela n'a aucun sens pour moi de m'y plonger :) C'est tout. Mais bien sûr, si personne ne répond, je dois le faire. Mais quel est l'intérêt de ce forum si seuls les programmeurs y communiquent ?

S'il n'y a pas d'intérêt - ne posez pas de questions mais directement ici
 
Vinin:

Si ça n'a pas de sens, ne posez pas de questions et venez directement ici.

Merci.
 
SteelKnight84:

Bonjour, messieurs les programmeurs.

Je suis trop paresseux pour regarder le tutoriel. Peut-être savez-vous ce qui devrait être modifié dans votre conseiller expert pour qu'il applique la gestion de l'argent à 0,01 et non à 0,1.


J'ai changé 2 chiffres, pour voir si ça marche comme il faut.

Dossiers :
 

Existe-t-il une option permettant de marquer l'ensemble du forum comme lu ?

Et aussi le forum MQL5...

Merci.

 
ALXIMIKS:


changé 2 chiffres, voir si ça marche comme il faut.


Il s'avère que quelqu'un n'est pas paresseux. J'ai fait une erreur.
 

Bonjour à tous ! !! Merci à tous pour vos conseils avisés. Mais je n'ai toujours pas été capable de faire des progrès sur ce que j'ai commencé ;)) Mon EA ouvre deux ordres identiques et les autres sont contre le mouvement, je veux le changer pour qu'il s'ouvre sur le mouvement ! !! J'ai essayé toutes les variantes.

VEUILLEZ INDIQUER QUI PEUT

chaîne GLOB_START ;

int init()
{
GLOB_START = "@" + DoubleToStr(ID,0) + "@" + "_start" ;
if !GlobalVariableCheck( GLOB_START )GlobalVariableSet(GLOB_START,TimeCurrent()) ;
retour(0) ;
}

int deinit()
{
switch( UninitializeReason() )
{
cas REASON_REMOVE : delete_glob ("@" + DoubleToStr(ID,0) + "@" ) ;
}
if ( IsTesting() )delete_glob ("@" + DoubleToStr(ID,0) + "@" ) ;
retour(0) ;
}

void delete_glob ( string c )
{
int i ;
for ( i = GlobalVariablesTotal()-1 ; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i))
}

int start()
{
Commentaire(Info()) ;
int KOL_BUY = order_total(0) ;
int KOL_SELL = order_total(1) ;
double l ;

si ( order_total() == 0 )
{
ouvert(0,Lot,0,TP) ;
ouvert(1,Lot,0,TP) ;
}

si ( KOL_BUY == 0 && KOL_SELL != 0 )
{
ouvert(0,Lot,0,TP) ;
l = last_trade(1) ;
ouvert(1,l,0,0) ;
modify_orders(1) ;
}

si ( KOL_BUY != 0 && KOL_SELL == 0 )
{
ouvert(1,Lot,0,TP) ;
l = last_trade(0) ;
ouvert(0,l,0,0) ;
modify_orders(0) ;
}

retour(0) ;
}

string Info()
{
int i ;
double buff_1 = 0, buff_2 = 0, buff_3 = 0 ;
chaîne de caractères res = "\n" ;

for( i = OrdersHistoryTotal() - 1 ; i >= 0 ; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ;
if( OrderMagicNumber() == ID )
{
si ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit() ;
si ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit() ;
si ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit() ;
}
}

res = res + "Profit dans la devise de dépôt pour " + TimeToStr(iTime(NULL,PERIOD_D1,0)) + " + DoubleToStr(buff_1,0) + "\n" + "\n" ;
res = res + "Bénéfice en devise de dépôt pour " + TimeToStr(iTime(NULL,PERIOD_D1,1)) + " + DoubleToStr(buff_2,0) + "\n" + "\n" ;
res = res + "Profit dans la devise de dépôt total :" + DoubleToStr(buff_3,0) + "\n" ;
retour(res) ;
}

void modify_orders( int type )
{
int i ;
datetime time_last = 0, time_first = TimeCurrent() ;
double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, level ;

for( i = OrdersTotal() - 1 ; i >= 0 ; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if( OrderMagicNumber() == ID && OrderType() == type )
{
si ( OrderOpenTime() > time_last )
{
op_pr_last = OrderOpenPrice() ;
time_last = OrderOpenTime() ;
}
si ( OrderOpenTime() < time_first )
{
op_pr_first = OrderOpenPrice() ;
time_first = OrderOpenTime() ;
}
}
}


si ( type == 0 )level = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100) ;
si ( type == 1 )niveau = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100) ;

for( i = OrdersTotal() - 1 ; i >= 0 ; i -- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if( OrderMagicNumber() == ID && OrderType() == type && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),level,0)
}
}

double last_trade( int t )
{
int i ;
double res = -1 ;
datetime time=0 ;

for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t)
{
res = OrderLots() ;
time = OrderOpenTime() ;
}
}
si ( multiplicateur )retour(res * Lot_koeff) ;
si ( !multiplicateur )return(res + Lot_koeff) ;
}
int open(int type, double l, double sl=0, double tp=0, string comm = "")
{
int isOpened = 0, try = 0 ;
double s,t ;
while ( IsTradeContextBusy() ){Sleep(500);}
RefreshRates() ;
if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL) ;
if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL) ;
si ( type == 0 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Ask + tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Bid - sl * Point ;
}
si ( type == 1 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Bid - tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Ask + sl * Point ;
}
s = NormalizeDouble(s,Digits) ;
t = NormalizeDouble(t,Digits) ;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID) ;
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID) ;
Dormir (500) ;
while(isOpened<0)
{
while ( IsTradeContextBusy() ){Sleep(500);}
RefreshRates() ;
si ( type == 0 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Bid + tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Bid - sl * Point ;
}
si ( type == 1 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Demande - tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Ask + sl * Point ;
}
s = NormalizeDouble(s,Digits) ;
t = NormalizeDouble(t,Digits) ;
essayer++ ;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID) ;
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID) ;
if(try > 5) break ;
si(isOpened>=0)break ;
Dormir (500) ;
}
if(isOpened<0) Alert("Commande non ouverte, erreur :", GetLastError()) ;
return(isOpened) ;
}

int order_total( int type_1 = -1, int type_2 = -1 )
{
int i ;
int kol=0 ;
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2) )kol++ ;
si(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++ ;
}
retour(kol) ;
}

double check_lot(double &lo)
{
double l = MarketInfo(Symbol(),MODE_LOTSTEP) ;
int ok = 0 ;
while ( l < 1 ){l*=10;ok++;}
if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT) ;
if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT) ;
return(NormalizeDouble(lo,ok)) ;

 

Pouvez-vous suggérer la chose suivante, il y a N EAs sur le compte, qui sous certaines conditions peuvent tous ouvrir un ordre en même temps, chacun d'entre eux ne vérifie pas plus d'un ordre sur le compte, mais parfois je me retrouve avec N ordres, que puis-je faire ?