Как написать функцию открытия отложенного ордера?

 
Подскажите как написать функцию открытия отложенного ордера(на покупку) по цене закрытия 5-го бара с отступом 5 пипсов от цены закрытия этого бара.
Спасибо.
 
sadam:
Подскажите как написать функцию открытия отложенного ордера(на покупку) по цене закрытия 5-го бара с отступом 5 пипсов от цены закрытия этого бара.
Спасибо.
Вот ты настырный - Подскажите пожалуйста как написать ????

Если никто не отвечает, то есть три варианта:
1. никто не знает
2. ответ уже дан
3. ты спрашиваешь что-то не то...
Какой вариант соответствует твоему случаю, попробуй угадать сам.
 
timbo:
sadam:
Подскажите как написать функцию открытия отложенного ордера(на покупку) по цене закрытия 5-го бара с отступом 5 пипсов от цены закрытия этого бара.
Спасибо.
Вот ты настырный - Подскажите пожалуйста как написать ????

Если никто не отвечает, то есть три варианта:
1. никто не знает
2. ответ уже дан
3. ты спрашиваешь что-то не то...
Какой вариант соответствует твоему случаю, попробуй угадать
Это правильно ?
// выставляем ордер на покупку
if (ordersend (symbol(), op_buystop, my_lots, close[5]+mypendinglevel, 0, close[5]+mypendinglevel-point*mySL, close[5]+mypendinglevel+point*myTP)!=-1
lasttradetime= curtime ();
 
sadam:
Это правильно ?
// выставляем ордер на покупку
if (ordersend (symbol(), op_buystop, my_lots, close[5]+mypendinglevel, 0, close[5]+mypendinglevel-point*mySL, close[5]+mypendinglevel+point*myTP)!=-1
lasttradetime= curtime ();
Нет, неправильно.

Не спеши, не вали все в одну кучу, делай раздельно по шагам проверяя каждую переменную.
if тебе пока не нужен
lasttradetime - тем более

Сделай так:

string symbol= ...;
int cmd = ...;
double volume = ...;
double price = ...;
 
Про�еряя каждую �еличину через принт
и только потом сдела�
 
OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,color);
Сделав это ты увидишь, что тэйкпрофит и стоплос у тебя кривые.
Проскальзывание, во вобщем случае, не надо делать ноль.
Ну и еще чего новое выучишь...
 
И сразу заучи вот такую команду - NormalizeDouble()
Пригодится.
 
timbo:
sadam:
Это правильно ?
// выставляем ордер на покупку
if (ordersend (symbol(), op_buystop, my_lots, close[5]+mypendinglevel, 0, close[5]+mypendinglevel-point*mySL, close[5]+mypendinglevel+point*myTP)!=-1
lasttradetime= curtime ();
Нет, неправильно.

Не спеши, не вали все в одну кучу, делай раздельно по шагам проверяя каждую переменную.
if тебе пока не нужен
lasttradetime - тем более

Сделай так:

string symbol= ...;
int cmd = ...;
double volume = ...;
double price = ...;
 
Про�еряя каждую �еличину через принт
и только потом сдела�
 
OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,color);
Сделав это ты увидишь, что тэйкпрофит и стоплос у тебя кривые.
Проскальзывание, во вобщем случае, не надо делать ноль.
Ну и еще чего новое выучишь...


Позиция может не открыться если в момент постановки ордера рынок ближе минимального стопа, надо это учесть.   
 
FION:
Позиция может не открыться если в момент постановки ордера рынок ближе минимального стопа, надо это учесть.
Во! Да.
Ещё и наличие денег хорошо бы заранее проверить. И торговый поток провентилировать... Делал я как-то гридера, в порядке само-образования, на тесте все хорошо, а на демо ордера строго через один ставились.

Всего сходу не вспомнишь, да и не нужно. Для этого есть коды ошибок. Ты его мучаешь, он не идет, а плюется ошибками - смотрим код, проверяем все входящие переменные, анализируем, исправляем. ..
 

Я же ставлю отложенный от цены закрытия 5 пипсов. Если тока цена в данный момент на этом уровне, то конечно не откроется.
close [5]+mypendinglevel - это значит, что берется цена закрытия 5 бара и к ней прибавляется моё установленное колличество пипсов. Это так или нет ?

 
sadam:

Я же ставлю отложенный от цены закрытия 5 пипсов. Если тока цена в данный момент на этом уровне, то конечно не откроется.
close [5]+mypendinglevel - это значит, что берется цена закрытия 5 бара и к ней прибавляется моё установленное колличество пипсов. Это так или нет ?


int dig;
double Lots, op_buy,op_sell,STPLVL;
string val;
 
   
val=Symbol();
dig=MarketInfo(val,MODE_DIGITS);
STPLVL=MarketInfo(val,MODE_STOPLEVEL)*Point;
 
op_buy=NormalizeDouble(iClose(val,0,5)+5*Point,dig);
op_sell=NormalizeDouble(iClose(val,0,5)+5*Point,dig);
 
if (op_buy-Ask>STPLVL) OrderSend(val,OP_BUYSTOP,Lots,op_buy,3,0,0,"Close 5",12345,0,Green);
if (Bid-op_sell>STPLVL) OrderSend(val,OP_SELLSTOP,Lots,op_sell,3,0,0,"Close 5",12345,0,Green);
Вот, наверное, то, о чем Вы просили. Открываем позицию по цене закрытия пятого бара: или в вверх или вниз;
в зависимости от того какое из условий выполнится первым buy или sell.
 
alexnau:
sadam:

Я же ставлю отложенный от цены закрытия 5 пипсов. Если тока цена в данный момент на этом уровне, то конечно не откроется.
close [5]+mypendinglevel - это значит, что берется цена закрытия 5 бара и к ней прибавляется моё установленное колличество пипсов. Это так или нет ?


int dig;
double Lots, op_buy,op_sell,STPLVL;
string val;
 
   
val=Symbol();
dig=MarketInfo(val,MODE_DIGITS);
STPLVL=MarketInfo(val,MODE_STOPLEVEL)*Point;
 
op_buy=NormalizeDouble(iClose(val,0,5)+5*Point,dig);
op_sell=NormalizeDouble(iClose(val,0,5)+5*Point,dig);
 
if (op_buy-Ask>STPLVL) OrderSend(val,OP_BUYSTOP,Lots,op_buy,3,0,0,"Close 5",12345,0,Green);
if (Bid-op_sell>STPLVL) OrderSend(val,OP_SELLSTOP,Lots,op_sell,3,0,0,"Close 5",12345,0,Green);
Вот, наверное, то, о чем Вы просили. Открываем позицию по цене закрытия пятого бара: или в вверх или вниз;
в зависимости от того какое из условий выполнится первым buy или sell.

------------------------------------------------------------
открываем отложенный ордер по цене + 5 пипсов от цены закрытия 5 бара, и на покупку и на продажу ???
 
sadam:
открываем отложенный ордер по цене + 5 пипсов от цены закрытия 5 бара, и на покупку и на продажу ???

Сначала выставится один из ордеров, если не активизируется и цена пойдет в обратном направлении - выставится второй.
Дальше откроется один из них, но если волатильность будет высокая то может открыть и второй.
Это Вам решать куда открываться, код есть - подредактируйте как Вам будет необходимо. Уберите одно из условий и получите только одну сделку,
вернее сказать один выставленный ордер, если условие выполнится.  И ждите когда цена его "зацепит".
Причина обращения: