Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 366

[Eliminado]  
vadynik:
Estoy tratando de cerrar mi orden por una cierta cantidad de puntos del precio, estoy tratando de hacer una parada virtual...


Porque en el código no estás pidiendo cotizaciones de mercado, sólo estás contando, por lo que la línea:

((NormalizarDoble(precioabierto,Dígitos) >=(NormalizarDoble(precioabierto,Dígitos)-30*Punto))||(NormalizarDoble(precioabierto,Dígitos) <=(NormalizarDoble(precioabierto,Dígitos) + 25*Punto))

es siempre verdadero y el cuerpo del operador se ejecutará.

 
vadynik:
Por qué una orden se cierra inmediatamente en el siguiente tick, mi cabeza ya está hirviendo, estoy tratando de hacer que una orden se cierre a un cierto número de pips del precio, como un stop virtual...

Imprimir el significado

priceopen

...

[Eliminado]  
vadynik:
Por qué la orden se cierra inmediatamente al siguiente tick, ya me hierve la cabeza porque estoy intentando cerrarla a una cierta cantidad de puntos del precio, una especie de stop virtual...


Esto sería lo mismo que si se hiciera el siguiente cálculo en esta línea:

si ((100 >=100-30)||(100 <=100 + 25))

{

Imprimir(100) ;

OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue) ;

}

¿Ves lo que quiero decir?)

 
Ekburg:


Es como si hicieras el siguiente cálculo en esta línea:

si ((100 >=100-30)||(100 <=100 + 25))

{

Imprimir(100) ;

OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue) ;

}

¿Ves lo que quiero decir?)


Sí, la lógica es flotante))
[Eliminado]  
vadynik:

Sí, la lógica nadó)))

Lo hará...)) Al principio, creo que todos lo hicieron...))
 
Ekburg:

Lo hará... )))) al principio, creo que todo el mundo tenía eso))))


Sí, difícil de empezar) gracias por la ayuda

NormalizeDouble(priceopen-30*Point,Digits)>=Bid

Así es como funciona.

[Deleted]  
¿puede decirme cómo escribir "alguna condición, luego solicitar confirmación manual" en MLQ4?
 
Trader7777:
¿puede decirme cómo escribir "alguna condición, luego solicitar confirmación manual" en MLQ4?


La función MessageBox crea y muestra un cuadro de mensaje y lo controla.
[Deleted]  
 
Trader7777:

Gracias, lo investigaremos...)

ejemplo

//+------------------------------------------------------------------+
//|                                         проверка(MessageBox).mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern int     stoploss    = 0,        //уровень выставления SL, если 0, то SL не выставляется
               takeprofit  = 0,        //уровень выставления TP, если 0, то TP не выставляется
               Magic       = 0;        //уникальный номер ордера
extern double  Lot         = 0.01;      //объем ордера
extern int     slippage    = 0;        //Максимально допустимое отклонение цены для рыночных ордеров

double SL,TP;
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
    if (MessageBox (" открыть ордер BUY??? ","Скрипт интересуется:",1)==1)
        {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
        } 

//----
   return(0);
  }
//+------------------------------------------------------------------+
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"BUY",Magic,0,Blue);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
      if (error==-1) //неудачная покупка OK
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------