Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 366

 
vadynik:
Почему ордер закрывается сразу на следующем тике, уже голова кипит от этого, пытаюсь сделать закрытие ордера по определенному количеству пунктов от цены,типо виртуального стопа..


Потому что в коде Вы не запрашиваете рыночные котировки, а просто считаете, поэтому строка:

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

будет всегда истина и будет выполнятся тело оператора.

 
vadynik:
Почему ордер закрывается сразу на следующем тике, уже голова кипит от этого, пытаюсь сделать закрытие ордера по определенному количеству пунктов от цены,типо виртуального стопа..

Распечатайте значение

priceopen

...

 
vadynik:
Почему ордер закрывается сразу на следующем тике, уже голова кипит от этого, пытаюсь сделать закрытие ордера по определенному количеству пунктов от цены,типо виртуального стопа..


Это всё равно что, если бы Вы в этой строке произвели следующий расчёт:

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

{

Print(100);

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

}

Понимаете о чём я?:)

 
Ekburg:


Это всё равно что, если бы Вы в этой строке произвели следующий расчёт:

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

{

Print(100);

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

}

Понимаете о чём я?:)


Да,логика поплыла))
 
vadynik:

Да,логика поплыла))

Всё будет..)) по началу, я думаю, у всех такое было)))
 
Ekburg:

Всё будет..)) по началу, я думаю, у всех такое было)))


Да сложно начинать) спс за помощь

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

Так все работает

 
подскажите пожалуйста, как написать на MLQ4 "какое-то условие, то запросить ручное подтверждение"?
 
Trader7777:
подскажите пожалуйста, как написать на MLQ4 "какое-то условие, то запросить ручное подтверждение"?


Функция MessageBox создает и отображает окно сообщений, а также управляет им.
 
Trader7777:

спасибо, будем изучать..)

пример

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