Нужно написать советник. Есть идея. - страница 3

 
lascu.roman писал(а) >>

у меня изначально идея была использвать это на дневках

 

Н4 с теми же параметрами

 
dimasik >>:

у меня изначально идея была использвать это на дневках

 открыть отложные ордера канешно возможно. только там тоже надо сразу и TP и SL? или как?

 

H1

 
lascu.roman писал(а) >>

открыть отложные ордера канешно возможно. только там тоже надо сразу и TP и SL? или как?

да, при отложенниках можно сразу устанавливать Лосей и Профей.

 
dimasik >>:

да, при отложенниках можно сразу устанавливать Лосей и Профей.

если хочеш завтра все зделаю. щас мне надо идти. ;-)

 
lascu.roman писал(а) >>

если хочеш завтра все зделаю. щас мне надо идти. ;-)

не вопрос, спасибо огромное, если буду получать прибыль с него, то обязательно отблагодарю...

 

Немецкий DAX

Strategy Tester Report
Break
BroCo-San-Francisco (Build 220)


Символ FDAXH9 (DAX (eurex) (08:00 - 22:00) Exp 20/03/2009)
Период 1 Час (H1) 2008.07.07 16:00 - 2009.01.13 21:00 (2007.12.01 - 2009.01.14)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры TP_e=150; SL_e=50; BreakDown_e=15; BreakUp_e=15; Trailing=35; Lot=0.01;
Баров в истории 1770 Смоделировано тиков 210146 Качество моделирования n/a
Ошибки рассогласования графиков 602
Начальный депозит 200.00
Чистая прибыль 1567.39 Общая прибыль 2945.95 Общий убыток -1378.56
Прибыльность 2.14 Матожидание выигрыша 1.01
Абсолютная просадка 2.46 Максимальная просадка 26.18 (1.46%) Относительная просадка 4.65% (12.01)
Всего сделок 1547 Короткие позиции (% выигравших) 796 (48.87%) Длинные позиции (% выигравших) 751 (44.47%)
Прибыльные сделки (% от всех) 723 (46.74%) Убыточные сделки (% от всех) 824 (53.26%)
Самая большая прибыльная сделка 4.83 убыточная сделка -1.74
Средняя прибыльная сделка 4.07 убыточная сделка -1.67
Максимальное количество непрерывных выигрышей (прибыль) 9 (40.35) непрерывных проигрышей (убыток) 14 (-24.36)
Максимальная непрерывная прибыль (число выигрышей) 40.35 (9) непрерывный убыток (число проигрышей) -24.36 (14)
Средний непрерывный выигрыш 2 непрерывный проигрыш 2

 

Вот версия на отложенниках

//+------------------------------------------------------------------+
//| exp_Higt-Low.mq4
//| meta-trader
//| http://mql.mega-project.biz = Тысячи советников и индикаторов бесплатно скачать
//+------------------------------------------------------------------+
#property copyright "meta-trader"
#property link      "http://mql.mega-project.biz = Тысячи советников и индикаторов бесплатно скачать"

extern bool limit=true; // если ТРУЕ ТО ставятся стоп-ордера, а если ФАЛСЕ то ставятся лимитники
//extern int Dist = 10;
extern int BuyDist = 10;
extern int SellDist = 10;

extern int TakeProfit=1000; // тэйкпрофит
extern int Stoploss=40; // стоплосс      
extern int TrailingStop=200; // тралинг
extern bool mini_forex=true; // Если Ваш брокер допускает лоты типа 0,0X то 'mini_forex=true'
extern int Metod_lot=0; // Выбор лота Metod_lot=0 - фиксированный Metod_lot=1 - процент от депозита
extern double Lot=0.1; // Фиксированный размер лота   
extern double LotsPercent=5; // Процент от депозита
extern int MAGIC=1987088; // Магическое число ордера
extern int Slippage=3; // Проскальзывание
extern string comment= "exp_Higt-Low";// Коментарий поз
static int prevtime = 0;
int start()
  {
//----
if(OrdersTotal()>0 &&  TrailingStop!=0)  Trailingstoplossi ();
double iH=iHigh(NULL,0,1);
double iL=iLow(NULL,0,1);
if(Time[0] == prevtime) return(0); prevtime = Time[0];  /*Orders_delet();*/ Orders_open(iH,iL);
//----
   return(0);
  }
