Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 586

 
Alexey Kozitsyn:

Verwenden Sie eine Variable vom Aufzählungstyp ENUM_TIMEFRAMES.

Ich danke Ihnen!
 
Alexey Kozitsyn:

Verwenden Sie eine Variable vom Aufzählungstyp ENUM_TIMEFRAMES.

Kann ich von allen Primzahlen nur einige wenige in der Aufzählung lassen? So sehe ich bei der Auswahl in den Parametereinstellungen zum Beispiel nur zwei.
 
barudkinarseniy:
Kann ich von allen Primzahlen nur einige wenige auf der Liste lassen? Wenn ich also in den Einstellungen Parameter auswähle, sehe ich z. B. nur zwei.

Sie können, aber Sie müssen Ihre eigene Aufzählung schreiben

enum ENUM_ORDER_TYPE
{
   Buy  = ORDER_TYPE_BUY,
   Sell = ORDER_TYPE_SELL
};

input ENUM_ORDER_TYPE typeOrder; // Выбери тип ордера

Für mql4 sollten wir statt ORDER_TYPE_BUY OP_BUY schreiben, bzw. für Sell

 
Alexey Viktorov:

Sie können, aber Sie müssen Ihre eigene Aufzählung schreiben

Für mql4 sollten Sie anstelle von ORDER_TYPE_BUY OP_BUY schreiben, bzw. für Sell

Ich habe es verstanden, danke))
 
OlegKirill:

Bitte beraten Sie mich, wie Sie diesen Fehler beheben können

Änderung der Order #1506271459 buy 0.11 EURJPY at 122.824 sl: 0.000 tp: 0.000 -> sl: 0.000 tp: 122.843 fehlgeschlagen [Ungültige S/L oder T/P]


 
Karputov Vladimir:
OlegKirill:

Bitte beraten Sie mich, wie Sie diesen Fehler beheben können

Anforderung der Order #1506271459 buy 0.11 EURJPY at 122.824 sl: 0.000 tp: 0.000 -> sl: 0.000 tp: 122.843 fehlgeschlagen [Ungültige S/L oder T/P]


Es kommt darauf an, worum es sich handelt. Wenn die Haltestelle kleiner als das Minimum eingestellt ist und das Terminal die Haltestelle Null zurückgibt, dann ist es schwierig. Wenn das Problem mit der Kursstufe zusammenhängt, verwende ich diese Funktion.

double normalize(string symbol,double value)
  {
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   if(ts==0)return(value);
   return(NormalizeDouble(value/ts,0)*ts);
  }

Beispiel für die Verwendung bei der Eröffnung einer Position

   if(type==ORDER_TYPE_BUY)
     {
      double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
      if(NormalizeDouble(normalize(_Symbol,ask),digits)!=NormalizeDouble(ask,digits))return;
      trade.Buy(volume,_Symbol,0,0,0,CommentOrder);
     }

Beispiel für die Verwendung beim Ändern

         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            sl=NormalizeDouble(normalize(symbol,bid-sl*point),digits);
            tp=PositionGetDouble(POSITION_TP);
            //Print(__FUNCTION__,": sl = ",sl," tp = ",tp);
            if(sl>0)trade.PositionModify(tiket,sl,tp);
           }

..

 
Danke, ich werde es ausprobieren.
 
Über mql5. Warum ändert sich TimeLocal() im Gegensatz zu mql4 nur bei einem neuen Tick / einer neuen Diagrammverschiebung / einer Änderung der Diagrammskala, aber nicht kontinuierlich? Dasselbe gilt für GetTickCount undGetMicrosecondCount. Gibt es eine Möglichkeit, die TimeLocal "Uhr" gleichmäßig und kontinuierlich ohne "Ticks" zu bewegen?
 
Traum11:

Guten Tag, hier ist das Problem... es gibt eine Trailing-Stop-Funktion...

   double tr=0,MATrall=0,op=0,sl=0,
   ask   = NormalizeDouble(Ask,Digits()),
   bid   = NormalizeDouble(Bid,Digits());
   tr = NormalizeDouble(TrailingStop*Point(),Digits());
   MATrall = iMA(NULL,0,13,0,MODE_SMMA,PRICE_MEDIAN,1);
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)==true)
        {
         if(OrderSymbol()==Symbol())
           {
             if(OrderMagicNumber()==Magic)
              {
              op    = NormalizeDouble(OrderOpenPrice(),Digits());
              sl    = NormalizeDouble(OrderStopLoss(),Digits());
                 if(OrderType()==OP_BUY)
                 {
                 if((bid-op)>tr)
                 if((bid-sl)>tr)
                 if ((bid-tr)>MATrall)
                 if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MATrall,Digits()),OrderTakeProfit(),0,clrRed)==false)
                 printf("ERROR BUY Modifi");
                 }
                  if(OrderType()==OP_SELL)
                 {
                 if((op-ask)>tr)
                 if((sl-ask)>tr || sl==0)
                 if((ask+tr)<MATrall)
                 if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MATrall,Digits()),OrderTakeProfit(),0,clrRed)==false)
                 printf("ERROR SELL Modifi");
                 }
              }
           }
        }
     }

Wie kann man es so ändern, dass es eine unbegrenzte Anzahl von Aufträgen durchsucht, anstatt nur einen ...


 
loleg1991:
Über mql5. Warum ändert sich TimeLocal() im Gegensatz zu mql4 nur bei einem neuen Tick / einer neuen Diagrammverschiebung / einer Änderung der Diagrammskala, aber nicht kontinuierlich? Dasselbe gilt für GetTickCount undGetMicrosecondCount. Vielleicht gibt es eine Möglichkeit, die TimeLocal "Uhr" gleichmäßig und kontinuierlich ohne "Ticks" zu bewegen?
Ist es nicht möglich, dies mit OnTimer() zu tun?
Grund der Beschwerde: