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

 
beginner666999:
La situation suivante s'est produite : Strategy Tester ne ferme pas les positions par TakeProfit. Le trading se fait sur le TF Day, j'ai regardé le TF plus petit sur les trades à perte - le prix descend/ monte plus que le niveau requis pour le déclenchement du TakeProfit, mais le trade n'est pas fermé, et quand le prix atteint le StopLoss, la perte est fixée. J'ai même essayé la visualisation - le prix passe juste le TakeProfit et c'est tout. Et parfois tout fonctionne, et parfois des choses comme ça apparaissent. Hier encore, tout allait bien, mais aujourd'hui j'ai lancé le testeur et j'ai eu une perte totale de performance. J'ai essayé de réinstaller le terminal - cela n'a pas aidé. Je ne suis pas sûr d'avoir loué une autre société de courtage.

Tout tourne autour de l'écart, c'est augmenté pour le week-end.

C'est comme ça.

 
r772ra:

Tout tourne autour de l'écart, c'est augmenté pour le week-end.

Ça donne quelque chose comme ça.


Merci ! J'attendrai les jours de semaine pour le vérifier.
 
r772ra:

Tout tourne autour de l'écart, c'est augmenté pour le week-end.

C'est comme ça.


Vous devez être un tel crétin - j'ai regardé l'écart pour mon instrument sur le site Web du courtier et j'ai été stupéfait - 11 pips ! Merci encore !
 
Alors une autre question, légèrement hors sujet. Pourquoi augmentent-ils l'écart le week-end ? Après tout, il n'y a pas de commerce en cours de toute façon.
 
Konstebl:

S'il vous plaît, conseillez-nous sur la façon de spécifier correctement la condition. S'il y a un ordre d'achat ouvert, s'il est au seuil de rentabilité, alors nous définissons BUYSTOP :

static bool flag ;

if(NewBar())

flag = true ;

for(i=0;i<total;i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==123)

{

si(OrderType()==OP_BUY)

{

si(OrderStopLoss()>OrderOpenPrice())

{

si(Ask>m && frUP>0 && flag)

{

prix = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits) ;

takeprofit = NormalizeDouble(price+tp*Point,Digits) ;

ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit, "Fractal",123,TimeCurrent()+72000,Blue) ;

si(ticket>0)

flag = false ;

sinon

Print("Erreur ",GetLastError()) ;

}

}

}

}

}

ne fonctionne pas ! !!


Avez-vous essayé de mettre des accolades selon la logique ? Parce que jusqu'à présent, il n'y en a pas.

Ce qui est écrit implique qu'au moins un poste est ouvert. Sinon, il n'en ouvrira pas de nouveaux.

 
Vinin:


Avez-vous essayé de mettre des accolades selon la logique ? Parce que jusqu'à présent, il n'y en a pas.

Ce qui est écrit implique qu'au moins un poste est ouvert. Sinon, aucun nouveau ne sera ouvert


Et comment les organiser ? J'ai écrit un peu plus de code :

 if(NewBar())

     flag = true;    

          for(i=0;i<total;i++)

             {

             OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 

             if(OrderSymbol()==Symbol() && OrderMagicNumber()==123)

                {

                if(OrderType()==OP_BUY || OrderType()<=OP_BUYSTOP)

                   {

                   if(OrderStopLoss()>OrderOpenPrice())

                      {

                      if(Ask>m && frUP>0 && flag)

                         {                

                        price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);

                        takeprofit = NormalizeDouble(price+tp*Point,Digits);

                        ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit,"Fractal",123,TimeCurrent()+72000,Blue);

                       if(ticket>0)

                        flag = false;

                       else

                        Print("Ошибка ",GetLastError());

                      }

                   }

                }

             }

          }
По идее должно работать,но не хочет.
 
beginner666999:
Alors une autre question, légèrement hors sujet. Pourquoi augmentent-ils l'écart les week-ends ? Ils ne font pas de commerce de toute façon.

Non, pas pendant le week-end, je ne l'ai pas écrit correctement, le Spread reste dans le terminal à la dernière cotation qui est arrivée.

Donc vous fermez le terminal pendant la journée du vendredi. Et vous le testez le week-end.

 
r772ra:

Non, pas pendant le week-end, je ne l'ai pas écrit correctement, le Spread reste dans le terminal à la dernière cotation qui est arrivée.

Donc vous fermez le terminal pendant la journée du vendredi. Et vous le testez pendant le week-end.


Je l'ai, merci ! C'est beaucoup plus logique de cette façon.
 
Konstebl:


Et comment je les arrange ? J'ai ajouté un petit bout de code :


OK, un peu de logique

if(NewBar())
    flag = true;    
for(i=0;i<total;i++) {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==123) {
    if(OrderType()==OP_BUY || OrderType()<=OP_BUYSTOP) {
        if(OrderStopLoss()>OrderOpenPrice()) {
            if(Ask>m && frUP>0 && flag) {                
                price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);
                takeprofit = NormalizeDouble(price+tp*Point,Digits);
                ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit,"Fractal",123,TimeCurrent()+72000,Blue);
                if(ticket>0)
                    flag = false;
                else
                    Print("Ошибка ",GetLastError());
            }
        }
    }
}

          }

La boucle est exécutée indépendamment de la condition if(NewBar())

 
Vinin:


Ok, je vais apporter un peu de logique

Le cycle est exécuté indépendamment de la condition if(NewBar())


Je n'ai pas besoin qu'elle dépende de NewBAR(). Cette fonction est nécessaire pour éviter de placer des ordres en tas. Veuillez me dire pourquoi mon code (dans sa dernière variante) fonctionne mieux.

fonctionne, mais dès que je fais de même pour SELLSTOP, les transactions ne s'ouvrent plus du tout ?