Questions from Beginners MQL4 MT4 MetaTrader 4 - page 2

Nickolay72  
Vladimir Karputov:

As you suggested, the compiler swears.

{
   Ticket=OrderSend(NULL,OP_BUY,Lot,Ask,slippage,0,0,NULL,magic,0,Blue);
   if(!Ticket>0)Print(GetLastError());
   else
   {
    if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
    if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
    {
     TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);
     bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),TP,0,0);
      return;
    }
   }

Doesn't work.

Vitaly Muzichenko  
Nickolay72:

As you suggested, the compiler swears.

{
   Ticket=OrderSend(NULL,OP_BUY,Lot,Ask,slippage,0,0,NULL,magic,0,Blue);
   if(!Ticket>0)Print(GetLastError());
   else
   {
    if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
    if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
    {
     TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);
     bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),TP,0,0);
      return;
    }
   }

It doesn't work.

Here is your code:

if(! Ticket>0)Print(GetLastError()) --- Ticket is an integer number, i.e. "2354865". Now a question: can an integer not be ( !2354865) An integer can either be greater than "> 0" or less than "< 0" . This bool value can be false/true ( ! )

Further, this construction:if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true) --- it enumerates parameters by ticket, and if you view a concrete ticket, it makes no sense to check its magic number or symbol, i.e. it is obviously unnecessary:if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))

And lastly, such constructs are better bracketed to explicitly specify the order of mathematical tasks:NormalizeDouble(Bid+( TakeProfit*Point),Digits);
Vitalie Postolache  
Vitaly Muzichenko:


And lastly, it is better to bracket such constructions to explicitly specify the order of matrix tasks:NormalizeDouble(Bid+( TakeProfit*Point),Digits);

No, you can do it without brackets. But when the sum has to be multiplied, then brackets are required.

K_i_r_i_t_o  
poman:

can take the value of 0 bar open time with period D1, + add the number of seconds,

in the condition to compare the current time with the obtained time in the first line

in a pending order it is possible to put a number of seconds, time of life of the order.

Data_1=iTime(Symbol(),PERIOD_D1,0)+86400;  //время жизни ордера


Thanks for the tip!) It helped)
Aibek Mugiynov  

Help with the code, the advisor goes through all the bars, how to make it go through the last 200 bars! Thanks

int  i, k=iBars(Symbol(), 0);
for (i=1; i<k; i++)
Vladimir Karputov  

Provider_Signal

Forum on trading, automated trading systems and testing trading strategies

Questions from Beginners

Provider_Signal, 2016.11.09 18:38

How to close all orders in EA on Friday night ? So as not to leave it for the weekend.

Found function DayOfWeek().

I can write a check

if (DayOfWeek() == 5)
{
//
}

But what kind of check should we write for time. For example, what if it was 22:00 ?


mila.com  
Vladimir Karputov:

Provider_Signal

But what kind of check to write for the time. For example what would it be 22:00 ?
extern int St_Hour   = 22;

if (Hour()==St_Hour)
mila.com  
Aibek Mugiynov:

Help with the code, the advisor goes through all the bars, how to make it go through the last 200 bars! Thanks

int  i, k=iBars(Symbol(), 0);
for (i=1; i<k; i++)
for (i=1; i<200; i++)
mila.com  

Hello, help.

If no buffer is filled on three bars, I fill the buffer.


     int BarCount=3;
    BER=true;
   for(int il=1;il<=BarCount;il++)
     {
      if(BufferPointUp[il]!= EMPTY_VALUE){BER=false;break;}
     }
     if(BER) BufferPointUp[i]=high[i];

It fills on all bars, indiscriminately.

But everything is correct if I do this.

if(BufferPointUp[i+1]== EMPTY_VALUE&&BufferPointUp[i+2]== EMPTY_VALUE&&BufferPointUp[i+3]== EMPTY_VALUE)BufferPointUp[i]=high[i];

How to dothis check in a loop ?

Provider_Signal  
mila.com:
extern int St_Hour   = 22;

if (Hour()==St_Hour)
Thank you