Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 366

 
vadynik:
Sto cercando di chiudere il mio ordine di una certa quantità di punti dal prezzo, sto cercando di fare uno stop virtuale...


Perché nel codice non state chiedendo le quotazioni di mercato, state solo contando, quindi la linea:

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

è sempre vero e il corpo dell'operatore sarà eseguito.

 
vadynik:
Perché un ordine si chiude immediatamente al prossimo tick, la mia testa sta già bollendo, sto cercando di far chiudere un ordine a un certo numero di pips dal prezzo, come uno stop virtuale...

Stampare il significato

priceopen

...

 
vadynik:
Perché l'ordine viene chiuso immediatamente al prossimo tick, la mia testa sta già bollendo perché sto cercando di chiuderlo di una certa quantità di punti dal prezzo, una specie di stop virtuale...


Questo sarebbe lo stesso che se faceste il seguente calcolo su questa linea:

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

{

Stampa(100) ;

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

}

Capite cosa intendo?).

 
Ekburg:


È come se si facesse il seguente calcolo su questa linea:

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

{

Stampa(100) ;

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

}

Vedi cosa intendo?).


Sì, la logica è fluttuante))
 
vadynik:

Sì, la logica ha nuotato)))

Lo farà...))) All'inizio, credo che tutti l'abbiano fatto...))
 
Ekburg:

Sarà...)))) all'inizio, penso che tutti l'abbiano avuto))))


Sì, difficile da avviare) grazie per l'aiuto

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

È così che funziona.

 
potete dirmi come scrivere "qualche condizione, poi richiedere la conferma manuale" su MLQ4?
 
Trader7777:
potete dirmi come scrivere "qualche condizione, poi richiedere la conferma manuale" su MLQ4?


La funzione MessageBox crea e visualizza una casella di messaggio e la controlla.
 
 
Trader7777:

Grazie, ci daremo un'occhiata...)

esempio

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