Сделал советника выставляет ордера как в авторской методики, но есть отличия. Выставляет по уровням в зависимости от ATR (если методика беспроигрышная, то какая разница от каких уровней выставлять). С началом нового дня закрывает и удаляет все ордера (просто я не знаю как еще закрыть ордера, которые без ТП и СЛ и которые не принесут прибыли).
На некотором расстоянии от цены через одинаковый промежуток выставляются ордера двух типов: прямые (Buy Stop вверх от цены и Sell Stop вниз от цены) и перевернутые (Sell Limit вверх от цены и Buy Limit вниз от цены). Ордера Buy Stop и Sell Limit ставятся на одинаковых уровнях (попарно), как и ордера Sell Stop и Buy Limit.
Все ордера имеют одинаковый объем и Stop Loss равный шагу между ордерами.
У прямых (Buy Stop и Sell Stop) ордеров нет Take Profit. У перевернутых (Sell Limit и Buy Limit) ордеров Take Profit нарастающий арифметически: у первого (ближайшего к цене) ордера равен одному шагу между ордерами, у второго (чуть более удаленного) - трем шагам, у третьего - пяти и так далее.
Система полностью неубиваемая. Предоставленная сама себе, в итоге всегда закрывается с прибылью или в нуле.
Очень хорош тренд без откатов на размер шага - прибыль нарастает как снежный ком, позволяя собрать одно движение цены несколько раз. На флете заработок умеренный, либо выходит в ноль. Самый медленный вариант - паттерн "дракон", когда цена движется в одну сторону, но откатывает от каждого уровня назад на один шаг, после чего идет дальше. В этом случае потребуется просто чуть больше времени на выход в прибыль или ноль.
Исходя из этого, шаг между уровнями для выставления ордеров выбирайте из такого расчета, чтобы цена не цепляла уже пройденные уровни мини-коррекциями.
Можно оставлять схему без присмотра, главное, чтобы цена не вышла за пределы уровней, на которых стоят ордера. Другой вариант - слежение за Diablo и закрытие по достижении некоторой прибыли (например, размером в один шаг) с последующей перестановкой ордеров заново, либо просто однократное закрытие с прибылью.
#property copyright "Jon Katana"#property show_inputsexternint Step=50,Spread=2,Levels=5;
externdouble Up=0,Vol=0.1;
int TotalOrders,i;
int start()
{Up=Ask;
TotalOrders=OrdersTotal();
for (i=0; i<=TotalOrders; i++){
if (OrderSelect(0,SELECT_BY_POS)==true){
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Red);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
if (OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket(),Green);
if (OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket(),Green);
if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket(),Green);
if (OrderType()==OP_BUYLIMIT) OrderDelete(OrderTicket(),Green);
}
}
for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)-Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);
}
Добавил в скрипт очищение. Тоесть если есть открытые или отложенники, он сначала всё удаляет, а потом раставляет отложки в соотвествии с параметрами...
nikelodeon: Почему переменную UP не присвоить аск, получитсья что ордера будут выставляться от текущей цены....
По двум причинам:
1) Нельзя ставить ордера начиная с определенного уровня (сопротивления, поддержки, Фибоначчи, Rabbit...)
2) Ордеров ставится несколько десятков и выставляются они не мгновенно. За это время Ask может сместиться от начального значения, что непредсказуемо сдвинет места установки ордеров и их Take Profit со Stop Loss. Это позволит дилинговому центру открывать ордера на уровнях не парой, а "выдергивать" отдельные ордера, не цепляя второй ордер из пары и потом загонять их в убыток, что рушит всю систему.
1) Нельзя ставить ордера начиная с определенного уровня (сопротивления, поддержки, Фибоначчи, Rabbit...)
2) Ордеров ставится несколько десятков и выставляются они не мгновенно. За это время Ask может сместиться от начального значения, что непредсказуемо сдвинет места установки ордеров и их Take Profit со Stop Loss. Это позволит дилинговому центру открывать ордера на уровнях не парой, а "выдергивать" отдельные ордера, не цепляя второй ордер из пары и потом загонять их в убыток, что рушит всю систему.
Можно первые два ордера установить с использованием текущей цены, а цены остальных вычислять относительно цены первых ордеров. Причём первые два ордера могут быть рыночными.
Сделал советника выставляет ордера как в авторской методики, но есть отличия. Выставляет по уровням в зависимости от ATR (если методика беспроигрышная, то какая разница от каких уровней выставлять). С началом нового дня закрывает и удаляет все ордера (просто я не знаю как еще закрыть ордера, которые без ТП и СЛ и которые не принесут прибыли).
Можете попробовать оптимизировать параметры. Мне просто лень, не верю я в эту стратегию.
Когда аргументированно критиковать лень, а сказать что-нибудь очень хочется, то лучше промолчать, а не заниматься калом.
Diablo v09.02.12 (Immortal Version)
На некотором расстоянии от цены через одинаковый промежуток выставляются ордера двух типов: прямые (Buy Stop вверх от цены и Sell Stop вниз от цены) и перевернутые (Sell Limit вверх от цены и Buy Limit вниз от цены). Ордера Buy Stop и Sell Limit ставятся на одинаковых уровнях (попарно), как и ордера Sell Stop и Buy Limit.
Все ордера имеют одинаковый объем и Stop Loss равный шагу между ордерами.
У прямых (Buy Stop и Sell Stop) ордеров нет Take Profit. У перевернутых (Sell Limit и Buy Limit) ордеров Take Profit нарастающий арифметически: у первого (ближайшего к цене) ордера равен одному шагу между ордерами, у второго (чуть более удаленного) - трем шагам, у третьего - пяти и так далее.
Скрипт для выставления ордеров:
Система полностью неубиваемая. Предоставленная сама себе, в итоге всегда закрывается с прибылью или в нуле.
Очень хорош тренд без откатов на размер шага - прибыль нарастает как снежный ком, позволяя собрать одно движение цены несколько раз. На флете заработок умеренный, либо выходит в ноль. Самый медленный вариант - паттерн "дракон", когда цена движется в одну сторону, но откатывает от каждого уровня назад на один шаг, после чего идет дальше. В этом случае потребуется просто чуть больше времени на выход в прибыль или ноль.
Исходя из этого, шаг между уровнями для выставления ордеров выбирайте из такого расчета, чтобы цена не цепляла уже пройденные уровни мини-коррекциями.
Можно оставлять схему без присмотра, главное, чтобы цена не вышла за пределы уровней, на которых стоят ордера. Другой вариант - слежение за Diablo и закрытие по достижении некоторой прибыли (например, размером в один шаг) с последующей перестановкой ордеров заново, либо просто однократное закрытие с прибылью.
Поправка в скрипте: было не туда смещение на спред в ордерах Sell Limit:
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0
какие тут параметры вписать чтоб заработало?
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0
какие тут параметры вписать чтоб заработало?
Step - шаг между ордерами в пунктах (например, 20 для четырехзнака или 200 для пятизнака);
Spread - спред в пунктах (например 2 для четырехзнака или 20 для пятизнака);
Levels - количество уровней, на которых будут выставлены ордера (например 20);
Up - линия НАД ценой, с которой начнется выставление ордеров вверх (вниз ордера будут выставляться автоматически с отступом в Step от этой линии);
Vol - объем ордеров (например 0.1).
Почему переменную UP не присвоить аск, получитсья что ордера будут выставляться от текущей цены....
По двум причинам:
1) Нельзя ставить ордера начиная с определенного уровня (сопротивления, поддержки, Фибоначчи, Rabbit...)
2) Ордеров ставится несколько десятков и выставляются они не мгновенно. За это время Ask может сместиться от начального значения, что непредсказуемо сдвинет места установки ордеров и их Take Profit со Stop Loss. Это позволит дилинговому центру открывать ордера на уровнях не парой, а "выдергивать" отдельные ордера, не цепляя второй ордер из пары и потом загонять их в убыток, что рушит всю систему.
По двум причинам:
1) Нельзя ставить ордера начиная с определенного уровня (сопротивления, поддержки, Фибоначчи, Rabbit...)
2) Ордеров ставится несколько десятков и выставляются они не мгновенно. За это время Ask может сместиться от начального значения, что непредсказуемо сдвинет места установки ордеров и их Take Profit со Stop Loss. Это позволит дилинговому центру открывать ордера на уровнях не парой, а "выдергивать" отдельные ордера, не цепляя второй ордер из пары и потом загонять их в убыток, что рушит всю систему.