Кому интересна сама стратегия, то могу описать в кратце как я торгую руками на реале:
Время торгов, желательно: вт - чт, понедельник и пятницу нужно торговать очень осторожно!
Берем таймфрейм H1, валютная пара: EURUSD, GBPUSD (шустрая пара, нужно быть внимательным), USDCHF, GBPJPY (как и любой кросс с фунтом очень шустрая, быть внимательным, USDCAD (не советовал бы, сильно реагирует на крупных игроков, новости) все выше перечисленные пары можно торговать по этой стратегии.
Используемые индикаторы:
1) MA (smoothed) 13, 21, 34, 89;
2) Axel-level;
3) ADX;
графики - японские свечи;
ну и по желанию MACD (дивергенции смотреть можно), Stohastic;
Торговать желательно по тренду (смотрим H4, D1 таймфреймы, трендовые индикаторы на старших таймфреймах)
Условия для buy: (нюанс, рынок идет вверх медленне чем падает!)
1) ценовой бар открывается ниже MA 89 и закрывается выше MA 89 - входим по рынку в лонг; стоп лосс выставляем ниже MA 89 на 10-20 пунктов (если младшие машки все еще ниже MA 89), стоп лосс выставляем ниже самого нижнего экстремума свечи + 5-10 пунктов или по фракталу (это если младшие машки уже находятся выше MA 89);
2) MA 34, 21, 13 располагаются выше MA 89 ( не обязательно! то есть младшие машки еще могут находиться ниже MA 89), смотрим таймфрейм H4, D1 - есть тенденция к продолжению тренда вверх - смело бай со стоп лоссом ниже самого нижнего экстремума свечи + 5-10 пунктов, есть признаки разворота, ослабления - тоже ставим бай, но уже с коротким стопом ниже MA 89 на 10-20 пунктов, если на старших таймфреймах противо тренд - внимательно! короткие стопы и профит по линиям индикатора Axel-level, уровням фибо (23, 38, 50% коррекции от всего тренда);
Условия для sell: (нюанс - рынок падает быстрее чем растет, учтите это!)
1) ценовой бар открывается выше MA 89 и закрывается ниже MA 89 - входим по рынку в шорт; стоп лосс выставляем выше MA 89 на 10-20 пунктов (если младшие машки все еще выше MA 89), стоп лосс выставляем выше самого нижнего экстремума свечи + 5-10 пунктов или по фракталу (это если младшие машки уже находятся ниже MA 89);
2) MA 34, 21, 13 располагаются ниже MA 89 ( не обязательно! то есть младшие машки еще могут находиться выше MA 89), смотрим таймфрейм H4, D1 - есть тенденция к продолжению тренда вниз - смело селл со стоп лоссом ниже самого нижнего экстремума свечи + 5-10 пунктов, есть признаки разворота, ослабления - тоже ставим селл, но уже с коротким стопом ниже MA 89 на 10-20 пунктов, если на старших таймфреймах противо тренд - внимательно! короткие стопы и профит по линиям индикатора Axel-level, уровням фибо (23, 38, 50% коррекции от всего тренда);
Сопровождение позиции и фиксация прибыли:
1) Самое главное!!! - появился профит равный стоп лоссу - сразу ставим в безубыток + спред, так Вы уменьшите количество убыточных сделок в своей системе, но и естественно подрежете как часто бывает и прибыль
2) тейк профит выставляем 3/1 к стоп лоссу, не меньше, можно и больше 5/1, 8/1 (смотрим старший таймфрем H4, D1 - если по тренду стоим и нет признаков разворота, коррекции, ослабления, то тейк профит можно поставить 5/1 - 8/1)
3) цена может не дойти до тейк профита (часто происходит, рынок не дает заработать много) и начать разворачиваться на таймфрейме H1 (закрываем сделку, когда ценовой бар закроется ниже MA 34 - для сделок buy; закрываем сделку, когда ценовой бар закроется выше MA 34 - для сделок sell)
MM:
1) Самое главное, риск на сделку должен быть 0,1-0,25%!!!!! не надо использовать большие риски! поверьте, то что пишут что риск на сделку 2% - типа стандарт и просадка 12-20% при таком риске -
ЭТО БОЛЬШОЙ ОБМАН!!
при риске 0,25% уже просадки могут доходить до 5-8%!! (проверено на реале с разными системами торговли), а теперь представьте что будет с 2% - 50-80%, вот поэтому многие и сливаются, ибо системы зачастую у них рабочие, а нервы не выдерживают и Коля приходит снова и снова.
Простая математика: система дает выигрышные сделки 30% / 70% - убыточные, таке профит к стоп лоссу=3/1, например у Вас в месяц выходит 40-50 сделок, это значит что убыточных выходит 28-35 сделок и причем убыточные сделки могут быть подряд и все 28-35 сделок!!! теперь подсчитайте если бы у вас был риск на сделку 2% чтобы вы в итоге лицезрели в терминале: уменьшение счета на 46-70% - никакие нервы у вас бы не выдержали и вы начинаете совершать ошибки - преждевременно фиксируете любую прибыль и.. скоро дядя Коля к вам приходит,
конечно многие скажут что есть система 50/50, 70/30 и тд. и что мол такая большая серия убыточных сделок может встретиться в одном лишь месяце из 12, ну и что - один раз встретится за год и этого будет достаточно!! :-(( чтобы пришел дядя Коля, ибо трейдеры психологически не выдерживают таких просадок и совершают ошибки, не верят в свои системы до конца.
Система торговли с риском 0,1-0,25% на сделку дает в среднем 3-5% прибыли в месяц, в год выходит 36-60% - и вы король Forbes!!!!
Как выжать из тренда максимально большее количество пунктов:
1) доливки на откатах по методу пирамиды по направлению тренда;
2) фиксация прибыли части позиций, а остаток отпускать в рост;
При флете, когда нет сигналов по тренду, неоднозначные участки, прозевали сигналы:
1) торгую по стратегии пробой азиатской сессии ( в 12-00 по МСК рисую горизонтальные линии минимум и максимум азиатской сессии на валютных парах GBPUSD, USDCHF, EURUSD, [по USDCAD в 15-00 по МСК] выставлаю отложенные ордера на 10 пунктов выше/ниже buystop, sellstop, стоп лосс 20 пунктов, тэйк профит 20 пунктов);
2) торговля по паттернам, каналам, пробой, отбой линий поддержки и сопротивления, торговля по axel-level - отбой/пробой;
3) не торгуем;
Canefis:
.............................................Условия для buy: (нюанс, рынок идет вверх медленнее, чем падает!)
Условия для sell: (нюанс - рынок падает быстрее, чем растет, учтите это!)
Canefis:
......... . ......... . .........................Условия для buy: (нюанс, рынок идет вверх медленнее, чем падает!)
Условия для sell: (нюанс - рынок падает быстрее, чем растет, учтите это!)
Имелось ввиду что когда тренд идет вниз - то цена проходит за одно и тоже время гораздо большее расстояние чем когда тренд идет вверх (то есть можно отрастать, скажем 500 пунктов в неделю, а скорректироваться вниз на 200-300 пунктов за 1-2 дня всего!)
P.S.Помогите подкорректировать код чтобы стоп лосс выставлял ниже/выше MA, а то иногда сделки на селл вообще не открывает, а также прикрутить безубыток, я в программировании не силен... :-((
P.S.Помогите подкорректировать код чтобы стоп лосс выставлял ниже/выше MA, а то иногда сделки на селл вообще не открывает, а также прикрутить безубыток
//+------------------------------------------------------------------+ //| Moving_Average_v01.mq4 | //+------------------------------------------------------------------+ #define MAGICMA 20050610 extern double Lots = 0.01; extern double MaximumRisk = 0.0025; extern double DecreaseFactor = 10; extern int MovingPeriod = 89; extern int MovingPeriod2 = 47; extern int MovingShift = 0; extern int MovingShift2 = 0; extern int StopLoss = 50; extern double WR = 3; // трейлинг-стоп (0 - откл) extern int Trail_Stop = 50; // шаг трейлинг-стопа extern int Step_TS = 50; // период торговли extern int Period_Torg = 60; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders() { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=OrdersHistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,01); //---- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size double min_l=MarketInfo(Symbol(),MODE_MINLOT); double max_l=MarketInfo(Symbol(),MODE_MAXLOT); //............................................. if(lot<min_l) lot=min_l; if(lot>max_l) lot=max_l; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double ma; double lma; int res; //---- go trading only for first tiks of new bar ma =iMA(NULL,Period_Torg,MovingPeriod, MovingShift, MODE_SMMA,PRICE_CLOSE,0); lma=iMA(NULL,Period_Torg,MovingPeriod2,MovingShift2,MODE_SMMA,PRICE_CLOSE,0); //---- sell conditions if(ma>lma && iOpen(Symbol(),Period_Torg,1)>ma && iClose(Symbol(),Period_Torg,1)<ma) { RefreshRates(); res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); if (res<0)Comment(GetLastError()); return; } //---- buy conditions if(lma>ma && iOpen(Symbol(),Period_Torg,1)<ma && iClose(Symbol(),Period_Torg,1)>ma) { RefreshRates(); res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); if (res<0)Comment(GetLastError()); return; } //---- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; double lma; //---- get Moving Average ma =iMA(NULL,0,MovingPeriod, MovingShift,MODE_SMMA,PRICE_CLOSE,0); lma=iMA(NULL,0,MovingPeriod2,MovingShift,MODE_SMMA,PRICE_CLOSE,0); //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { RefreshRates(); if(iClose(Symbol(),Period_Torg,1)<lma && iOpen(Symbol(),Period_Torg,1)>lma && lma>ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; } if(OrderType()==OP_SELL) { RefreshRates(); if(iClose(Symbol(),Period_Torg,1)>lma && iOpen(Symbol(),Period_Torg,1)<lma && ma>lma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; } } //---- } //+------------------------------------------------------------------+ void Check_TP_SL() { double ma =iMA(NULL,0,MovingPeriod, MovingShift,MODE_SMMA,PRICE_CLOSE,0); double SL; double TP; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { RefreshRates(); SL=0; if (StopLoss>0)SL=ND(ma-StopLoss*Point); TP=0; if (WR>0)TP=ND(Ask+WR*(OrderOpenPrice()-SL)); if((WR>0 && OrderTakeProfit()==0) || (StopLoss>0 && OrderStopLoss()==0)) OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Green); break; } if(OrderType()==OP_SELL) { RefreshRates(); SL=0; if (StopLoss>0)SL=ND(ma+StopLoss*Point); TP=0; if (WR>0)TP=ND(Ask-WR*(SL-OrderOpenPrice())); if((WR>0 && OrderTakeProfit()==0) || (StopLoss>0 && OrderStopLoss()==0)) OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Green); break; } } //---- } //+------------------------------------------------------------------+ void Check_Trail_Stop() { // трейлинг-стоп if (Step_TS<1)Step_TS=1; double sl; RefreshRates(); double tek_bid=Bid; double tek_ask=Ask; for(int i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS)==true)continue; if (OrderSymbol()!=Symbol())continue; if (OrderMagicNumber()!=MAGICMA)continue; if (OrderType() == OP_BUY) if (ND(tek_bid) >= ND(OrderOpenPrice()+Trail_Stop*Point)) { if (ND(OrderStopLoss())==0 || ND(OrderStopLoss()) < ND(OrderOpenPrice())) OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0); else { sl=OrderStopLoss()+Step_TS*Point; if (ND(sl) <= ND(tek_bid-(Trail_Stop+Step_TS)*Point) && ND(sl)>ND(OrderStopLoss())) OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0); } } if (OrderType() == OP_SELL) if (ND(tek_ask) <= ND(OrderOpenPrice()-Trail_Stop*Point)) { if (ND(OrderStopLoss())==0 || ND(OrderStopLoss()) > ND(OrderOpenPrice())) OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0); else { sl=OrderStopLoss()-Step_TS*Point; if (ND(sl) >= ND(tek_ask+(Trail_Stop+Step_TS)*Point) && ND(sl)<ND(OrderStopLoss())) OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0); } } } } //----------------------------------------------- double ND(double n) { return(NormalizeDouble(n,Digits)); } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders()==0) CheckForOpen(); else { CheckForClose(); if (StopLoss>0 || WR>0)Check_TP_SL(); if (Trail_Stop>0)Check_Trail_Stop(); } //---- } //+------------------------------------------------------------------+если сделать Step_TS=100000, то получится просто установка безубытка.
А каким образом был сделан первый тест (build 432)?
Ведь известно, что сборки ниже 500 уже давно официально не поддерживаются.
P.S.Помогите подкорректировать код чтобы стоп лосс выставлял ниже/выше MA, а то иногда сделки на селл вообще не открывает, а также прикрутить безубыток
//+------------------------------------------------------------------+ //| Moving_Average_v01.mq4 | //+------------------------------------------------------------------+ #define MAGICMA 20050610 extern double Lots = 0.01; extern double MaximumRisk = 0.0025; extern double DecreaseFactor = 10; extern int MovingPeriod = 89; extern int MovingPeriod2 = 47; extern int MovingShift = 0; extern int MovingShift2 = 0; extern int StopLoss = 50; extern double WR = 3; // трейлинг-стоп (0 - откл) extern int Trail_Stop = 50; // шаг трейлинг-стопа extern int Step_TS = 50; // период торговли extern int Period_Torg = 60; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders() { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=OrdersHistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,01); //---- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size double min_l=MarketInfo(Symbol(),MODE_MINLOT); double max_l=MarketInfo(Symbol(),MODE_MAXLOT); //............................................. if(lot<min_l) lot=min_l; if(lot>max_l) lot=max_l; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double ma; double lma; int res; //---- go trading only for first tiks of new bar ma =iMA(NULL,Period_Torg,MovingPeriod, MovingShift, MODE_SMMA,PRICE_CLOSE,0); lma=iMA(NULL,Period_Torg,MovingPeriod2,MovingShift2,MODE_SMMA,PRICE_CLOSE,0); //---- sell conditions if(ma>lma && iOpen(Symbol(),Period_Torg,1)>ma && iClose(Symbol(),Period_Torg,1)<ma) { RefreshRates(); res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); if (res<0)Comment(GetLastError()); return; } //---- buy conditions if(lma>ma && iOpen(Symbol(),Period_Torg,1)<ma && iClose(Symbol(),Period_Torg,1)>ma) { RefreshRates(); res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); if (res<0)Comment(GetLastError()); return; } //---- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; double lma; //---- get Moving Average ma =iMA(NULL,0,MovingPeriod, MovingShift,MODE_SMMA,PRICE_CLOSE,0); lma=iMA(NULL,0,MovingPeriod2,MovingShift,MODE_SMMA,PRICE_CLOSE,0); //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { RefreshRates(); if(iClose(Symbol(),Period_Torg,1)<lma && iOpen(Symbol(),Period_Torg,1)>lma && lma>ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; } if(OrderType()==OP_SELL) { RefreshRates(); if(iClose(Symbol(),Period_Torg,1)>lma && iOpen(Symbol(),Period_Torg,1)<lma && ma>lma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; } } //---- } //+------------------------------------------------------------------+ void Check_TP_SL() { double ma =iMA(NULL,0,MovingPeriod, MovingShift,MODE_SMMA,PRICE_CLOSE,0); double SL; double TP; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { RefreshRates(); SL=0; if (StopLoss>0)SL=ND(ma-StopLoss*Point); TP=0; if (WR>0)TP=ND(Ask+WR*(OrderOpenPrice()-SL)); if((WR>0 && OrderTakeProfit()==0) || (StopLoss>0 && OrderTakeProfit()==0)) OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Green); break; } if(OrderType()==OP_SELL) { RefreshRates(); SL=0; if (StopLoss>0)SL=ND(ma+StopLoss*Point); TP=0; if (WR>0)TP=ND(Ask-WR*(SL-OrderOpenPrice())); if((WR>0 && OrderTakeProfit()==0) || (StopLoss>0 && OrderTakeProfit()==0)) OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Green); break; } } //---- } //+------------------------------------------------------------------+ void Check_Trail_Stop() { // трейлинг-стоп if (Step_TS<1)Step_TS=1; double sl; RefreshRates(); double tek_bid=Bid; double tek_ask=Ask; for(int i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS)==true)continue; if (OrderSymbol()!=Symbol())continue; if (OrderMagicNumber()!=MAGICMA)continue; if (OrderType() == OP_BUY) if (ND(tek_bid) >= ND(OrderOpenPrice()+Trail_Stop*Point)) { if (ND(OrderStopLoss())==0 || ND(OrderStopLoss()) < ND(OrderOpenPrice())) OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0); else { sl=OrderStopLoss()+Step_TS*Point; if (ND(sl) <= ND(tek_bid-(Trail_Stop+Step_TS)*Point) && ND(sl)>ND(OrderStopLoss())) OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0); } } if (OrderType() == OP_SELL) if (ND(tek_ask) <= ND(OrderOpenPrice()-Trail_Stop*Point)) { if (ND(OrderStopLoss())==0 || ND(OrderStopLoss()) > ND(OrderOpenPrice())) OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0); else { sl=OrderStopLoss()-Step_TS*Point; if (ND(sl) >= ND(tek_ask+(Trail_Stop+Step_TS)*Point) && ND(sl)<ND(OrderStopLoss())) OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0); } } } } //----------------------------------------------- double ND(double n) { return(NormalizeDouble(n,Digits)); } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders()==0) CheckForOpen(); else { CheckForClose(); if (StopLoss>0 || WR>0)Check_TP_SL(); if (Trail_Stop>0)Check_Trail_Stop(); } //---- } //+------------------------------------------------------------------+если сделать Step_TS=100000, то получится просто установка безубытка.
Благодарю!!!!!
Класс, протестил за 2 года на GBPUSD H1 2011.01.01 - 2013.01.01 прибыль 120% при просадке 10%
Вот это уже похоже близко к ручной торговле.
А каким образом был сделан первый тест (build 432)?
Ведь известно, что сборки ниже 500 уже давно официально не поддерживаются.
У меня стоит терминал отдельный (build 432) специально для теста стратегий, терминал пропатченный, то есть он запускается и не логинится к серверу, однако в обзоре рынка есть все валютные пары
Вот по этой ссылке я сделал себе, там все подробно описано: http://www.argolab.net/kachestvo-modelirovaniya-99.html
Скачайте себе Tickstory Lite, файл 99.zip (в нем МT4 build 432 с патчем-start_test.bat) из статьи выше.
По поводу программы Tickstory lite:
1) устанавливаете прогу;
2) запускаете, в окне справа выбираете валютную пару правой кнопкой мышки - "Скачать"
3)выбираете дату скачивания, все пошло скачивание тиков с DucasCopy
4) как скачалось, выбираете правой кнопкой мыши все тот же скачанный инструмент и жмете - "Экспорт в МТ4"
5) в появившемся окне "Экспорт данных" выбираете дату, таймфреймы, Важно!: обязательно указывать часовой пояс который Вы используете у Вашего брокера в терминале
6) отмечаем где установлен MT4 для тестов, путь к папкам history, имя вашего брокера определятся сам
7) переходим во вкладку "Информация о метатрейдер" и там по Вашей валютной паре настраиваем обязательно спред!! (реальный спред как у Вашего брокера!), плечо, маржу, 4/5 знаков
8) жмете ок и программа сама раскидает автоматом все тиковые данные в метатрейдер в нужные папки -..."Имя сервера"/history и ...tester/history
Все потом можете запускать терминал: Терминал запускать файлом start_tester.bat
берете совов, валютную пару, тестер стратегий и проверяете, качество моделирования должно быть 99.9%
Удачи и профита!!!
удалите из последнего сообщения блок с текстом программы. А то получился дубль... я в своей программе нашел ошибку и здесь исправил, а в вашем дубле она осталась...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
советник MA:
Author: Vyacheslav