[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 589

 
lottamer:


¿Por qué?

si el pedido no se ha abierto - ¿qué va a modificar?

lottamer:

y ¿es posible comprobar Mi_compra (variable no booleana) para TRUE-FALSE?

Entonces, ¿¡QUIÉN ES EL PRAGAMISTA DE LA BOOLEA aquí?! ¡¡Siempre se puede hacer una booleana de una "no booleana"!!

lottamer:

la modificación es incondicional - la orden está abierta - hay que poner los stops...

para eso está la comprobación de que el pedido está ABIERTO.

Ha dado con valentía el siguiente paso en su conocimiento del idioma: se ha familiarizado con el funcionamiento de las bibliotecas:

#include <WinUser32.mqh>

esta es la biblioteca - el estándar de la entrega de MetaTrader. La gente escribe sus propias bibliotecas (personalizadas). Un ejemplo de biblioteca que contiene funciones de órdenes comerciales. Estas funciones se escriben una vez y luego se utilizan en sus códigos según sea necesario.

 
sergeev:
Entonces, ¿por qué lo has puesto dentro de los paréntesis { } si (medias cruzadas, por ejemplo)?


para que esté ahí.

¿Dónde cree que se puede insertar? Sólo inmediatamente después de la apertura de un pedido.

 
lottamer:

¡Me estoy convirtiendo en madre delante de mis ojos! (es decir, convertirse en matriarca) :))

¿Por qué?

Sólo tengo que buscar "¿Qué es MessageBox()?" - mediante Ctrl+F1 en el MetaEditor.
 
TarasBY:

si la orden no se abriera, ¿qué modificaría?

Entonces, ¿¡QUIÉN ES EL PRAGAMISTA DE LA BOLA aquí?! ¡¡Siempre se puede hacer una booleana de una "no booleana"!!

para eso está la comprobación de la orden de apertura.

Ha dado con valentía el siguiente paso en el aprendizaje del idioma: familiarizarse con el funcionamiento de las bibliotecas:

esta es la biblioteca - el estándar de la entrega de MetaTrader. La gente escribe sus propias bibliotecas (personalizadas). Un ejemplo de biblioteca que contiene funciones de órdenes comerciales. Estas funciones se escriben una vez y luego se utilizan en sus códigos según sea necesario.


Si la orden no se ha abierto, no se puede modificar, porque no hay nada que modificar. Todavía no he terminado de escribir todo el EA, lo estoy escribiendo en bloques y lo compruebo inmediatamente, luego lo termino y lo vuelvo a comprobar. Pero no creo que si una operación no se abre, entonces EA se deshabilita completamente, porque no sabrá qué hacer - hay una orden que modificar y no hay una posición abierta. :))) se abrirá en los próximos ticks...y entonces se modificará

2)BOH aquí eres único, porque yo, un pecador, ni siquiera entiendo cómo tan booleano-en-booleano... Es decir, hay una función utilizable y digamos que se ejecutó, es decir, la pose se abrió. ¿Así que ahora la máquina entenderá que mi función utilizable es ahora TRUE, porque se ha ejecutado? ..... perdón por no saber la pregunta

3) ver 1

4)#include es un tema que me da demasiada vergüenza preguntar.

entiendo correctamente, que teóricamente, digamos, desde mis scripts CLOSE_ALL y MODIFY, se puede hacer un#include en lugar de una función personalizada y hacer referencia a ella.

¿pero cómo puedo insertar este#include My_buy después de la condición if?

 
TarasBY:
Sólo es cuestión de buscar "¿Qué es MessageBox()?" - mediante Ctrl+F1 en el MetaEditor.

esto es un matiz... y me gustaría terminar el Asesor Experto ahora... :))
 

¿alguien sabe lo de la prórroga?

Cuando se reabren las órdenes con el rollover, ¿puede haber deslizamientos para los valores de stop y takeout? ¿Y cómo se fijará el stop si después del rollover la diferencia entre el precio de apertura y el de stop será menor que el nivelador de stop?

Mi tarea es la siguiente. Si tengo una orden de mercado abierta, debería comprobar si fue abierta con rollover y si lo fue, debería obtener el ticket de la orden anterior, que fue cerrada. Tal vez alguien me diga el algoritmo de búsqueda. Actualmente estoy haciendo lo siguiente:

1. Selecciono la primera orden abierta.
2. Si se abrió de las 23:40 a las 00:20, entonces continúo comprobando esta orden más adelante (se toma la ventana de 40 minutos por si acaso, aunque en teoría se podría tomar de las 23:50 a las 23:59)
3. Recuerdo la entrada, el stop y la toma de precio
4.Compruebo todas las órdenes cerradas en el historial, y los comentarios contienen la palabra "swap" y los pares de divisas coinciden

5. Comparo los datos de las paradas y las tomas de posesión, si coinciden, aquí es el par de órdenes requerido, si no - vuelvo al paso 1

 

Por favor, dígame qué significa

while(true)

en el script modificador que he pegado en el EA?

y qué es esta extraña comprobación para

if(cmd==OP_BUY || cmd==OP_SELL) ?

¿No sería mejor comprobar simplemente la presencia de una posición abierta?

int My_modify ()
 {
//      bool   result;
//      double stop_loss,take_profit,point,bid,ask, lotsize;
//      int    cmd, total, error, spread;
//      string message;
//----
   total=OrdersTotal();

//----
   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         bid= MarketInfo(OrderSymbol(),MODE_BID);
         ask= MarketInfo(OrderSymbol(),MODE_ASK);
         spread=MarketInfo(OrderSymbol(),MODE_SPREAD);     
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
          {
            //---- modify first market order
            while(true)
             {
                if(cmd==OP_BUY){
                        string type = "buy";
                        if(OrderStopLoss()!=0)stop_loss=OrderStopLoss();
                        else stop_loss=OrderOpenPrice()-StopLoss*point;
                        if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit();
                        else take_profit=OrderOpenPrice()+TakeProfit*point;
                }
                     
                else{
                        type = "sell";
                        if(OrderStopLoss()!=0)stop_loss=OrderStopLoss();
                        else stop_loss=OrderOpenPrice()+StopLoss*point;
                        if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit();
                        else take_profit=OrderOpenPrice()-TakeProfit*point;
                }   
                result=OrderModify(OrderTicket(), OrderOpenPrice(), stop_loss, take_profit, 0, CLR_NONE);
                if(result!=true) { error=GetLastError(); Print("LastError = ",error);}
                else {error=0;}
                if(error==135) RefreshRates();
                else break;
              }
                if(error==0){
                        //message=message+"Ордер #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+" успешно модифицирован.\n";
                        }
                        else{
                                if(error == 130){string error_desc = " - Неправильные стопы";} else error_desc = "";
                                if(error != 1)
                        message=message+"Ошибка модификации ордера #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+". "+error_desc+" \n";
                        }

              //---- print modified order (it still selected after modify)
              OrderPrint();
              continue;             
           }
        }
      else { Print( "Error when order select ", GetLastError()); break;}
     }
        int ret=MessageBox(message, NULL, MB_OK);
        if(ret==IDOK) return(0);
//----
   return(0);
  }
 
lottamer:

Esto es un matiz ... y ahora me gustaría terminar el asesor ...:))

Quieres "mover el carro" por la "nariz de Kucher". Con un nivel bajo de conocimientos lingüísticos, hay que empezar a practicar con:

Tome un Asesor Experto que ya esté funcionando, que se acerque a su estrategia y modernícelo a sus necesidades - así será más rápido entender y comprender sus acciones (en la obvia ausencia del deseo de leer "La Cartilla").

Buena suerte.

P.D. AXIOMA: "¡¡¡Los cocheros no van en carro!!!"

 
TarasBY:

Quieres "mover el carro" por la "nariz de Kucher". Con un nivel bajo de conocimientos lingüísticos, hay que empezar a practicar con:

Tome un Asesor Experto que ya esté funcionando, que se acerque a su estrategia y mejórelo para que se adapte a sus necesidades - de esta manera entenderá y comprenderá sus acciones más rápidamente.

Buena suerte.

P.D. AXIOMA: "¡Los cocheros no conducen carros!"


Prácticamente lo hago... Miro otros EAs, scripts... y construyo lo que necesito :))
 
2012.12.07 16:14:28 attempt141 GOLD,H1: nombre de símbolo desconocido 0 para la función OrderSend

estaba bien. ¿depende del terminal o de la CC? o ha cambiado algo en el código?