Советник со стоп-ордерами |
1й старт-ордер Sell. К нему открыты sell-stop и buy-stop.
Сработал buy-stop — все БУ, СЛ, ТП, и трал к ордерам удалились, на новый buy проставились свои sell-stop и buy-stop.
БУ, СЛ, ТП, и трал к нему не ставятся, т.к. он против направления 1го старт-ордера Sell.
Сработал к этому buy sell-stop:
— к новому Sell открылись sell-stop и buy-stop + выставлены БУ, СЛ, ТП, и трал, т.к. он в направлении 1го старт-ордера Sell.
Сработал к этому Sell sell-stop:
— к новому Sell открылись sell-stop и buy-stop + выставлены БУ, СЛ, ТП, и трал, т.к. он также в направлении 1го старт-ордера.
При этом БУ, СЛ, ТП, и трал к предыдущему Sell тоже сохранены, т.к. между ними не было противоположного buy-ордера.
И т.д. После открытия каждого ордера противоположного 1му старт-ордеру направления, все БУ, СЛ, ТП, и трал — удаляются,
после открытия каждого ордера в направлении 1го старт-ордера — прежние сохраняются и новые ставятся и только на крайний(новый) рыночный ордер.
===
Т.е. нужна функция: — ставить БУ, СЛ, ТП, и трал только к новому рыночному ордеру того же направления, что 1й (учётный) старт-ордер группы.
int start(){
int Total = OrdersTotal();
for(int i=Total-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
OrderModify(OrderTicket(), NormalizeDouble(OrderOpenPrice(), Digits),0,0,0);
}
/*--------------------------------------------------------------------
<i>В определенное время(задаётся в параметрах) выставляются
два отложенных ордера байстоп и селстоп на расстоянии в пунктах (задается в
параметрах) от текущей цены, с TP и SL в пунктах (задается в параметрах).
После срабатывания одного из ордеров, противоположный удаляется.
Если включен трал, то скрипт сопровождает открытую позицию тралом и после ее закрытия заканчивает свою работу.</i>
//--------------------------------------------------------------------*/
//--------------------------------------------------------------------*/
extern int stoploss = 20, //уровень выставления SL, если 0, то SL не выставляется
takeprofit = 20, //уровень выставления TP, если 0, то TP не выставляется
Magic = 0; //уникальный номер ордера
extern double Lot = 0.1; //объем ордеров
extern datetime TimeSet = D'2016.12.09 16:30'; //Время выставления ордеров, если текущее время больше установленного, то выставляются сразу
extern datetime TimeClose = D'2016.12.09 16:39'; //Время удаления ордеров и закрытия всех позиций
extern int LevelUp = 10; //расстояние до buystop
extern int LevelDn = 10; //расстояние до sellstop
extern int TrailingStop = 10, //трейлингстоп, если 0, то нет трейлинга
TrailingStart = 0, //старт трейлинга
TrailingStep = 0; //шаг трала
extern int MitutClose = 135;//время жизни отложенного ордера
int slippage=3;
double STOPLEVEL;
//--------------------------------------------------------------------
24 февраля 2017
|
27 февраля 2017
|
Комментарии (0)
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий