Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 366

 
vadynik:
Estou tentando fechar meu pedido por uma certa quantidade de pontos a partir do preço, estou tentando fazer uma parada virtual...


Porque no código você não está pedindo cotações de mercado, você está apenas contando, portanto a linha:

((NormalizeDouble(priceopen,Digits) >=(NormalizeDouble(priceopen,Digits)-30*Point))|||(NormalizeDouble(priceopen,Digits) <=(NormalizeDouble(priceopen,Digits) + 25*Point))

é sempre verdade e o corpo do operador será executado.

 
vadynik:
Por que um pedido fecha imediatamente no próximo tick, minha cabeça já está fervendo, estou tentando fazer um pedido fechar a um certo número de pips do preço, como uma parada virtual...

Imprimir o significado

priceopen

...

 
vadynik:
Porque a ordem é fechada imediatamente no próximo tick, minha cabeça já está fervendo porque estou tentando fechá-la por uma certa quantidade de pontos do preço, uma espécie de parada virtual...


Isto seria o mesmo que se você fizesse os seguintes cálculos nesta linha:

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

{

Imprimir(100) ;

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

}

Você entende o que quero dizer?)

 
Ekburg:


É como se você tivesse feito os seguintes cálculos nesta linha:

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

{

Imprimir(100) ;

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

}

Entende o que quero dizer?)


Sim, a lógica é flutuante))
 
vadynik:

Sim, a lógica nadou))))

Será...))) No início, acho que todos fizeram...))
 
Ekburg:

Será...)))) no início, acho que todos tinham que))))


Sim, é difícil de começar) obrigado pela ajuda

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

É assim que funciona.

 
você pode me dizer como escrever "alguma condição, depois solicitar confirmação manual" no MLQ4?
 
Trader7777:
você pode me dizer como escrever "alguma condição, depois solicitar confirmação manual" no MLQ4?


A função MessageBox cria e exibe uma caixa de mensagens e a controla.
 
 
Trader7777:

Obrigado, vamos investigar isso...)

exemplo

//+------------------------------------------------------------------+
//|                                         проверка(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;
   }
}
//--------------------------------------------------------------------