//+------------------------------------------------------------------+
void Orders_open(double zH, double zL)
{
int ticket,err;
double tp=0, sl=0;
/*int BuyDist = Dist;
int SellDist = Dist;*/
RefreshRates();
if(limit==true)
{
if(TakeProfit!=0)tp=NormalizeDouble((zH+BuyDist*Point+TakeProfit*Point),Digits);
if(Stoploss!=0)sl=NormalizeDouble((zH+BuyDist*Point-Stoploss*Point),Digits);
OrderSend(Symbol(),OP_BUYSTOP,Lotsi(),NormalizeDouble(zH+BuyDist*Point,Digits),Slippage,sl,tp,comment,MAGIC,0,Green);
if(TakeProfit!=0)tp=NormalizeDouble((zL-SellDist*Point-TakeProfit*Point),Digits);
if(Stoploss!=0)sl=NormalizeDouble((zL-SellDist*Point+Stoploss*Point),Digits);
OrderSend(Symbol(),OP_SELLSTOP,Lotsi(),NormalizeDouble(zL-SellDist*Point,Digits),Slippage,sl,tp,comment,MAGIC,0,Green);
}
else{
if(TakeProfit!=0)tp=NormalizeDouble((zL-BuyDist*Point+TakeProfit*Point),Digits);
if(Stoploss!=0)sl=NormalizeDouble((zL-BuyDist*Point-Stoploss*Point),Digits);
OrderSend(Symbol(),OP_BUYLIMIT,Lotsi(),zL-NormalizeDouble(BuyDist*Point,Digits),Slippage,sl,tp,comment,MAGIC,0,Green);
if(TakeProfit!=0)tp=NormalizeDouble((zH+SellDist*Point-TakeProfit*Point),Digits);
if(Stoploss!=0)sl=NormalizeDouble((zH+SellDist*Point+Stoploss*Point),Digits);
OrderSend(Symbol(),OP_SELLLIMIT,Lotsi(),zH+NormalizeDouble(SellDist*Point,Digits),Slippage,sl,tp,comment,MAGIC,0,Green);
}
return(0);
}
//+------------------------------------------------------------------+
double Lotsi(){int rock=1; double Lots;
if (Metod_lot==0) Lots=Lot;
if (Metod_lot==1)Lots=MathCeil(AccountBalance()*LotsPercent)/100000;
if (Lots>MarketInfo(Symbol(),MODE_MAXLOT))Lots=MarketInfo(Symbol(),MODE_MAXLOT);
if( Lots<MarketInfo(Symbol(),MODE_MINLOT))Lots=MarketInfo(Symbol(),MODE_MINLOT);
if (mini_forex==true) rock=2; Lots= NormalizeDouble(Lots,rock); return (Lots);}
//+------------------------------------------------------------------+
void Trailingstoplossi (){int cnt, total; total=OrdersTotal();
    for(cnt=0;cnt<total;cnt++){
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()&& OrderMagicNumber()==MAGIC){
         if(OrderType()==OP_BUY){RefreshRates();
               if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(Point*TrailingStop,Digits)){
                  if(OrderStopLoss()<NormalizeDouble(Bid-Point*TrailingStop, Digits)){
                     OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Bid-Point*TrailingStop),Digits),OrderTakeProfit(),0,Green);
                    /*return(0);*/}}}
         else {RefreshRates();
               if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>NormalizeDouble((Point*TrailingStop),Digits)){
                  if((NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble((Ask+Point*TrailingStop),Digits)) || (OrderStopLoss()==0)){
                     OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Ask+Point*TrailingStop),Digits),OrderTakeProfit(),0,Red);
                    /*return(0);*/}}}}}
   /*return(0);*/
}
//+------------------------------------------------------------------+


Dimasik, рекомендую подкачать историю. Качество моделирования 48% - это слишком мало чтоб тесту можно было доверять.

 

Прогнал первоначальный вариант по фунту за 2008 год. Результат хороший из 10000 лотом 1,0 на Н4 результат 80000 (тейк -144, лось -55, трейлинг -34). Но за декабрь и до 14.01.09 сливает. А если выставлять не на каждой свече над хаем / под лоу ордера, а применить принцип 20/80. Если открытие в верних 20% бара, а закрытие в нижних 20% бара,- ставим sell под low.

Для buy - зеркальное отображение.

Таким образом будет определяться тренд, пусть даже краткосрочный. Естественно, уменьшится количество сделок, но возрастет количество прибыльных сделок и снизится просадка. Думаю на больших графиках от Н1 будет отличный результат.

Причина обращения: