[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 344

 
Summus_Digitus:
Hola a todos. Este es un asunto serio y urgente y he buscado por todo Internet, como dicen... Me decidí a usar MT4 por mucho tiempo, lo he estado usando por 3 días. Intenté usarlo durante un tiempo y me pareció que era la primera vez y no entendía lo que pasaba. Pensé, no es nada grave, pero de repente voy a MT y veo 4 gráficos H4 con un nuevo sistema y veo el precio equivocado, lo comparo con el StartFX 2, abro time frame H1 y D1 y espero... Llevo una hora esperando que se actualice año a año, pero no lo hace. "Bueno, reinstálalo y ya está" - me dices, y yo te digo "a la mierda". "Así que descárgate un indicador de alguna actualización de software de quién sabe qué sitio" - me preguntas y te digo "a la mierda dos veces". Realmente quiero seguir ganando dinero y estrangular la ayuda informática con 1 y luego ya veremos :-)

¡Sobrando! Sinceramente - lo leí y una lágrima punzante rodó por mi cara temblando de risa...
 
VladTch:

¡Buenos días a todos!

Mi pregunta parece sencilla, pero he buscado en todos los artículos, pero no he podido encontrar una respuesta: ¿cómo funciona el operador return(-1)? ¿A dónde pasa el control? En este código, por ejemplo:

si no return(0);

Con el cero entre paréntesis y sin paréntesis todo parece claro. ¿Pero qué pasa con (-1)?

Gracias por responder. :)

Lasfunciones especiales son funciones generales. Se pueden llamar como funciones definidas por el usuario. Pero hay una peculiaridad. Durante la llamada al sistema no se pasan los parámetros ni el valor de retorno.

 
Summus_Digitus:
Hola a todos. Este es un asunto serio y urgente y he buscado por todo Internet, como dicen... Me decidí a usar MT4 por mucho tiempo, lo he estado usando por 3 días. Intenté usarlo durante un tiempo y me pareció que era la primera vez y no entendía lo que pasaba. Pensé, no es nada grave, pero de repente voy a MT y veo 4 gráficos H4 con un nuevo sistema y veo el precio equivocado, lo comparo con el StartFX 2, abro time frame H1 y D1 y espero... Llevo una hora esperando que se actualice año a año, pero no lo hace. "Bueno, reinstálalo y ya está" - me dices, y yo te digo "a la mierda". "Así que descárgate un indicador de alguna actualización de software de quién sabe qué sitio" - me preguntas y te digo "a la mierda dos veces". Realmente quiero seguir ganando dinero y estrangular la ayuda informática con 1 y luego ya veremos :-)

¡¡¡A los anales!!!
 

¿Por qué no puedo pintar un número?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

¿Por qué no puedo pintar un número?

 

Qué raro. Pensé que había una pregunta.

¡Se está compilando!

 
Elektronik:

¿Por qué no puedo pintar un número?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

¿Por qué no puedo pintar un número?

Lo has pintado, pero para cambiar el color tienes que crear otro objeto con el mismo color. Y cambiar los objetos, entonces el color cambiará visualmente! Eso es lo que entiendo! ¿O tal vez haya otra opinión? Yo mismo sólo he cambiado los colores con Mashka de esta manera.
 

Creo que todo es cuestión de número.

lots=StringSubstr(lot, 4, 1); 

tal vez el software lo entiende como un solo dígito.

 
Elektronik:

Qué raro. Pensé que había una pregunta.

¡Se está compilando!

Sí, quería añadir algo y lo he borrado sin querer. No quería restaurarlo.

Hay que cambiar el color con esto:

ObjectSet(nm, OBJPROP_COLOR, cl);

Su código no muestra dónde se cambia el color.

============

He descubierto dónde...

Así es como se hace:

   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9)
    {
     ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
     ObjectSetText(nm, tx, fs);
     ObjectSet(nm, OBJPROP_COLOR    , cl);
     ObjectSet(nm, OBJPROP_XDISTANCE, xd);
     ObjectSet(nm, OBJPROP_YDISTANCE, yd);
     ObjectSet(nm, OBJPROP_CORNER   , cr);
     ObjectSet(nm, OBJPROP_FONTSIZE , 18);
    }

No tengas miedo de recrear el objeto. Está optimizado. Si se crea un objeto, sólo cambia las propiedades que cambian. No se recreará.

Por favor, ponga las llaves en un nivel, de lo contrario no se entenderá lo que está escrito donde comienzan y terminan los bloques.

Debe haber problemas con el parámetro ColorOnSign(). El parámetro es doble y se inserta una cadena.

SetLabel("ЧИСЛО", lots, ColorOnSign(StrToDouble(lots)), 5, 7, 1);

O

color ColorOnSign(string sLots)
 {
  double nu = StrToDouble(sLots);
  color lcColor=Navy;
  if (nu<4) lcColor=Green;
  if (nu>6) lcColor=Red;
  return(lcColor);
 }
 

Buenas tardes, ayúdame y si puedes dame una pista sobre el código.

Tengo el siguiente arrastre en owl ->

        for ( int v = OrdersTotal() - 1; v >= 0; v -- ){       
                if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)){           
                        if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){ 
                                //+=================================================================================+
                                ///+================================Обычный трал ====================================+
                                if (TralSimple){
                                        if(OrderType() == OP_SELL){
                                                if((OrderOpenPrice()-Ask) > (Point*TrailingStop)){ 
                                                        if((OrderStopLoss() > (Ask+Point*TrailingStop)) || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                                                        }
                                                }
                                        }
                                        //+=================================================================================+
                                        if(OrderType() == OP_BUY){
                                                if((Bid-OrderOpenPrice()) > (Point*TrailingStop)){
                                                        if(OrderStopLoss() < Bid-Point*TrailingStop || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);  
                                                        }
                                                }
                                        }
                                }                                  
--------------------------------------------

Ahora el arrastre mueve un stop después de cada tick positivo. Quiero hacer lo siguiente:

la primera pasada - en un tick positivo la red de arrastre moverá el tope en 1 punto y aumentará el paso hacia arriba.

Segundo paso - tomemos una variable x que se incrementará en 1 cada vez que hagamos un determinado paso (5). Y con cada paso (paso)*x

etc.

La cuestión es cómo atornillar este paso con multiplicador creciente. En caso de varias posiciones, este multiplicador debe ser diferente para cada posición

 
berezhnuy:

Buenas tardes, ayúdame y si puedes dame una pista sobre el código.

Tengo el siguiente arrastre en owl ->

Ahora el arrastre mueve un stop después de cada tick positivo. Quiero hacer lo siguiente:

primera pasada - en un tick positivo el arrastre moverá el stop en 1 punto, y por cuanto ha subido el par.

Segunda pasada - tomar una variable x que se incrementará en 1 en cada pasada.

etc.

La cuestión es cómo añadir un paso con multiplicador creciente. Y en caso de varias posiciones, este multiplicador debe ser diferente para cada posición


Se hace algo así como una parábola, el cálculo es relativo al punto base - precio y hora de apertura
Razón de la queja: