Подскажите как написать функцию открытия отложенного ордера(на покупку) по цене закрытия 5-го бара с отступом 5 пипсов от цены закрытия этого бара.
Спасибо.
Если никто не отвечает, то есть три варианта:
1. никто не знает
2. ответ уже дан
3. ты спрашиваешь что-то не то...
Какой вариант соответствует твоему случаю, попробуй угадать сам.
Подскажите как написать функцию открытия отложенного ордера(на покупку) по цене закрытия 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 ();
Это правильно ?
// выставляем ордер на покупку
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);Сделав это ты увидишь, что тэйкпрофит и стоплос у тебя кривые.
Проскальзывание, во вобщем случае, не надо делать ноль.
Ну и еще чего новое выучишь...
Пригодится.
Это правильно ?
// выставляем ордер на покупку
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);Сделав это ты увидишь, что тэйкпрофит и стоплос у тебя кривые.
Проскальзывание, во вобщем случае, не надо делать ноль.
Ну и еще чего новое выучишь...
Позиция может не открыться если в момент постановки ордера рынок ближе минимального стопа, надо это учесть.
Ещё и наличие денег хорошо бы заранее проверить. И торговый поток провентилировать... Делал я как-то гридера, в порядке само-образования, на тесте все хорошо, а на демо ордера строго через один ставились.
Всего сходу не вспомнишь, да и не нужно. Для этого есть коды ошибок. Ты его мучаешь, он не идет, а плюется ошибками - смотрим код, проверяем все входящие переменные, анализируем, исправляем. ..
Я же ставлю отложенный от цены закрытия 5 пипсов. Если тока цена
в данный момент на этом уровне, то конечно не откроется.
close [5]+mypendinglevel - это значит, что берется цена закрытия 5 бара и
к ней прибавляется моё установленное колличество пипсов. Это
так или нет ?
Я же ставлю отложенный от цены закрытия 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 пипсов. Если тока цена
в данный момент на этом уровне, то конечно не откроется.
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 бара, и на покупку и на продажу ???
Сначала выставится один из ордеров, если не активизируется и цена пойдет в обратном направлении - выставится второй.
Дальше откроется один из них, но если волатильность будет высокая то может открыть и второй.
Это Вам решать куда открываться, код есть - подредактируйте как Вам будет необходимо. Уберите одно из условий и получите только одну сделку,
вернее сказать один выставленный ордер, если условие выполнится. И ждите когда цена его "зацепит".
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Спасибо.