[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 117

 

Bonjour,

Désolé d'avance pour la grammaire :/. Ma question est la suivante : comment réécrire l'historique des citations (via le code) ? Je voudrais utiliser MT4 pour analyser les données d'un autre courtier.
 
berezhnuy:

Pouvez-vous me dire comment compter tous les zigzags, combien il y en a ?




Écrit dans la variable li_IND, ou comme ceci
count=ArraySize(lda_Extremum);
 
berezhnuy:

Pouvez-vous me dire comment compter tous les zigzags, combien il y en a ?

Si nous faisons ce qui suit :

int fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                           int fi_TF,                  // таймфрейм
                           datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                           int fi_ExtDepth = 12,       // ExtDepth         
                           int fi_ExtDeviation = 5,    // ExtDeviation
                           int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//----
    return (li_IND);
}
- la fonction renvoie le nombre d'extrema trouvés depuis fdt_TimeControl.
 

Merci.

 

Bonjour,

Est-il possible d'entrer un programme avec un poids fixe 1:1 dans les paramètres ?

Si cela est possible, veuillez me dire comment.

Je vous remercie d'avance.

 
Pouvez-vous me dire s'il vous plaît, mes chandeliers changent de couleur toutes les quelques secondes sur le graphique en couleur et de nouveau en noir et blanc. Cela ne s'est jamais produit auparavant. Y a-t-il un moyen de l'éteindre ?
 

Après-midi.

J'ai écrit un code pour ouvrir deux ordres en attente (BuyStop et SellStop) sur les conditions a=true et b=true et après un certain temps l'EA ferme les deux ordres, jusqu'à ce qu'un nouveau signal apparaisse, mais parfois l'EA ouvre 2 ordres en attente dans la même direction. Pourquoi cela se produit-il et comment éviter ce "bug" ?



if (a=true && b=true)
{
int OrderCount = OrdersTotal() ;
if (OrderCount>1) return(0) ;
ticket1=OrderSend(Symbol(), OP_BUYSTOP, getLot(), PriceOpen_Buy, slippage, PriceOpen_Sell,0,0,Green) ;
Sleep(1000) ;

ticket2=OrderSend(Symbol(), OP_SELLSTOP, getLot(), PriceOpen_Sell, slippage, PriceOpen_Buy,0,0,Green) ;

Sleep(1000*59*TimeFrame);

for (int i=OrdersTotal()-1 ; i>=0 ; i--)
{
if ( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break ;
if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket()) ;
if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket()) ;
if (OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage) ;
si (OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage) ;
}

retour(0) ;

}


S'il vous plaît, donnez-moi un indice.

Merci d'avance.

 
r772ra:



Les valeurs de ces variables sont stockées dans des tableaux-traceboxes.

Je veux dire, tu l'as comme ça .

Modalités et conditions,

Merci, je vais essayer de cette façon)
 
Shixan:

Après-midi.

J'ai écrit un code pour ouvrir deux ordres en attente (BuyStop et SellStop) sur les conditions a=true et b=true et après un certain temps l'EA ferme les deux ordres, jusqu'à ce qu'un nouveau signal apparaisse, mais parfois l'EA ouvre 2 ordres en attente dans la même direction. Pourquoi cela se produit-il et comment éviter ce "bug" ?

Veuillez me conseiller.

Merci d'avance.

Peut-être ici :

if (OrderCount>0) return(0);

En fait, beaucoup de choses ne sont pas "dormantes" - Sleep(1000*59*TimeFrame) ; - un nouveau tick est arrivé, votre code a démarré, deux ordres ont été ouverts, puis une pause de "2 heures" (conditionnellement), et ensuite vous essayez de fermer si soudainement un des ordres est devenu négociable aux prix que vous avez obtenus il y a 2 heures - ORIGINAL !!! QUI T'A APPRIS ÇA ?

Vous pouvez fixer dans une variable globale l'heure d'ouverture des ordres et contrôler la différence entre m³ TimeCurrent() et l'heure fixée.

 
Shixan:

Après-midi.

J'ai écrit un code pour ouvrir deux ordres en attente (BuyStop et SellStop) sur les conditions a=true et b=true et après un certain temps l'EA ferme les deux ordres, jusqu'à ce qu'un nouveau signal apparaisse, mais parfois l'EA ouvre 2 ordres en attente dans la même direction. Pourquoi cela se produit-il et comment éviter ce "bug" ?



si (a=vrai && b=vrai)
{
int OrderCount = OrdersTotal() ;
si (OrderCount>1) return(0) ;
ticket1=OrderSend(Symbol(), OP_BUYSTOP, getLot(), PriceOpen_Buy, slippage, PriceOpen_Sell,0,0,Green) ;
Sleep(1000) ;

ticket2=OrderSend(Symbol(), OP_SELLSTOP, getLot(), PriceOpen_Sell, slippage, PriceOpen_Buy,0,0,Green) ;

Sleep(1000*59*TimeFrame);

for (int i=OrdersTotal()-1 ; i>=0 ; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break ;
si (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket()) ;
si (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket()) ;
si (OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask, slippage) ;
si (OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage) ;
}

retour(0) ;

}


Pouvez-vous me donner un indice ?

Merci d'avance

Je n'ai pas regardé votre code, mais... afin de NE PAS placer deux ou plusieurs ordres sur UN seul signal, faites une vérification AVANT de placer un ordre : y a-t-il un ordre déjà placé sur ce signal ? S'il n'y en a pas - mettez-le en place, s'il y en a - fumez, fumez.