Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1815

 
Alexander Avksentyev #:

Das Problem wurde behoben, jetzt funktioniert es. Das ist natürlich nicht richtig, aber es funktioniert.

Er setzt die Stopps falsch, wie kann ich das ändern?

OrderOpenPrice()*Point
OrderStopLoss()* Point

1,12500*Point=0.0000112500

 
Tretyakov Rostyslav #:

1,12500*Point=0.0000112500

Print(/*((*/NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits) 

2021.12.15 00:26:55.086 2021.01.04 00:00:00 test1 EURUSD,M1: 1.22373


Aber wenn man separat zählt
Print(/*((NormalizeDouble((Bid - */OrderOpenPrice()*Point/*),Digits)/*

2021.12.15 00:30:09.557 2021.01.04 00:00:00 test1 EURUSD,M1: 1.2238e-05

Print(/*((NormalizeDouble((*/Bid - OrderOpenPrice()*Point/*
2021.12.15 00:34:05.979 2021.01.04 00:00:00 test1 EURUSD,M1: 1.223727762

 
secret der Auftragsverarbeitung durch den Handelsserver.
In mql5 muss eine solche Funktion von Ihnen selbst geschrieben werden?

OnTradeTransaction

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Avksentyev #:

2021.12.15 00:26:55.086 2021.01.04 00:00:00 test1 EURUSD,M1: 1.22373


Aber wenn man separat zählt

2021.12.15 00:30:09.557 2021.01.04 00:00:00 test1 EURUSD,M1: 1.2238e-05

2021.12.15 00:34:05.979 2021.01.04 00:00:00 test1 EURUSD,M1: 1.223727762

3-4 Stellenlesen

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.12.14
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Vitaly Muzichenko #:

OnTradeTransaction

Ich danke Ihnen. Ich habe Mitleid mit den Algotradern auf MT5.
 
secret #:
Ich danke Ihnen. Nur die Hölle) Ich habe Mitleid mit den Algotradern auf mt5.

Es lohnt sich, in mt5 werden die Aufträge um ein Vielfaches schneller bearbeitet. Und das Testen ist plausibler, es gibt fast keine Testergräber.

 
Vitaly Muzichenko #:

Lesen Sie drei oder vier Beiträge.

Ja, das habe ich. Jetzt habe ich es.

Danke, ich dachte, es sei ein Fehler, aber das ist die Norm.
 
Tretyakov Rostyslav #:

1,12500*Point=0.0000112500

Ich habe alles korrigiert, das Ergebnis hat sich nicht geändert.

Vielleicht liegt es an der Logik?

Nun, irgendwie öffnet es die TSL, aber als Haltestelle

 
Alexander Avksentyev #:

Ich habe es korrigiert, aber das Ergebnis hat sich nicht geändert.

Vielleicht liegt es an der Logik?

Nun, irgendwie öffnet sie die TSL, aber als Haltestelle.

Ihre Funktion sieht folgendermaßen aus:

NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits)

NormalizeDouble((1,12700 - 1,12500/100000),5)

Sie müssen verstehen, was"Punkt" bedeutet.

Machen Sie einen Abdruck.

Print(DoubleToString(NormalizeDouble(Point,Digits),Digits));
 
Tretyakov Rostyslav #:

Ihre Funktion sieht folgendermaßen aus:

NormalizeDouble((1,12700 - 1,12500/100000),5)

Sie müssen verstehen, was"Punkt" bedeutet.

Druck erstellen

vor

void TrailSL()
{
 if(iTrailStart <= 0.0)return; 
 double tp,sl_lev;
 for(int i=OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       {
        if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
           if(OrderType() == OP_BUY) 
             {
              if(iTrailTakeProfit > 0.0)
                {
                tp=OrderTakeProfit() + NormalizeDouble(iTrailTakeProfit * Point(),_Digits);
                if(NormalizeDouble(((tp - OrderTakeProfit())) < 0.0,Digits))return;
                tp = OrderTakeProfit();
                }else tp = 0.0;
                if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) <= iTrailStart * MarketInfo(Symbol(),MODE_POINT) );//true
                   {
                    if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0 && NormalizeDouble(Bid - OrderStopLoss(),Digits) <= iTrailDist * MarketInfo(Symbol(),MODE_POINT));//true
                      {
                      if(iTrailStep > 0.0 && OrderStopLoss() != 0.0 && NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT));//true
                        {
                         sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT);
                         if(NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL));//false
                           {
                            if(!OrderModify(Forder,OrderOpenPrice(),sl_lev,tp,0,Red))return;
                            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
                           }
                        }
                      }
                   }
                }
             }

nach

void TrailSL()
{
   if (iTrailStart <= 0.0 || iTrailStep <= 0.0)
      return; 
      
   double sl_lev;
         
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(!OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         continue;
      
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)
         continue;  
         
      if(OrderType() == OP_BUY) 
      {
         if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) < iTrailStart * MarketInfo(Symbol(),MODE_POINT) )
            continue;

         if (OrderStopLoss() >= OrderOpenPrice() || NormalizeDouble(Bid - OrderStopLoss(), Digits()) < iTrailDist * MarketInfo(Symbol(),MODE_POINT))
            continue;

         if (OrderStopLoss() == 0.0 || NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT))
            continue;

         sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT);
         if (NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL))
            continue;
            
         if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed))
            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
      }}}

Aber jetzt lässt es sich überhaupt nicht mehr einschalten.

Keine Fehler im Compiler oder Terminal, lässt sich nur nicht einschalten.

Was ist das magische Problem?

Was ist das?

Entschuldigung für die Störung.

Grund der Beschwerde: