Уважаемые умы! Нужна Ваша помощь...

 

Ну вот не открывается ордер *WALL*

int OpenLong() // Функция открытия длинной позиции
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-1500*Point,Bid+1500*Point);
}
return;

При обращении к функции "OpenLong();" ничего не происходит. Подскажите пж чего недодумал а?

 

после OrderSend(...); Print(GetLastError()); и посмотри сам в чём проблема...

int OpenLong() {
    int tic = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-1500*Point,Bid+1500*Point);
    int err = GetLastError();
    if (err==0) return (tic); else return(-err);
}
Примерно так: если OpenLong()>=0 то это тикет ордера если нет - ошибка см. доку...
 
AYuBelov писал(а) >>

Ну вот не открывается ордер *WALL*

int OpenLong() // Функция открытия длинной позиции
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-1500*Point,Bid+1500*Point);
}
return;

При обращении к функции "OpenLong();" ничего не происходит. Подскажите пж чего недодумал а?

Может дело в том, что функция описана как int, а ничего не возвращает return;

 
AYuBelov >>:

Ну вот не открывается ордер *WALL*

int OpenLong() // Функция открытия длинной позиции
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-1500*Point,Bid+1500*Point);
}
return;

При обращении к функции "OpenLong();" ничего не происходит. Подскажите пж чего недодумал а?

Попробуйте так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-1500*Point,Bid+1500*Point,"",0,0,CLR_NONE);

 

И еще - зачем Вам такие большие стопы по 1500???

 
zxc писал(а) >>

Попробуйте так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-1500*Point,Bid+1500*Point,"",0,0,CLR_NONE);

И еще - зачем Вам такие большие стопы по 1500???

Мне стопы не нужны вот и прилепил максимум

 
AYuBelov >>:

Мне стопы не нужны вот и прилепил максимум

Тогда так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,"",0,0,CLR_NONE);

 
zxc писал(а) >>

Тогда так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,"",0,0,CLR_NONE);

Дааааааааааа да да да

Спасибо, Вы мой кумир!!!

....ммм теперь не работает другая функция :( Вчера работала вроде, я ее тут поднимал

int WhatOpen() // Функция проверки наличия открытых ордеров
{
int Order;
if (OrdersTotal()>0) // Если есть хоть один открытый ордер
{
for(int i=0;i<OrdersTotal();i++) // До тех пор пока есть открытые ордеры
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
{
Order=1;
}
if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
{
Order=2;
}
}
}
return(Order);
}

Вроде как переменная принимает нужное значение, а функцию вызываю IF (WhatOpen()==1), например, тогда не открывать повторно...

 
JavaDev писал(а) >>

после OrderSend(...); Print(GetLastError()); и посмотри сам в чём проблема...

Примерно так: если OpenLong()>=0 то это тикет ордера если нет - ошибка см. доку...

Нашел ошибку Спасибо :)

 

AYuBelov писал(а) >>
if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
{
Order=1;
}
if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
{
Order=2;
}

 

********************

1 вариант

делаем так:

if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == 0)

********************

 

2 вариант

в предыдущей

zxc >>:

Тогда так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,"",0,0,CLR_NONE);

делаем так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,"",Magic,0,CLR_NONE);

********************

 

Любой вариант - на выбор. (Попробуйте сначала второй вариант.)

 
zxc писал(а) >>

********************

1 вариант

делаем так:

if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == 0)

********************

2 вариант

в предыдущей

делаем так:

OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,"",Magic,0,CLR_NONE);

********************

Любой вариант - на выбор. (Попробуйте сначала второй вариант.)

Все потер что написал....

Мне вчера посоветовали переменную Magic описать как глобальную с значением 123321.

В этом то и была загвоздка...

Спасибо большое