Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 221
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'ai trouvé sur le forum que cela est possible : https://www.mql5.com/ru/forum/141467.
Et où puis-je trouver un émulateur de tique ?
Il n'est donc pas possible d'implémenter l'émulation des tics le week-end avec MQL4 ???
Juste sur cette page, dont le lien est indiqué dans votre message. Lisez-le plus attentivement.
Oui, j'étais stupide. J'ai juste besoin de start() ; démarrer en plus via init(){}...
int init(){start();}
...
void start(){...}
Merci, j'ai compris.
Comment puis-je échanger mes bonus contre de l'argent ?
Les bonus de qui ?
J'ai le code suivant :
extern datetime start = D'2013.10.17 23:59' ;
int start()
{
int b1=iBarShift(Symbol(),0,start,0) ;
double hb=iHigh(Symbol(),0,b1) ; //barre
double hb2=iHigh(Symbol(),0,b1-1) ; //barre de demain à partir de la date spécifiée
Pourriez-vous me dire comment mettre le jour d'hier à partir de la date spécifiée, car double hb3=iHigh(Symbol(),0,b1+1) ; ne fonctionne pas...
Salut à tous ! !! J'ai un EA qui ouvre des ordres contre le mouvement, comment changer ou conseiller où changer ? ???
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)) ;
Comment faire une recherche de "Fonds :" (AccountEquity()) ?
Paramètres
extern double TrailingStart = 10000 ; // Niveau de trailing
extern double TrailingStop = 100 ; // Taille de la trailing
extern double TrailingStep = 10 ; // pas de traînage
Comment trouver deux fractales supérieures/inférieures dans une rangée ? La photo ci-dessous.
J'ai essayé d'écrire un indicateur, mais je n'ai pas bien réfléchi.
Peut-être que quelqu'un a vu un tel indicateur prêt ?