Aide au codage - page 477

 

Bonjour maître codeur,

J'essaie d'écrire un indicateur PPO_alt qui est le plot 1 dans les images a et b mais il n'est pas tracé correctement dans le mode temps réel.

J'ai donc essayé de modifier le PPO original (plot 2) mais il n'est toujours pas correct. J'ai donc essayé de modifier l'indicateur orignal PPO (graphique 2), mais il ne fonctionne toujours pas.

Merci d'avance.

PS. Veuillez poser plus de questions si ce n'est pas clair pour vous.

Dossiers :
ppo_mod.rar  80 kb
 
download38:
Bonjour maître codeur,

J'essaie d'écrire un indicateur PPO_alt qui est le graphique 1 dans les images a et b mais il n'est pas tracé correctement en mode temps réel.

J'ai donc essayé de modifier le PPO original (graphique 2) mais il n'est toujours pas correct. J'ai donc essayé de modifier l'indicateur orignal PPO (graphique 2), mais il ne fonctionne toujours pas.

Merci d'avance.

PS. Veuillez poser plus de questions si ce n'est pas clair pour vous.

Pourquoi faites-vous exactement la même chose dans deux boucles ?

 

Bonjour Mladen

besoin d'aide

Je ne reçois pas de devis en direct.

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

//| fonction d'initialisation de l'expert |

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

#property indicator_chart_window

double ExtMapBuffer1[] ;

extern int RSI_periode = 14 ;

extern int RSI_level = 50 ;

extern color BuyColor = clrLime ;

extern color SellColor = clrRed ;

extern int horizontal = 20 ;

extern int vertical = 50 ;

extern int shift = 1 ;

extern double percent = 0.25 ;

extern string fontmode = "Arial" ;

extern int fontsize = 10 ;

extern color fontcolor = clrSkyBlue ;

extern int columnspacing = 100 ;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE) ;

SetIndexBuffer(0,ExtMapBuffer1) ;

//----

return(0) ;

}

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

//| fonction de désinitialisation experte |

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

int deinit()

{

//----

ObjectsDeleteAll() ;

ObjectDelete("INFO") ;

//----

retour(0) ;

}

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

//| fonction de démarrage expert |

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

int start()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"} ;

chaîne de caractères symbole ;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK} ;

chaîne infolabel ;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"} ;

string font = "Terminal" ;

int counted_bars=IndicatorCounted() ;

int symlimit = ArraySize(symlist2) ;

int timelimit = ArraySize(info2) ;

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

{

symbol = symlist2 ;

Display("symlabel" + symbol + i, horizontal,vertical) ;

ObjectSetText("symlabel" + symbole + i, "SYMBOL", fontsize, font, Pink) ;

Display("sym" + symbol + i, horizontal,vertical +((i+1)*18)) ;

ObjectSetText("sym" + symbole + i, "" + symbole + "", fontsize, font, Yellow) ;

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j] ;

Display("infolabel" + j, horizontal+((j+1)*100),vertical) ;

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink) ;

Display("infolabel2" + symbol + ((j+1)*columnspacing), horizontal+((j+1)*100),vertical +((i+1)*18)) ;

ObjectSetText("infolabel2" +symbole+ ((j+1)*espacement des colonnes), infolabel , fontsize, font, fontcolor) ;

}

}

//----

retour(0) ;

}

void Display(string name, int x, int y)

{

ObjectCreate(name, OBJ_LABEL, 0, 0, 0) ;

ObjectSet(name, OBJPROP_CORNER, 0) ;

ObjectSet(name, OBJPROP_XDISTANCE, x) ;

ObjectSet(name, OBJPROP_YDISTANCE, y) ;

ObjectSet(name, OBJPROP_BACK, FALSE) ;

}

 
nbtrading:
Pourquoi faites-vous exactement la même chose dans deux boucles ?

oh, je veux juste tracer une ligne avec des points pour la voir facilement.

La ligne importante est le multihigh avec lequel j'ai un problème.

Merci de demander.

 

"Algorithme de "Close BUY" et de "Close SELL

Bonjour Pro-Coders,

Je me demande si quelqu'un pourrait revoir l'algorithme "Close BUY" et "Close SELL".

L'EA n'ouvre pas de nouvelle position après un stop loss ou un changement de tendance.

Le système ne fait que fermer la position, la prochaine position sera ouverte sur un nouveau changement de tendance, ce qui entraîne une perte d'opportunité.

(Veuillez voir la capture d'écran).

void CheckForClose()

{

RefreshRates() ;

double cl_diCustom0 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,0,bar) ;

double cl_diCustom1 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar) ;

double cl_diCustom2 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar) ;

double cl_diCustom3 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar+1) ;

double cl_diMA3 = iMA(s_symbole,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar) ;

double cl_diMA4 = iMA(s_symbole,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar+1) ;

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;

if(OrderMagicNumber()!= MAGIC) continue ;

if(OrderSymbol() != s_symbol) continue ;

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

//| Close BUY |

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

if(cl_diCustom0!=cl_diCustom1) // Vérifier la tendance

{

if(OrderType()==OP_BUY)

{

if(cl_diCustom0<cl_diCustom1 && cl_diCustom2=cl_diMA4)

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy) ;

si(buyClose==false)

{

int ErrorCode = GetLastError() ;

string ErrDesc = ErrorDescription(ErrorCode) ;

string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode," : ",ErrDesc) ;

if(ShowAlerts == true) Alert(ErrAlert) ;

string ErrLog=StringConcatenate("Bid : ",MarketInfo(s_symbol,MODE_BID)," Lots : ",OrderLots()," Ticket : ",OrderTicket()) ;

Print(ErrLog) ;

}

break ;

} // mod

}

}

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

//| Close SELL |

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

if(cl_diCustom0!=cl_diCustom1)

{

si(OrderType()==OP_SELL))

{

if(cl_diCustom0>cl_diCustom1 && cl_diCustom2>cl_diMA3 && cl_diCustom3<=cl_diMA4)

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell) ;

if(sellClose == false)

{

ErrorCode = GetLastError() ;

ErrDesc = ErrorDescription(ErrorCode) ;

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode," : ",ErrDesc) ;

if(ShowAlerts==true) Alert(ErrAlert) ;

ErrLog=StringConcatenate("Ask : ",MarketInfo(s_symbol,MODE_ASK)," Lots : ",OrderLots()," Ticket : ",OrderTicket()) ;

Print(ErrLog) ;

}

break ;

} // mod

}

}

}

}

Dossiers :
 
tfi_markets:
Bonjour Pro-Coders,

Je me demande si quelqu'un pourrait revoir l'algorithme "Close BUY" et "Close SELL".

L'EA n'ouvre pas de nouvelle position après un stop loss ou un changement de tendance.

Le système ne fait que fermer la position, la prochaine position sera ouverte sur un nouveau changement de tendance, ce qui entraîne une perte d'opportunité.

(Veuillez voir la capture d'écran).

Changez ceci :

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

en ceci

for(int i=OrdersTotal()-1;i>=0 ; i--)

 
mladen:
Faites-nous savoir ce qui s'est passé Peut-être juste un problème d'une version spécifique de Metatrader (j'utilise la version 788 actuellement).

mine build 765

Pruchik a fourni cette version ici,

https://www.mql5.com/en/forum/173588

mais il faut un script supplémentaire pour supprimer les lignes de l'indicateur Gann sq9 s'il est modifié en laissant des lignes sur le graphique.

 

besoin d'aide pour ce problème d'affichage d'informations......

vegadigitalco:
Hello Mladen & All senior Codder

besoin d'aide pour ce problème d'affichage......

Je n'obtiens pas de devis en direct.

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

//| fonction d'initialisation de l'expert |

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

#property indicator_chart_window

double ExtMapBuffer1[] ;

extern int RSI_periode = 14 ;

extern int RSI_level = 50 ;

extern color BuyColor = clrLime ;

extern color SellColor = clrRed ;

extern int horizontal = 20 ;

extern int vertical = 50 ;

extern int shift = 1 ;

extern double percent = 0.25 ;

extern string fontmode = "Arial" ;

extern int fontsize = 10 ;

extern color fontcolor = clrSkyBlue ;

extern int columnspacing = 100 ;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE) ;

SetIndexBuffer(0,ExtMapBuffer1) ;

//----

return(0) ;

}

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

//| fonction de désinitialisation experte |

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

int deinit()

{

//----

ObjectsDeleteAll() ;

ObjectDelete("INFO") ;

//----

return(0) ;

}

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

//| fonction de démarrage expert |

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

int start()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"} ;

chaîne de caractères symbole ;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK} ;

chaîne infolabel ;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"} ;

string font = "Terminal" ;

int counted_bars=IndicatorCounted() ;

int symlimit = ArraySize(symlist2) ;

int timelimit = ArraySize(info2) ;

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

{

symbol = symlist2 ;

Display("symlabel" + symbol + i, horizontal,vertical) ;

ObjectSetText("symlabel" + symbole + i, "SYMBOL", fontsize, font, Pink) ;

Display("sym" + symbol + i, horizontal,vertical +((i+1)*18)) ;

ObjectSetText("sym" + symbole + i, "" + symbole + "", fontsize, font, Yellow) ;

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j] ;

Display("infolabel" + j, horizontal+((j+1)*100),vertical) ;

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink) ;

Display("infolabel2" + symbol + ((j+1)*columnspacing), horizontal+((j+1)*100),vertical +((i+1)*18)) ;

ObjectSetText("infolabel2" +symbole+ ((j+1)*espacement des colonnes), infolabel , fontsize, font, fontcolor) ;

}

}

//----

retour(0) ;

}

void Display(string name, int x, int y)

{

ObjectCreate(name, OBJ_LABEL, 0, 0, 0) ;

ObjectSet(name, OBJPROP_CORNER, 0) ;

ObjectSet(name, OBJPROP_XDISTANCE, x) ;

ObjectSet(name, OBJPROP_YDISTANCE, y) ;

ObjectSet(name, OBJPROP_BACK, FALSE) ;

}
 

Salut les gars, j'ai une petite demande... j'ai essayé d'écrire une fonction qui lit à partir d'un fichier texte et renvoie ses valeurs dans un tableau de chaînes... le fichier texte est formé de plusieurs lignes, chacune d'entre elles est un nom de paire, sauf la première ligne qui est le nombre total de paires

Par ex :

7

CADJPY

CHFJPY

EURJPY

GBPJPY

NZDJPY

USDJPY

AUDJPY

j'ai trouvé sur le site metaquotes le code suivant mais je suis bloqué... je voudrais créer un tableau de chaînes de caractères et après avoir lu la première ligne dans le texte, le redimensionner à cette valeur et ensuite le remplir avec le nom des paires... quelqu'un peut-il m'aider s'il vous plaît ?

int handle, NL,i,pos[];

string str,word;

handle=FileOpen("test.txt",FILE_READ);//try to open file

if(handle==-1)return(0);// if not exist

if(FileSize(handle)==0){FileClose(handle); return(0); } //if empty

while(!FileIsEnding(handle))//read file to the end by paragraph. if you have only one string, omit it

{

str=FileReadString(handle);//read one paragraph to the string variable

if(str!="")//if string not empty

{

NL=0;

for(i=0;i<StringLen(str);i++)

{

if(StringGetChar(str,i)==10)// look for newline (Charcode:10) only

{

NL++;//yes, we found one more newline

ArrayResize(pos,NL);//increase array

pos[NL-1]=i;//write the number of newline position to array

}

}//now we have array with numbers of positions of all newline

for(i=0;i<=NL;i++)//start to read elements of string

{

if(i==0) word=StringSubstr(str,0,pos[0]);//the first element of string (in this case is the number 7)

else word=StringSubstr(str,pos+1,pos-pos-1);

}

}

}

FileClose(handle); //close file

return(0);

 
download38:
Bonjour maître codeur,

J'essaie d'écrire un indicateur PPO_alt qui est le graphique 1 dans les images a et b mais il n'est pas tracé correctement en mode temps réel.

J'ai donc essayé de modifier le PPO original (graphique 2) mais il n'est toujours pas correct. J'ai donc essayé de modifier l'indicateur orignal PPO (graphique 2), mais il ne fonctionne toujours pas.

Merci d'avance.

PS. Veuillez poser plus de questions si ce n'est pas clair pour vous.

Quelqu'un pourrait-il expliquer la différence entre for(i=0 ; i=0 ; i--) et quand on les utilise ?

Merci d'avance.