Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 416

 
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGIC_3 || OrderSymbol()!=SMB_) continue;        //  здеся отсеиваются ордера не со своим магиком
      if(OrderMagicNumber()==MAGIC_3 && OrderSymbol()==SMB_)                     //  здеся отсеиваются ордера не со своим магиком
        {
         if(OrderType()==OP_SELL)
           {
            ticket=OrderTicket();OpenPrice=OrderOpenPrice();SL=OrderStopLoss();TP=OrderTakeProfit();comm_=OrderComment();
        //    if( comm_ != (DoubleToString(MAGIC_3,0)+" Uni OP_SeLL") || comm_ != (DoubleToString(MAGIC_3,0)+" UNI OP_SELLSTOP") ) return(0);
            RefreshRates();
            //+------------------TAKE НА SELL------------------------------------+ берёт несвой магик
            if(TP==0)//|| SL==0)   потому и здесь закомментировано || SL==0   поменял || на &&
              {
               TP    = OpenPrice - TakeProfit*Point;
               SL    = OpenPrice + 2*TakeProfit*Point;
               Color = clrViolet;
               Print(MAGIC_3," TAKE НА SELL ticket: ",ticket,", PR ",OpenPrice," SL: ",SL," TP: ",TP," Bid: ",Bid_);
               MODE_POS_b(ticket,OpenPrice,SL,TP,Color);
              }
            RefreshRates();
            //+------------------ОТКРЫТИЕ BUYSTOP--------------------------------+
            if(SchBuyStop_b(MAGIC_3,SMB_)==0 && SchSell_b(MAGIC_3,SMB_)==2)
              {
            if( SL==0 )return(0);
               OP_CMD_ = OP_BUYSTOP;
               Price   = NormalizeDouble(SL,Digits);
               SL      = 0;
               TP      = 0;
               lts     = SchSellLots_b(MAGIC_3,SMB_)*2;
               lts     = MathRound(lts/LotStep)*LotStep; // округление объема до ближайшего допустимого
               Color   = clrYellow;   //clrGreenYellow
               comm_   = DoubleToString(MAGIC_3,0)+" UNI OP_BUYSTOP";
               Print(MAGIC_3," OP_BUYSTOP:PR  ",Price," SL: ",SL," TP: ",TP," lts: ",lts," Ask: ",Ask_);
               res=bool_OP_b(SMB_,OP_CMD_,lts,Price,SL,TP,comm_,MAGIC_3,Color);
              }
            //+------------------ОТКРЫТИЕ SELLLIMIT------------------------------+
            if(SchSellLimit_b(MAGIC_3,SMB_)==0 && TP>0 && SchSell_b(MAGIC_3,SMB_)==1)
              {
               OP_CMD_ = OP_SELLLIMIT;
               Price   = TP + 2*Point*TakeProfit;
               Price   = NormalizeDouble(Price,Digits);
               TP      = TP + Point*TakeProfit;
               SL      = NormalizeDouble(SL,Digits);
               lts     = MathRound(SchSellLots_b(MAGIC_3,SMB_)/LotStep)*LotStep; // округление объема до ближайшего допустимого
               Color   = clrMediumSpringGreen;
               comm_   = DoubleToString(MAGIC_3,0)+" UNI OP_SELLLIMIT";
               Print(MAGIC_3," OP_SELLLIMIT:PR  ",Price," SL: ",SL," TP: ",TP," lts: ",lts," Ask: ",Ask_);
               res=bool_OP_b(SMB_,OP_CMD_,lts,Price,SL,TP,comm_,MAGIC_3,Color);Sleep(1000);
              }
           }
        }
      //   break;
     }
 
Alexander Boltunov:

Hola a todos. ¿Podría decirme cómo establecer la condición de que el precio cruce una línea horizontal? ¿Y cómo hacer esta función con la máxima precisión (que reaccione en cada tick)?

Gracias de antemano))

He añadido la eliminación de mi línea en OnDeinit
Archivos adjuntos:
-LINE.mq4  6 kb
 
Artyom Trishkin:

¿Qué alce?

¿Podemos no utilizar la jerga? No es que estemos en el colegio en el recreo discutiendo quién tiene el "adics" más chulo, "yo"...

Stoploss
 
ZZuretc:

if(OrderMagicNumber()!=MAGIC_3 || OrderSymbol()!=SMB_) continue; // aquí se eliminan los pedidos que no tienen número mágico
if(OrderMagicNumber()==MAGIC_3 && OrderSymbol()==SMB_) // aquí se eliminan los pedidos que no tienen número mágico

Revisar dos veces parece excesivo

 
STARIJ:

El examen dos veces parece excesivo

pero no entran, y el bypass está puesto a uno, y el selimit está puesto a varios
 
ZZuretc:
pero no es el suyo el que pasa, y el bypass está puesto en uno y el selimit en varios
Prueba a ejecutar el depurador pulsando F5 en el MetaEditor. Allí se pueden controlar los valores de las variables
 
STARIJ:
Prueba a ejecutar el depurador pulsando F5 en el MetaEditor. En ella se puede hacer un seguimiento de los valores de las variables

Llevo un mes depurando y no puedo depurar. He aquí algunos consejos inteligentes de los expertos en la materia

 
kaktyzzz:

Saludos, ayuda a descifrar el borrado de objetos, supuestamente los objetos con nombres como Incl005_011 deberían ser borrados, pero no se borran ((

El trozo de texto que has publicado es un descompilado. Aquí se trata de forma negativa. Sanción = prohibición. Por favor, quítalo.
 
STARIJ:
el trozo de texto que has publicado es una descompilación. Aquí se trata de forma negativa. Castigo = prohibición. Bórralo.
Cómo voy a saber si está descompilado o no, lo he borrado.
 
ZZuretc:
La línea horizontal se sitúa en un determinado VALOR. Supongamos que if(Bid>=0,8765){return(0);}

Gracias.

Razón de la queja: