[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 217

 
DanLett:

Veuillez me dire ce qu'il faut faire si :

Dans le testeur, tout fonctionne bien, tout se passe comme prévu, mais sur le RealSk, la transaction ne s'ouvre pas.

P.S. J'ai vraiment besoin d'aide, c'est une question de vie ou de mort.

Les conseillers sont-ils autorisés à effectuer des transactions ?
 
DanLett:

Veuillez me dire ce qu'il faut faire si :

Dans le testeur, tout fonctionne bien, tout se passe comme prévu, mais sur le RealSk, la transaction ne s'ouvre pas.

P.S. J'ai vraiment besoin d'aide, c'est une question de vie ou de mort.


Je ne suis pas un expert, peut-être y a-t-il un problème ?

ОrderSelect(i,SELECT_BY_POS,MODE_TRADES)
a été remplacé par MODE_TRADES ?
 

Quel est le problème avec mes maths ?

int modOrder()
{
double currentPrice = Bid;
double currentStoploss = OrderStopLoss();
double profitLine=profitLine();
if (currentPrice >= profitLine)
  {
  OrderModify(getTicket(),0,currentStoploss+1*Point,0,0,Blue);
  }
  Alert("profit line ", profitLine);
  return (0);
}

Mon currentPrice >= profitLine signifie que si profitLine == ou >, n'est-ce pas ?

Mais ça marche pour moi si > d'au moins un point.

 
Comparer des nombres réels (doubles) à une stricte égalité n'est pas la meilleure chose à faire avec eux. Il est plus correct de comparer leur différence à la valeur maximale autorisée.
 
olis: Quel est le problème avec mes maths ?
Avez-vous consulté laFAQ?
 

Ouais, eh bien... Je n'ai pas pensé à ça. Merci. (gloussements)
 
Gek34:

Chers experts, la question sur l'indicateur est supprimée, la solution est venue de manière assez inattendue, j'ai dupliqué les calculs, et oups..... Tout fonctionne.

Mais j'en ai une autre, dont j'aimerais comprendre le fonctionnement. Le code est joint :

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;

double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);

SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;

//----
i=Bars-counted_bars-1;

while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);

//----
i--;
}
return(0);
}


Retiré. J'ai inventé toutes sortes d'absurdités. Il s'est avéré que c'était beaucoup plus simple. J'ai retiré la variable Stark de la fonction de démarrage, pour qu'elle ne soit pas réinitialisée à chaque tic.
 

Lesignal "sig1"est donné , l'ordre BUY est déclenché et l'ordre SELLSTOP en attente est placé sous l'ordre BUY.

Lorsque la position BUY est fermée, le SELLSTOP est également supprimé.

Mais que se passe-t-il lorsque cet ACHAT n'est pas fermé, et que l'ACHAT suivant, etc. est ouvert.

Ce SELLSTOP qui est fixé en premier doit être compris d'une manière ou d'une autre afin de le fermer après que le premier BUY ait été fermé.

En outre, si le prix franchit le seuil en suspens et qu'il ferme ensuite sans perte, le seuil en suspens a été fixé au même endroit que son prédécesseur.

-----------------------------------

Celane résoudra pas le problème car après la fermeture de la vente, une nouvelle vente avec un maître différents'ouvrira et elle sera supprimée.

Après avoir fermé l'achat, je ne sais pas comment.

 int i, k=OrdersTotal(),ti;
    for (i=0; i<k; i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType()== OP_SELLSTOP){
    ti = OrderMagicNumber();  }
    if(OrderType()== OP_BUY)
    if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?

 
Top2n:

Lesignal "sig1"est donné , l'ordre BUY est déclenché et l'ordre SELLSTOP en attente est placé sous l'ordre BUY.

Lorsque la position BUY est fermée, le SELLSTOP est également supprimé.

Mais que se passe-t-il lorsque cet ACHAT n'est pas fermé, et que l'ACHAT suivant, etc. est ouvert.

Ce SELLSTOP qui est fixé en premier doit être compris d'une manière ou d'une autre afin de le fermer après que le premier BUY ait été fermé.

En outre, si le prix franchit le seuil en suspens et qu'il ferme ensuite sans perte, le seuil en suspens a été fixé au même endroit que son prédécesseur.

-----------------------------------

Celane résoudra pas le problème car après la fermeture de la vente, une nouvelle vente avec un maître différents'ouvrira et elle sera supprimée.

après que l'achat soit fermé, je ne sais pas comment.


Eh bien... vous utilisez le même Select pour vérifier...

int i, k=OrdersTotal(), ti, tid;

for (i=0; i<k; i++){
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderType()== OP_SELLSTOP) {
          tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
          ti = OrderMagicNumber();  
          //  ищем ордер по тикету
          if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
             // проверяем Закрылся ли этот ордер - это твоя Байка
             if (OrderCloseTime() > 0) {
                //  удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
                OrderDelete(tid);
             }
          } 
       }
    }
}
 
tu as beaucoup d'idées... crois-moi, tu fais des conneries... ne perdez pas votre temps... votre martingale ne fonctionne pas si facilement...