Comment coder ? - page 58

 

Je pensais l'avoir résolu, mais non.

Ce que j'essaie de faire est d'avoir un commentaire sur le graphique et dans le journal indiquant quelle condition d'entrée a été utilisée pour ouvrir la position actuelle.

Est-ce que cela a déjà été fait et comment le faites-vous ? J'essaie depuis un certain temps maintenant mais sans succès et ce n'est pas aussi facile que je le pensais.

Voici ma dernière tentative.

Toute aide serait la bienvenue

buysig = Long || Long2 || Long3 || Long4 ;

sellsig = Short || Short2 || Short3 || Short4 ;

closebuy=sellsig ;

closesell=buysig ;

si (curprof>=AccountEquity()*ProfitExit/100.0) {

exit=true ;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true ;

}

}

void CheckForOpen() {

int res,tr ;

//---- conditions de vente

co=CalculateCurrentOrders(Symbol()) ;

if(sellsig && lastsig!=-1) {

si ( Short == true)Print(" Signal court pris ") ;

si ( Short2 == true)Print(" Signal Short2 pris ") ;

si ( Short3 == true)Print(" Signal Short3 pris ") ;

si ( Short4 == true)Print(" Signal Short4 pris ") ;

co=CalculateCurrentOrders(Symbol()) ;

si (co==0) {

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1) ;

}

lastsig=-1 ;

last=Time[0] ;

retour ;

}

//---- conditions d'achat

co=CalculateCurrentOrders(Symbol()) ;

if(buysig && lastsig!=1) {

si ( Long == true) Print(" Signal long pris ") ;

si ( Long2 == true)Print(" Signal long2 pris ") ;

if ( Long3 == true) Print(" Signal Long3 pris ") ;

si ( Long4 == true)Print(" Signal Long4 pris ") ;

co=CalculateCurrentOrders(Symbol()) ;

si (co==0) {

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1) ;

}

last=Time[0] ;

lastsig=1 ;

retour ;

}

}

bool CloseAtMarket(int ticket,double lot) {

//fermeture d'un ordre de marché tolérant aux défauts

bool bres=false ; int tr ;

tries=0 ;

while (!bres && tries<OrderTriesNumber) {

RefreshRates() ;

bres=OrderClose(ticket,lot,OrderClosePrice(),slippage,Blanc) ;

essais++ ;

tr=0 ; while (tr<5 && !IsTradeAllowed()) { tr++ ; Sleep(2000) ; }

}

if (!bres) Print("Error closing order : ",ErrorDescription(GetLastError())) ;

}

int OpenStop(int mode,double lot, double prc, int SL, int TP) {

int res,tr,col ;

chaîne de caractères ;

double prc,sl,tp,stlev ;

essais=0 ;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Point ;

while (res<=0 && tries<OrderTriesNumber) {

tr=0 ; while (tr<5 && !IsTradeAllowed()) { tr++ ; Sleep(2000) ; }

RefreshRates() ;

if (mode==OP_SELLSTOP) {

si (prc<=Bid-stlev) openprice=prc ;

sinon openprice=Bid-stlev ;

si (SL>0) sl=openprice+SL*Point ;

si (TP>0) tp=openprice-TP*Point ;

col=Red ;

} else

si (mode==OP_BUYSTOP) {

si (prc>=Ask+stlev) openprice=prc ;

sinon openprice=Ask+stlev ;

si (SL>0) sl=openprice-SL*Point ;

si (TP>0) tp=openprice+TP*Point ;

col=Bleu ;

} else return ;

Print(Ask," ",Bid," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ") ;

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+ MagicNumber, MagicNumber,0,col) ;

essais++ ;

}

if (res<=0) Print("Error opening pending order: ",ErrorDescription(GetLastError())) ;

return(res) ;

 

Cet EA ne se compile même pas, le stoploss devrait être le dernier de vos soucis. Il y a 5 variables qui ont des espaces aléatoires ou la première lettre n'est pas en majuscule !

 
jturns23:
Cet EA ne sera même pas compilé, le stoploss devrait être le dernier de vos soucis. Il y a 5 variables qui ont des espaces aléatoires ou la première lettre n'est pas en majuscule !

Voici la version corrigée.

Mais il ne peut toujours pas ouvrir de position car il n'y a pas de logique dans le code pour décider comment ouvrir des positions longues / courtes.

 
 

Aide avec cet EA

Michel:
Qui est ce CHinGsMAroonCLK ?

Si je me souviens bien, cet EA n'est rien d'autre que 10p3 de elCactus, mais peut-être que je me trompe...

Vérifiez son fil, vous trouverez probablement ce que vous cherchez : https://www.mql5.com/en/forum/174975

Ok... alors maintenant le problème est que je ne peux pas mettre un stoploss pour cette EA... quel est le code ? pouvez-vous m'aider ? merci.

 

aucune zone de trading - aide au code

Bonjour à tous,

J'ai essayé de modifier un code, mais après beaucoup d'efforts, je n'ai toujours pas réussi à le faire correctement.

L'idée est d'arrêter le prochain trade si la gamme de prix est dans la même zone que le trade précédent. La transaction longue vérifiera la zone de la dernière transaction longue en POSITION OUVERTE, et la transaction courte vérifiera la zone de la dernière transaction courte en POSITION OUVERTE.

Par exemple, si la première position longue est à 1,4000, la deuxième position longue ne se déclenchera que si le prix sort de la zone (zone de 20 pips) inférieure à 1,3990 et supérieure à 1,4010.

Merci à tous...

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

//| Filtre pour les marchés latéraux - empêcher les transactions multiples dans une fourchette de prix similaire et créer une zone d'interdiction de transactions |

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

extern int Zone1 = -10 ; // (zone inférieure)

extern int Zone2 = 10 ; // (zone supérieure)

// zone de non échange entre -10 et +10 de l'échange précédent

bool CheckZone(int type)

{

int cnt = OrdersTotal() ;

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

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue ;

if (OrderSymbol() != Symbol()) continue ;

if (OrderMagicNumber() != Magic) continue ;

if (OrderType() != type) continue ;

if (type == OP_BUY)

{

if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false) ;

}

if (type == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false) ;

}

}

return(true) ;

}

 

Résoudre le problème de l'EA

Bonjour à tous les programmeurs MQL,

Veuillez vérifier le code suivant et me dire pourquoi il ne place pas les transactions sur mon compte de démonstration. C'est un bon EA sur GJ 1m mais malheureusement il ne fonctionne pas. Est-ce que quelqu'un peut le réparer s'il vous plaît et le rendre utilisable comme un EA sans bug.

Je vous remercie d'avance !

Meilleures salutations.

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

extern int Length1 = 3 ;

extern int Length2 = 10 ;

extern int Length3 = 16 ;

double Histo[] ;

double MaHisto[] ;

double up[] ;

double dn[] ;

double upMode[] ;

double dnMode[] ;

int alertBar ;

int init()

{

retour(0) ;

}

int deinit()

{

return(0) ;

}

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

if(counted_bars<0) counted_bars=0 ;

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

for(int i = 0 ;i <= limite ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i) ;

for(int j = 0 ;j <= limite ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j) ;

for(int m = 0 ;m <= limite ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Point) ;

if(Bars > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Ask) ;

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,0,Red) ;

alertBar = Bars ;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Point) ;

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,Red) ;

alertBar = Bars ;

}

}

else

{

up[m] = EMPTY_VALUE ;

dn[m] = EMPTY_VALUE ;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m] ;

dnMode[m] = Low[m] ;

}

sinon si( MaHisto[m] < 0 )

{

dnMode[m] = High[m] ;

upMode[m] = Low[m] ;

}

}

return(0) ;

}

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

 
arsenic786:
Bonjour à tous les programmeurs MQL,

Veuillez vérifier le code suivant et me dire pourquoi il ne place pas les transactions sur mon compte de démonstration. C'est un bon EA sur GJ 1m mais malheureusement il ne fonctionne pas. Est-ce que quelqu'un peut le réparer s'il vous plaît et le rendre utilisable comme un EA sans bug.

Je vous remercie d'avance !

Meilleures salutations.

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

extern int Length1 = 3 ;

extern int Length2 = 10 ;

extern int Length3 = 16 ;

double Histo[] ;

double MaHisto[] ;

double up[] ;

double dn[] ;

double upMode[] ;

double dnMode[] ;

int alertBar ;

int init()

{

retour(0) ;

}

int deinit()

{

return(0) ;

}

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

if(counted_bars<0) counted_bars=0 ;

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

for(int i = 0 ;i <= limite ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i) ;

for(int j = 0 ;j <= limite ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j) ;

for(int m = 0 ;m <= limite ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Point) ;

if(Bars > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Ask) ;

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,0,Red) ;

alertBar = Bars ;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Point) ;

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,Red) ;

alertBar = Bars ;

}

}

else

{

up[m] = EMPTY_VALUE ;

dn[m] = EMPTY_VALUE ;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m] ;

dnMode[m] = Low[m] ;

}

sinon si( MaHisto[m] < 0 )

{

dnMode[m] = High[m] ;

upMode[m] = Low[m] ;

}

}

return(0) ;

}

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

"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,R ed) ; "

Vous vendez au prix Ask, qui devrait être Bid.

Le champ Commentaire devrait être "", et non 0.

25 comme SL devrait être Bid+25*Point.

15 comme TP devrait être Bid-15*Point.

"R ed" n'est pas une couleur.

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,R ed) ; "

Vous vendez au prix d'achat (Ask), vous devriez dire au prix de vente (Bid).

Le champ Commentaire devrait être "", et non 0.

25 comme SL devrait être Bid+25*Point.

15 comme TP devrait être Bid-15*Point.

"R ed" n'est pas une couleur.

Merci beaucoup pour votre aide !

Mais, je suis toujours confronté à des problèmes aucune connaissance de MQL. Pouvez-vous s'il vous plaît copier coller le code dans le fichier mq4 et le tester sur la démo et ensuite me dire si cela fonctionne bien. Votre soutien sera considéré comme une aide précieuse, Michel.

Meilleures salutations,

Kashif.

 

Non, désolé, je n'ai pas assez de temps pour le moment.

Dans quelques heures je prends un bateau pour retourner dans ma famille pour Noël ... et plus de pc ...

Raison: