Brauche Rat von einem Schleppnetzprofi, der zwei Positionen unabhängig voneinander steuert, wie kann das umgesetzt werden? - Seite 6

 
charony:

So in etwa funktioniert das.


Ich bin nur nicht an den Kriterien für die Aktivierung eines Schleppnetzes interessiert.

Ich brauche ein Schleppnetz, das jede offene Position getrennt von den anderen behandelt

Bei diesem Trail werden nur Positionen durchsucht, die im Plus sind, bei negativen Positionen werden keine Stopps gesetzt.

"Es ist möglich, beide Positionen mit einem 50-Pips-Schleppnetz zu versehen,

aber sie werden nicht zur gleichen Zeit geschlossen.

Beide Positionen haben ein 50-Pips-Schleppnetz".

Beide werden nur geschlossen, wenn sie im Plus sind, wenn einer im Plus und der andere im Minus ist, dann wird der Stopp nur am Plus bewegt.

 
PozitiF:

Ich habe nicht alle Seiten gelesen, aber ich glaube, ich habe das Wesentliche verstanden.

https://www.mql5.com/ru/articles/1390 hier, erstellen Sie ein Array mit Aufträgen, wenn Sie einen Auftrag erstellen, nehmen Sie eine Magie von irgendwo, können Sie schreiben, Magic = 1 in den Eingabeparametern des EA, zum Beispiel, und erhöhen Sie den Wert um 1 mit der nächsten offenen Bestellung,

Wenn das Terminal abstürzt, können Sie das Array wiederherstellen.

Den Trull, den Magic als Parameter nimmt, habe ich auf der vorherigen Seite geschrieben.



Es ist nicht das richtige Array, man kann int und double nicht zusammen in dasselbe Array packen.
 
charony:

Das Array ist falsch, man kann int und double nicht zusammen in dasselbe Array setzen.
Sie können, es wird einfach eine ganze Zahl vor den Punkt gesetzt.
 
PozitiF:
Sie können, es wird einfach eine ganze Zahl vor den Punkt gesetzt.


doppelter Preis EUR/USD 1.3915 in int 1

int sell = 1, in double sell = 1.0

Suchen Sie dann, warum das Programm nicht funktioniert????????

oder noch schlimmer, Onkel "Kolya Margin" kommt vorbei.

 

Und warum sollten Sie den Preis in "int" setzen, ich habe nichts darüber geschrieben oder es überhaupt vorgeschlagen.

Ich habe geschrieben, dass man die Zahl int in eine Variable vom Typ double einfügen kann.

von double dann wieder zurück zu int und alles funktioniert wieder für Sie) https://www.mql5.com/ru/forum/136406

 

Ich setze int MN= TimeCurrent(); und dies OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green);

d.h. jedem Auftrag ist eine Magie zugeordnet

im Schleppnetz nach der Auswahl

int Tip=OrderType();

if(OrderSymbol()!=Symbol()||Tip>1)continue;

if(BestellMagischeNummer()==MN)

Ich werde es jetzt versuchen.

 

Nein, irgendetwas anderes muss falsch sein, ich spreche jetzt von dem Schleppnetz.

Wir werden nach ihr suchen.

 
PozitiF:

Und warum sollten Sie den Preis in "int" setzen, ich habe nichts darüber geschrieben oder es überhaupt vorgeschlagen.

Ich habe geschrieben, dass man die Zahl int in eine Variable vom Typ double einfügen kann.

von double dann wieder zurück zu int und alles funktioniert wieder) https://www.mql5.com/ru/forum/136406

doppelter Preis EUR/USD 1,3915 in int 1 und dann wieder in double und Sie erhalten 1,0.

Doppelter Preis EUR/USD 1,3915 =========> Doppelter Preis1,0

wo lachen??????????????????



int 1------> double 1.0 ------> int 1 wird hier wahrscheinlich funktionieren, aber es ist nicht cool

 
charony:

Nein, irgendetwas anderes muss falsch sein, ich spreche jetzt von dem Schleppnetz.

Ich werde danach suchen.

Trall funktioniert zu 100%, es funktioniert in fast allen meinen EAs.

int Trall = 50;

int MN= TimeCurrent();

OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green);

int Tip=OrderType();

if(OrderSymbol()!=Symbol()||Tip>1)continue;
for(int i = 0; i<OrderTotals(); i++){
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true){
      if(OrderMagicNumber()==MN) TrailingStop(Trall, 5, MN);
   }
}

Es sollte ein Schleppnetz sein.

 
//+-----------------------------trailingstop----------------------------------------------+
 total=OrdersTotal();
    for(int n=0;n<total;n++)
     {
      if(OrderSelect(n, SELECT_BY_POS, MODE_TRADES) == true)
         { 
         int Tip=OrderType();                  
         if(OrderSymbol()==Symbol()&&OrderType()==Tip)
            {
                MN = OrderMagicNumber();
                TrailingStop(level_ts, level_step , MN);
            } 
         }    
      }
 
  

   
   return;                             // exit start()
  }
//+-----------------------------start end----------------------------------------------+

void TrailingStop(int level_ts,int level_step , int MN) 
{
   int ot, err, quantity_orders, cx;
   bool fm;
   double op, as, bd, pt, sl, tp, ut;
//----
   quantity_orders = OrdersTotal();
   if(quantity_orders >= 0) {
      for(cx = 0; cx < quantity_orders; cx++) {
         if(!OrderSelect(cx, SELECT_BY_POS, MODE_TRADES)) {
            Print("Error: SimpleTrailing(), OrderSelect: " + cx + ". Îøèáêà: " + GetLastError());
         }
         if (OrderMagicNumber()==MN ) 
         {   
            pt = MarketInfo(OrderSymbol(), MODE_POINT);
            bd = MarketInfo(OrderSymbol(), MODE_BID);
            as = MarketInfo(OrderSymbol(), MODE_ASK);
            op = OrderOpenPrice();
            ot = OrderType();
            sl = OrderStopLoss();
            tp = OrderTakeProfit();
            ut = level_ts + level_step;
         
            if(ot == OP_BUY) {
               if(sl == 0 || sl < op) {                              
                  if(op <  (bd - ut * pt)) {                         
                     sl = bd - level_ts * pt;
                  }
               }
               else {
                  if(sl < (bd - ut * pt) && bd > (op + ut * pt)) {
                     sl = bd - level_ts * pt;
                  }
               }
            }
            if(ot == OP_SELL) {
               if(sl == 0 || sl > op) {
                  if(op > (as + ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
               else {
                  if(sl > (as + ut * pt) && as < (op - ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
            }
            if (sl != OrderStopLoss()) {
               op = NormalizeDouble(op, Digits);
               tp = NormalizeDouble(tp, Digits);
               sl = NormalizeDouble(sl, Digits);
               fm = OrderModify(OrderTicket(), op, sl, tp, 0, CLR_NONE);
               
            }
         }
      }
   }
}

//+-----------------------------trailingstop end----------------------------------------------+

Ich habe den Code eingefügt, das Schleppnetz funktioniert.

aber das Problem bleibt bestehen.