[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 356

 
Garifyanov:

Une autre question : comment ajouter des indicateurs à MT4 ?


merci

La documentation et le tutoriel ne vous aident-ils pas ?
 
artmedia70:
La documentation et le manuel ne sont-ils pas utiles ?


Merci, je vais vérifier maintenant.
 
Bonjour, Je n'arrive pas à trouver un indicateur qui dessine des lignes horizontales sur deux jours sur le haut, bas d'une bougie temporelle connue. Envoyez-moi un lien ou peut-être un aperçu d'un indicateur.
 

Pouvez-vous me dire pourquoi l'EA ne fonctionne pas ? Mettez-le en démo (sourires) - ça ne marche pas. Il semble avoir supprimé la fonction au début qui n'autorise les échanges que lors des tests.

extern double Lots=1.0 ;

extern int Begin=10 ;

extern inttern Length=4 ;

extern int EOD=24 ;

extern inttern Pips=5 ;

extern int StopLoss=50 ;

extern int BreakEven=30 ;

extern inttern TakeProfit=80 ;


//+------------------------------------------------------------------+

//| fonction de démarrage de l'expert |

//+------------------------------------------------------------------+

int start()

{

//----

int i,Ticket,LastOrderTime,StartTime,EODTime,Bought=0,Sold=0 ;

double EntryLong, EntryShort, SLLong, SLShort, TPLong, TPShort ;

//Paramètres

si (Symbol()=="EURUSD"){

Début=10 ;

Longueur = 4 ;

EOD=24 ;

Pips=5 ;

StopLoss=50 ;

BreakEven=30 ;

TakeProfit=80 ;

}

else if (Symbol()=="GBPUSD"){

Début=10 ;

Longueur = 4 ;

EOD=24 ;

Pips=5 ;

StopLoss=70 ;

Seuil de rentabilité = 40 ;

TakeProfit=120 ;

}

else {

Début=10 ;

Longueur = 4 ;

EOD=24 ;

Pips=5 ;

StopLoss=50 ;

BreakEven=30 ;

TakeProfit=80 ;

}


//Compter le temps

si(Hour()>=Begin-1)

{

StartTime= StrToTime(Begin+":00") ;

if(DayOfWeek()==5) EODTime = MathMin(StrToTime("22:55"),StrToTime(EOD+":00")) ;

sinon EODTime = StartTime+(EOD-Begin)*3600-60 ;

}

//Set orders

if(CurTime()>= StartTime && CurTime()<StartTime+300){

//Déterminer la gamme

EntryLong =High[Highest(NULL,0,MODE_HIGH,Length*60/Period(),0)]+(Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point ;

EntryShort =Low [Lowest (NULL,0,MODE_LOW, Length*60/Period(),0)]-Pips*Point ;

SLLong =MathMax(EntryLong-StopLoss*Point,EntryShort) ;

SLShort =MathMin(EntryShort+StopLoss*Point,EntryLong) ;

TPLong =EntryLong+TakeProfit*Point ;

TPShort =EntryShort-TakeProfit*Point ;

//Check Orders

for (i=0;i<OrdersTotal();i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUY)) Acheté++ ;

if(Bought>1){ /plus d'un ordre d'achat

si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket() ;

}


if(OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELL))) Vendu++ ;

if(Sold>1){ /plus d'un ordre de vente

si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()) ;

}

}

if(Bought==0){ //pas d'ordre d'achat

si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;

Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,EntryLong,3,SLLong,TPLong,NULL,0,0,Green) ;

si(Ticket<0 && GetLastError()==130)

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLLong,TPLong,NULL,0,0,Green) ;

GlobalVariableSet("LastOrderTime",OrderOpenTime())

}

if(Sold==0){ //pas d'ordre de vente

si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;

Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,EntryShort,3,SLShort,TPShort,NULL,0,0,Green) ;

si(Ticket<0 && GetLastError()==130)

Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLShort,TPShort,NULL,0,0,Green) ;

GlobalVariableSet("LastOrderTime",OrderOpenTime())

}

}

//Gestion des commandes ouvertes

for (i=0;i<OrdersTotal();i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;

si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;

//uzavšenín pozic na konci dne

si(CurTime()>=EODTime){

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket()) ;

if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()) ;

GlobalVariableSet("LastOrderTime",CurTime()) ;

}

//déplacement à BE si profit>BE

else {

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){

si(High[0]-OrderOpenPrice()>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green) ;

GlobalVariableSet("LastOrderTime",CurTime()) ;

}

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){

si(OrderOpenPrice()-Low[0]>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green) ;

GlobalVariableSet("LastOrderTime",CurTime()) ;

}

}

}

}

//Réinitialiser les variables globales à la fin de la journée

si(CurTime()>=EODTime) GlobalVariablesDeleteAll() ;

retour(0) ;

}

//+------------------------------------------------------------------+

 
Bonjour à tous. J'ai installé MT4 FIFTYZNAK. L'indicateur iMA donne 4 chiffres, mais comment obtenir 5 chiffres ? Merci de m'aider à comprendre.
 
MK07:
Bonjour à tous. J'ai installé MT4 FIFTY-ZNAK. L'indicateur iMA donne 4 signes, mais comment recevoir 5 signes ? Merci de m'aider à comprendre.

Il a une valeur à cinq chiffres. Pour voir sa valeur, utilisez

string DoubleToStr( double valeur, int chiffres)

Convertit une valeur numérique en une chaîne de texte contenant la représentation en caractères d'un nombre dans un format de précision spécifié.

Paramètres :


value - Valeur à virgule flottante.

digits - Nombre de chiffres après le point décimal (0-8).


Exemple :
  string value=DoubleToStr(1.28473418, 5);
  // содержимое строки value - "1.28473"
 
laveosa:

Roman... C'est bon de vous voir. J'ai essayé, ça ne marche pas, je ne comprends pas ce qui ne va pas, visuellement il y a un historique pour la période ci-dessus, mais quand on le teste il n'y en a pas ??? :/

Appuyez sur F2 et téléchargez jusqu'à ce que vous soyez inconscient ! ;))
 

Comment indiquer au programme que la barre a touché la moyenne mobile ? Vous n'avez pas besoin d'une valeur maximale ou minimale, vous devez indiquer un toucher.

 
Forexman77:

Comment indiquer au programme que la barre a touché la moyenne mobile ? Vous n'avez pas besoin d'une valeur maximale ou minimale, vous devez indiquer un toucher.

Le maximum (actuel) High[0] est au-dessus de la MA, et par conséquent le minimum (actuel) Low[0] est en dessous de la MA (si je comprends bien, nous parlons de la 0ème barre).
 
TarasBY:
Le maximum (actuel) High[0] est au-dessus de la MA, et par conséquent le minimum (actuel) Low[0] est en dessous de la MA (si je comprends bien, nous parlons de la barre 0).


Si seulement c'était aussi simple. Je veux qu'il s'agisse d'un toucher sans référence à un maximum ou un minimum, de sorte que le programme doit décider si un certain nombre de barres ont touché la moyenne mobile ou non, indépendamment de la direction. Pour être plus précis, le corps de la barre doit toucher l'EMA. Je ne sais pas comment faire. J'ai tout regardé.