extern double ProfitClose = 10; //закрывать все ордера при получении профита в валюте депозита
extern double LossClose = 1000; //закрывать все ордера при получении убытка
extern bool AllSymbol = false;//учитывать все инструменты или только тот, на котором стоит советник
extern int Magic = 0; //0 - учитывать все ордера (с любым Magic номером)
extern datetime TimeSet = D'2011.12.10 17:47'; //Время выставления ордеров, если текущее время больше установленного, то выставляются сразу
extern bool Stop = true; //открыть стоп ордера
extern bool Limit = true; //открыть лимитные ордера
extern bool SELL = true; //открыть ордера SELL
extern bool BUY = true; //открыть ордера BUY
extern string __ = "";
extern double FirstBuyStop = 0; //цена выставления первого BuyStop ордера, если 0 то первый BuyStop будет выставлен по цене Ask+FirstStop
extern double FirstSellStop = 0; //цена выставления первого SellStop ордера, если 0 то первый SellStop будет выставлен по цене Bid-FirstStop
extern double FirstBuyLimit = 0; //цена выставления первого BuyLimit ордера, если 0 то первый BuyLimit будет выставлен по цене Bid-FirstStop
extern double FirstSellLimit = 0; //цена выставления первого SellLimit ордера, если 0 то первый SellLimit будет выставлен по цене Ask+FirstStop
extern int FirstStop = 100; //расстояние (в пунктах) от текущей цены до первого Stop ордера в случае First..Stop=0
extern int FirstLimit = 50; //расстояние (в пунктах) от текущей цены до первого Limit ордера в случае First..Limit=0
extern int StepStop = 30; //расстояние (в пунктах) между Stop ордерами
extern double K_StepStop = 1; //коэффициент расширения сетки
extern int StepLimit = 30; //расстояние (в пунктах) между Limit ордерами
extern double K_StepLimit = 1; //коэффициент расширения сетки
extern string _ = "";
extern int Orders = 5; //кол-во ордеров сетки
extern double LotStop = 0.5; //объем первого Stop ордера
extern double K_LotStop = 1; //умножение лота Stop ордеров
extern double Plus_LotStop = 0; //добавление лота Stop ордеров
extern double LotLimit = 0.1; //объем первого Limit ордера
extern double K_LotLimit = 2; //умножение лота Limit ордеров
extern double Plus_LotLimit = 0; //добавление лота Limit ордеров
extern int stoploss = 50; //уровень выставления SL, если 0, то SL не выставляется
extern int takeprofit = 100; //уровень выставления TP, если 0, то TP не выставляется
extern int Expiration = 1440; //Срок истечения отложенного ордера в минутах, если 0, то срок не ограничен (1440 - сутки)
extern int attempts = 10; //кол-во попыток открытия ордера
extern int Magic = 0; //уникальный номер ордера
Я вообще-то человек не публичный и не люблю выкладывать свои советники, но раз пошла такая пьянка, я за пять минут "смастрачил" из выложенного скрипта и советника уважаемого Cmillion вот такую штуку:
Посмотреть вложение 106030
Grid по-английски - сетка.
Оставлены все ссылки на правообладателя и автора Cmillion.
Думаю, он не будет на меня в обиде.
Зато теперь можно тестировать на истории на полном автомате сколько угодно и взахлеб искать пресловутый "грааль".
Для этого надо отключить все комманды Comment, Alert и ObjectSetText.то, что нужно, спасибо дружище..
только тестится долго.. есть спецы по улучшению быстроты тестирования?
Для этого надо отключить все комманды Comment, Alert и ObjectSetText.
В разы тормозят тестирование все команды вывода на экран.
Можно с этого начать изучать mql4.
Подсказка - такие строки надо найти и закомментить, поставив в начале строки два символа //
extern string макс_кол_во_ордеров = "";
extern int N_BuyLimit = 10; //разрешить сделки BuyLimit в кол-ве
extern int N_BuyStop = 30; //разрешить сделки BuyStop в кол-ве
extern int N_SellLimit = 10; //разрешить сделки SellLimit в кол-ве
extern int N_SellStop = 30; //разрешить сделки SellStop в кол-ве
extern string _ = "";
extern int FirstStop = 20; //(пипс) расстояние до первого Stop ордера
extern int StepTrall = 2; //(пипс) шаг тралла - перемещать стоп ордер не ближе чем StepTrall
extern int FirstLimit = 20; //(пипс) расстояние до первого Limit ордера
extern string __ = "";
extern int StepLimit = 30; //(пипс) расстояние между Limit ордерами
extern double K_StepLimit = 1.5; //множитель шага Limit ордеров
extern string ___ = "";
extern int StepStop = 30; //(пипс) расстояние между Stop ордерами
extern double K_StepStop = 1.0; //множитель шага Stop ордеров
extern string ____ = "";
extern double LotStop = 0.1; //первый лот Stop ордера
extern double PlusLotStop = 0.1; //прибавка к лоту последующего ордера
extern double K_LotStop = 1.0; //коэффициент увеличения лота последующего ордера
extern double MaxIncreasesStop = 100; //максимально возможный лот, если по рссчету лот получается больше, то выставляем ордер лотом = MaxIncreasesLimit
extern string _____ = "";
extern double LotLimit = 0.2; //первый лот Limit ордера
extern double PlusLotLimit = 0.1; //прибавка к лоту последующего ордера
extern double K_LotLimit = 1.5; //коэффициент увеличения лота последующего ордера
extern double MaxIncreasesLimit = 100; //максимально возможный лот, если по рссчету лот получается больше, то выставляем ордер лотом = MaxIncreasesLimit
extern string ______ = "";
extern int OrderAllClose = 15; //(шт) закрывать ордера только по общему профиту, если общее кол-во ордеров достигло OrderAllClose
extern double ProfitClose = 0; //(валюта депозита)закрывать все ордера при получении профита, если 0 то расчет по Koeff_Profit
extern double Koeff_Profit = 1.0; //коэффициент ProfitClose = ProfitClose * Koeff_Profit
extern double Koeff_ProfitBuy = 1.5; //коэффициент ProfitClose = ProfitClose * Koeff_Profit
extern double Koeff_ProfitSell = 1.5; //коэффициент ProfitClose = ProfitClose * Koeff_Profit
extern double ProfitCloseBuy = 0.0; //(валюта депозита)закрывать все ордера направления BUY при получении профита по ордерам направления BUY, если 0 - отключено
extern double ProfitCloseSell = 0.0; //(валюта депозита)закрывать все ордера направления SELL при получении профита по ордерам направления SELL, если 0 - отключено
extern int OppositeOrdersClose = 10; //закрываем дальний противоположный ордер совместно с профитом направления, если кол-во противоположных ордеров достигло OppositeOrdersClose
extern string _______ = "";
extern int DigitsLot = 1; //округление ордеров 1- десятые 2 сотые
extern int Magic = 7000;
extern bool DrawInfo = true; //вывод информации на экран
extern int FontSize = 12; //размер шрифта
extern int Corner = 1; //угол вывода информации
extern color TextColor = Aqua; //цвет вывода информации
extern color Plus = Lime;
extern color Minus = Red;
extern color Null = Aqua;
extern string Filter_Time = "";
extern int TimeStart = 0 , //ограничение времени работы советника
TimeEnd = 24, //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
FridayHourClose = 18; //час закрытия ордеров в пятницу
Вот тут коды ошибок:Да и вообще имеет смысл перебрать весь код,
2013.02.10 20:06:29 2012.02.01 17:22 Grid_Profit_Cmillion GBPUSD,M5: OrderSend error 4107
и тд и тп, прям вот даже 131_ю увидел.
Владимир если не затруднит, накидайте легкую атс с защитой от дурака (проверка ордеров)
а в формате mq4 не жалко?
Расскажите о последней вашей сетке Setka Limit Loc v8d ?
extern double ProfitStartTrall = 0; //закрывать все ордера при получении профита
extern double Koeff_Profit = 0.3;//коэффициент ProfitStartTrall = ProfitStartTrall * ProfitStartK
extern double TrailingPercentProfit = 30; //если 0 то ордера закрываются по ProfitStartTrall иначе они тралятся, (% от прибыли)
extern int TakeProfit = 0; //тейкпрофит от общего безубытка
extern int LocProfit = 0; //профит общего закрытия после включения локов (в валюте депозита)
extern string _ = "";
extern bool Buy = true; //разрешить сделки Buy
extern bool Sell = true; //разрешить сделки Sell
extern string __ = "";
extern int OrdersLimit = 20; //максимальное колличество Limit ордеров (не более 99)
extern int OrdersStop = 0; //максимальное колличество Stop ордеров (не более 99)
extern string ___ = "";
extern double lotLimit = 0.1; //первый лот лимит ордеров, если 0, то % от депозита risk Limit
extern double riskLimit = 1; //процент от депозита для определения лота
extern double lotStop = 0.1; //первый лот стоп ордеров, если 0, то % от депозита riskStop
extern double riskStop = 5; //процент от депозита для определения лота
extern double PlusLotStop = 0.0; //добавка к последующим лотам
extern double PlusLotLimit = 0.0; //добавка к последующим лотам
extern double K_LotStop = 2.0; //умножение следующих лотов Stop
extern double K_LotLimit = 2.0; //умножение следующих лотов Limit
extern int DigitsLot = 2; //округление ордеров 1- десятые (0.1) 2 сотые (0.01)
extern int MaxLot = 100; //Советник не может выставить лот более MaxLot
extern string ____ = "";
extern int MoveStepGread = 10; //шаг перемещения сетки, если 0 не перемещается (работает только при односторонней сетке)
extern int FirstStepLimit = 10; //первый шаг Limit ордеров от текущей цены
extern int FirstStepStop = 50; //первый шаг Stop ордеров от последнего Limit ордера
extern int StepLimit = 10; //расстояние между ордерами, если =0 то автоподстройка сетки под цену
extern int StepStop = 20; //расстояние между ордерами
extern double K_StepLimit = 1; //коэффициент изменения расстояния между LIMIT ордерами
extern double K_StepStop = 1; //коэффициент изменения расстояния между STOP ордерами
extern int Stretching = 5; //с какого ордера Использовать растяжение сетки, если 0 то растяжения нет.!!!!!!!!!!!!
extern int StepStretch = 20; //расстояние между ордерами после начала работы функции Stretching !!!!!!!!!!!
extern double K_StepStretch = 1.3; //коэффициент изменения расстояния между ордерами растяжения !!!!!!!!!
extern int MaxPips = 100; //Ставить ордера не далее от текущей цены (измеряется в пипсах)
extern string _____ = "";
extern int SLossLimit = 0; //стоплосс Limit ордеров
extern int TProfitLimit = 0; //тейкпрофит (если -1 то TP=Step) Limit ордеров
extern int SLossStop = 0; //стоплосс Stop ордеров
extern int TProfitStop = 0; //тейкпрофит (если -1 то TP=Step) Stop ордеров
extern int NoLoss = 0; //перевод в безубыток при превышении ценой заданного кол-ва пунктов от точки общего безубытка
extern int MinProfitNoLoss = 1; //минимальный профит при переводе в безубыток
extern double TrailingPercentStep = 0; //тралл отдельных ордеров (без общего безубытка) задается в процентах от сетки
extern string ___________________ = "";
extern int SleepTime = 0; //таймаут после закрытия ордеров в минутах
extern int magic = 1000;
extern double Diapazon = 1.0; //коэффициент расширения сетки
extern string _____________________ = "";
extern bool TrailingOn = false; //вкл/откл окно трейлинг отдельных направлений по пунктам
extern string parameters.trailing = "1-Candle 2-Fractals 3-ATR >3-pips";
extern int trailingStop = 1; // тралл, если "0-off 1-Candle 2-Fractals 3-ATR >3-pips";
extern int TF_Tralling = 5; // таймфрейм свечей или фракталов для тралла
extern int deltaTralling = 0; // отступ от фрактала или свечи при определении стоплосса. (offset from the fractal or candles)
extern int StepTralling = 1; // шаг - перемещать стоплосс не ближе чем Step (step Thrall, moving not less than Step n )
extern int period_ATR = 14; // период ATR для трейлинга
extern string __________________ = "";
extern bool AlertOn = true; //вкл/откл окно Alert
extern bool SendMailInfo = false; //отправка информации на почту
extern bool DrawInfo = true; //вывод информации на экран
extern int font_size = 10; //размер шрифта
extern int Corner = 1; //угол вывода информации
extern color text_color = Lime; //цвет вывода информации
extern string фильтр.по.времени = "";
extern string Monday = ""; //пн
extern int TimeStartMonday = 0 , //ограничение времени работы советника
TimeEndMonday = 24; //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
extern string Tuesday = ""; //вт
extern int TimeStartTuesday = 0 , //ограничение времени работы советника
TimeEndTuesday = 24; //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
extern string Wednesday = ""; //ср
extern int TimeStartWednesday = 0 , //ограничение времени работы советника
TimeEndWednesday = 24; //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
extern string Thursday = ""; //чт
extern int TimeStartThursday = 0 , //ограничение времени работы советника
TimeEndThursday = 24; //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
extern string Friday = ""; //пт
extern int TimeStartFriday = 0 , //ограничение времени работы советника
TimeEndFriday = 10; //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
extern int NoLossLoc = 20; //переводить лок ордера в безубыток при превышении ценой заданного кол-ва пунктов от точки открытия ордера (0- отключено)
extern int MinPipsLoc = 10; //не ставить лок ордера ближе этого значения от цены (а пипсах)
нет, спасибо, я для народа ищу..Нет конечно, пишите в личку договоримся.
И все сосиски сожрал
Olvimaik, спасибо за автоматизацию скриптов уважаемого cmillion. Если не ошибаюсь, сетки Стоп и Лимит должны открываться разным количеством ордеров. В настройках только один параметр Orders = 5; //кол-во ордеров сетки Буду признателен, если пропишите в настройках возможность установки сеток Стоп и Лимит разным количеством ордеров. В любом случае благодарю.
extern int OrdersStop = 5; //кол-во ордеров Stop сетки
extern int OrdersLimit = 5; //кол-во ордеров Limit сетки
Нет конечно, пишите в личку договоримся.