Demandez ! - page 151

 

MetaTrader et le carnet d'ordres

Ok, je dois dire que les variables prédéfinies "Ask" et "Bid" stockent les meilleurs ordres actuellement... Mais qu'en est-il des autres niveaux et lots du carnet d'ordres ? Puis-je quand même utiliser ces données dans mon code ?

S'il vous plaît aidez-moi, j'ai cherché beaucoup partout sur le web mais je n'ai pas trouvé la réponse.

prota

 

Une petite question...

Mec, si je fais le gras, je n'ai pas besoin de faire le souligné, c'est ça ?

if(Ask>=Line1)

{

posisi=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slipage,0,0, "OneLineEA ver 1.0",Megic,0,Green) ;

if(OrderSelect(posisi,SELECT_BY_TICKET)==true)

{

posisi=OrderTicket() ;

}

}

 

Aidez-moi, s'il vous plaît

HI codersguru

Merci beaucoup pour vous

S'il vous plaît, pouvez-vous m'expliquer cette phrase et sa signification ?

for(int shift = Bars-10 ; shift >= 0 ; shift--)

{

ExtMapBuffer1[shift] = ma[shift] ;

ExtMapBuffer2[shift] = ma[shift] ;

//Imprimer (ma[shift]) ;

si (ma[shift] > ma[shift+1])

{

ExtMapBuffer1[shift] = EMPTY_VALUE ;

ExtMapBuffer2[shift+1] = ma[shift+1] ;

}

else if (ma[shift] < ma[shift+1])

{

ExtMapBuffer2[shift] = EMPTY_VALUE ;

ExtMapBuffer1[shift+1] = ma[shift+1] ;

}

DANS CET EA

//---- paramètres de l'indicateur

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

//---- tampons

double ExtMapBuffer1[] ;

double ExtMapBuffer2[],ma[] ;

extern int MAType = 1 ;

extern int MAPeriod = 34 ;

extern int MAShift = 0 ;

extern int PriceType=0 ;

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

//| Fonction d'initialisation de l'indicateur personnalisé

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

int init()

{

//---- 2 tampons supplémentaires sont utilisés pour le comptage.

IndicatorBuffers(5) ;

//---- paramètres de dessin

SetIndexBuffer(0,ExtMapBuffer1) ;

SetIndexBuffer(1,ExtMapBuffer2) ;

SetIndexBuffer(2,ma) ;

SetIndexStyle(0,DRAW_LINE,0,2) ;

SetIndexStyle(1,DRAW_LINE,0,2) ;

//---- initialisation terminée

return(0) ;

}

int start()

{

for(int i = Bars-10 ; i >= 0 ; i--)

{

ma=iMA(NULL,0,MAPeriod,MAShift,MAType,PriceType,i) ;

}

for(int shift = Bars-10 ; shift >= 0 ; shift--)

{

ExtMapBuffer1[shift] = ma[shift] ;

ExtMapBuffer2[shift] = ma[shift] ;

//Imprimer (ma[shift]) ;

si (ma[shift] > ma[shift+1])

{

ExtMapBuffer1[shift] = EMPTY_VALUE ;

ExtMapBuffer2[shift+1] = ma[shift+1] ;

}

else if (ma[shift] < ma[shift+1])

{

ExtMapBuffer2[shift] = EMPTY_VALUE ;

ExtMapBuffer1[shift+1] = ma[shift+1] ;

}

}

return(0) ;

}

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

merci

 

Ce n'est pas EA, c'est l'indicateur, qui vous montre les moments où l'indicateur"Moving Average" monte ou descend.

Le code dont vous avez besoin calcule les dix dernières barres seulement.

Mettez-le dans le répertoire /indicateurs et redémarrez votre terminal.

 

la différence

Bonjour à tous

pouvez-vous m'aider

Quelle est la différence entre EMA5c et EMA5p ?

quelle est la moyenne (EMA5c>EMA10c && EMA5pEMA10c))

double EMA5c = iMA(NULL,TimeFrame,5,0,MODE_EMA,PRICE_CLOSE, 0 );

double EMA10c = iMA(NULL,TimeFrame,10,0,MODE_EMA,PRICE_CLOSE,0) ;

double EMA5p = iMA(NULL,TimeFrame,5,0,MODE_EMA,PRICE_CLOSE, 1 );

double EMA10p = iMA(NULL,TimeFrame,10,0,MODE_EMA,PRICE_CLOSE,1) ;

 

Les noms ne sont que des noms de variables et n'ont pas vraiment de signification en tant que tels. Les programmeurs choisissent généralement les noms de variables de manière à ce que le type de valeur qu'elles sont censées contenir soit explicite. En regardant ces deux-là, il semble que le programmeur ait choisi d'ajouter le suffixe c à la variable bars actuelle et p à la variable bars précédente.

Lux

 

J'ai une question, j'ai un indicateur qu'un ami m'a donné et que je teste depuis quelques semaines maintenant et je l'adore. Il s'agit d'un indicateur que j'ai reçu d'un ami et que je teste depuis quelques semaines maintenant. Je l'utilise sur des graphiques de 30m pour qu'il n'apparaisse pas trop souvent. Est-ce qu'il y a un moyen de faire en sorte que lorsque la flèche s'affiche pour la position longue, elle ferme ma position courte et passe en position longue, ou s'il n'y a pas de position courte, passe en position longue. Et vice versa avec le signal de position courte ?

 

Je n'ai pas vu de bouton d'édition, alors voici le code. Il ne semble pas qu'il serait trop difficile d'ajouter le code d'achat ou de vente. C'est à partir du code zigzag. Libre ind.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Red

//---- indicator parameters

extern int ExtDepth=12;

extern int ExtDeviation=5;

extern int ExtBackstep=3;

//---- indicator buffers

double ZigzagBuffer[];

double HighMapBuffer[];

double LowMapBuffer[];

int level=3; // recounting's depth

bool downloadhistory=false;

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_SECTION);

//---- indicator buffers mapping

SetIndexBuffer(0,ZigzagBuffer);

SetIndexBuffer(1,HighMapBuffer);

SetIndexBuffer(2,LowMapBuffer);

SetIndexEmptyValue(0,0.0);

//---- indicator short name

IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");

//---- initialization done

return(0);

}

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

//| |

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

int start()

{

int i, counted_bars = IndicatorCounted();

int limit,counterZ,whatlookfor;

int shift,back,lasthighpos,lastlowpos;

double val,res;

double curlow,curhigh,lasthigh,lastlow;

if (counted_bars==0 && downloadhistory) // history was downloaded

{

ArrayInitialize(ZigzagBuffer,0.0);

ArrayInitialize(HighMapBuffer,0.0);

ArrayInitialize(LowMapBuffer,0.0);

}

if (counted_bars==0)

{

limit=Bars-ExtDepth;

downloadhistory=true;

}

if (counted_bars>0)

{

while (counterZ<level && i<100)

{

res=ZigzagBuffer;

if (res!=0) counterZ++;

i++;

}

i--;

limit=i;

if (LowMapBuffer!=0)

{

curlow=LowMapBuffer;

whatlookfor=1;

}

else

{

curhigh=HighMapBuffer;

whatlookfor=-1;

}

for (i=limit-1;i>=0;i--)

{

ZigzagBuffer=0.0;

LowMapBuffer=0.0;

HighMapBuffer=0.0;

}

}

for(shift=limit; shift>=0; shift--)

{

val=Low;

if(val==lastlow) val=0.0;

else

{

lastlow=val;

if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;

else

{

for(back=1; back<=ExtBackstep; back++)

{

res=LowMapBuffer[shift+back];

if((res!=0)&&(res>val)) LowMapBuffer[shift+back]=0.0;

}

}

}

if (Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;

//--- high

val=High;

if(val==lasthigh) val=0.0;

else

{

lasthigh=val;

if((val-High[shift])>(ExtDeviation*Point)) val=0.0;

else

{

for(back=1; back<=ExtBackstep; back++)

{

res=HighMapBuffer[shift+back];

if((res!=0)&&(res<val)) HighMapBuffer[shift+back]=0.0;

}

}

}

if (High[shift]==val) HighMapBuffer[shift]=val; else HighMapBuffer[shift]=0.0;

}

// final cutting

if (whatlookfor==0)

{

lastlow=0;

lasthigh=0;

}

else

{

lastlow=curlow;

lasthigh=curhigh;

}

for (shift=limit;shift>=0;shift--)

{

res=0.0;

switch(whatlookfor)

{

case 0: // look for peak or lawn

if (lastlow==0 && lasthigh==0)

{

if (HighMapBuffer[shift]!=0)

{

lasthigh=High[shift];

lasthighpos=shift;

whatlookfor=-1;

ZigzagBuffer[shift]=lasthigh;

res=1;

}

if (LowMapBuffer[shift]!=0)

{

lastlow=Low[shift];

lastlowpos=shift;

whatlookfor=1;

ZigzagBuffer[shift]=lastlow;

res=1;

}

}

break;

case 1: // look for peak

if (LowMapBuffer[shift]!=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)

{

ZigzagBuffer[lastlowpos]=0.0;

lastlowpos=shift;

lastlow=LowMapBuffer[shift];

ZigzagBuffer[shift]=lastlow;

res=1;

}

if (HighMapBuffer[shift]!=0.0 && LowMapBuffer[shift]==0.0)

{

lasthigh=HighMapBuffer[shift];

lasthighpos=shift;

ZigzagBuffer[shift]=lasthigh;

whatlookfor=-1;

res=1;

}

break;

case -1: // look for lawn

if (HighMapBuffer[shift]!=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)

{

ZigzagBuffer[lasthighpos]=0.0;

lasthighpos=shift;

lasthigh=HighMapBuffer[shift];

ZigzagBuffer[shift]=lasthigh;

}

if (LowMapBuffer[shift]!=0.0 && HighMapBuffer[shift]==0.0)

{

lastlow=LowMapBuffer[shift];

lastlowpos=shift;

ZigzagBuffer[shift]=lastlow;

whatlookfor=1;

}

break;

default: return;

}

}

return(0);

}

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

question d'un nouveau venu

Bonjour à tous

est-il possible de rechercher un indicateur personnalisé sur la bougie précédente ? si oui, que dois-je faire ?

En fait, je veux rechercher la couleur de l'indicateur.

Merci d'avance

 
basalo:
Bonjour à tous

est-il possible de rechercher un indicateur personnalisé sur la bougie précédente ? si oui, que dois-je faire ?

En fait, je veux rechercher la couleur de l'indicateur.

Merci d'avance

Regardez dans le fichier d'aide du metaeditor la fonction iCustom.

Lux