Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Tvorec

Страницы: [1]
1
:-D    Знакомая до боли стратегия.... Но в чистом виде неработает абсолютно! Вот вам советничег!
 //+------------------------------------------------------------------+
//|                                                 VininE Game9.mq4 |
//|                      Copyright © 2008, Victor Nicolaev aka Vinin |
//|                                           skype: victor.nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2009 Victor Nicolaev"
#property link      "vinin@mail.ru"

// Советник сделан только для проверки идеи. На реал просьба не ставить.
// Автор за работу советника в реальных условиях отвественности не несет

extern int HourStart= 0;   // Время установки отложенных ордеров
extern int HourVitas= 4;   // Время жизни отложенника
extern int HourCalc = 4;   // Количество часов для расчета уровней
extern int WorkDay  =-1;   // 1..5 Рабочий день (-1 все дни)
extern int reversi  = 0;   // 0 - работа на пробой, 1- на откат


extern string sparam2="Параметры MM";
extern bool bProcent=false;
extern int TP=500;
extern int SL=500;
extern double Lots=0.1;
extern int Magic=20090512;

string _comment;
int Order_Count[6];
bool bOpen=false;
string sOP[]={"BUY","SELL","BUYSTOP","SELLSTOP","BUYLIMIT","SELLLIMIT"};

double LevelHigh, LevelLow;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()  {
   _comment=WindowExpertName();
return(0);}

int deinit(){return(0);}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
   if (WorkDay>=0 && WorkDay!=TimeDayOfWeek(Time[0])) return(0);
   static int PrevTime=0;
   if (PrevTime==iTime(Symbol(),PERIOD_H1,0)) return(0);
   PrevTime=iTime(Symbol(),PERIOD_H1,0);
   if (TimeHour(iTime(Symbol(),PERIOD_H1,0))==HourStart && bOpen) {
      Order_Count_Calculate(Symbol(),Magic);
      CalculateLevel();
      if (reversi==0) {
         if (Order_Count[OP_BUYSTOP]==0 )  Order_Open(Symbol(), Magic,OP_BUYSTOP  );
         if (Order_Count[OP_SELLSTOP]==0)  Order_Open(Symbol(), Magic,OP_SELLSTOP );
      } else {
         if (Order_Count[OP_BUYLIMIT]==0 ) Order_Open(Symbol(), Magic,OP_BUYLIMIT );
         if (Order_Count[OP_SELLLIMIT]==0) Order_Open(Symbol(), Magic,OP_SELLLIMIT);
      }
      bOpen=false;
   } else bOpen=true;
   
   return(0);
}

void CalculateLevel(){
   double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   LevelHigh=iHigh(Symbol(),PERIOD_H1,iHighest(Symbol(),PERIOD_H1,MODE_HIGH,HourCalc,1))+StopLevel;
   LevelLow =iLow( Symbol(),PERIOD_H1,iLowest( Symbol(),PERIOD_H1,MODE_LOW, HourCalc,1))-StopLevel;
}


//===============================================================================
// Функция возвращаюшая количество ордеров определенного типа исхода из заданных ограничений
//===============================================================================
int Order_Count_Calculate(string _Symbol, int Magic=-1, int OP=-1){
   ArrayInitialize(Order_Count,0);
   for (int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!Order_My(i,_Symbol, Magic, OP)) continue;
      Order_Count[OrderType()]++;
   }
   if (OP!=-1) return(Order_Count[OP]);
}


bool Order_My(int pos, string _Symbol="", int Magic=-1, int OP=-1){
   if (!OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) return(false);
   if (!(OrderSymbol() == _Symbol || _Symbol==""))    return(false);
   if (!(OrderMagicNumber() == Magic || Magic==-1))   return(false);
   if (!(OrderType()==OP || OP==-1))                  return(false);
   return(true);
}

int Order_Open(string _Symbol, int Magic, int OP){
   GetLastError();
   double _Ask  = MarketInfo(_Symbol,MODE_ASK);
   double _Bid  = MarketInfo(_Symbol,MODE_BID);
   double _Point= MarketInfo(_Symbol,MODE_POINT);
   double _Spred= MarketInfo(_Symbol,MODE_SPREAD);
   double _StopLevel=MarketInfo(_Symbol,MODE_STOPLEVEL);
   
   datetime _EX=Time[0]+HourVitas*60*60;

   double Price;
   double _TP;
   double _SL;
   


   switch(OP) {
      case OP_BUY:         
         Price=_Ask;      _EX=0;break;
      case OP_SELL:       
         Price=_Bid;      _EX=0; break;
      case OP_BUYLIMIT:   
         Price=LevelLow; 
         if (Price>_Ask -_StopLevel*_Point) {
            Price=_Ask;
            OP=OP_BUY;
            _EX=0;
         }
         break;
       
      case OP_SELLLIMIT:   
         Price=LevelHigh; 
         if (Price<_Bid +_StopLevel*_Point) {
            Price=_Bid;
            OP=OP_SELL;
            _EX=0;
         }
         break;
      case OP_BUYSTOP:     
         Price=LevelHigh; 
         if (Price<_Ask +_StopLevel*_Point) {
            Price=_Ask;
            OP=OP_BUY;
            _EX=0;
         }
         break;
      case OP_SELLSTOP:   
         Price=LevelLow;
         if (Price>_Bid -_StopLevel*_Point) {
            Price=_Bid;
            OP=OP_SELL;
            _EX=0;
         }
         break;

      default: return(0);
   }
   if (OP%2==0)  {
      if (bProcent) {
         _TP=Price+NormalizeDouble((LevelHigh-LevelLow)/100.0*TP,Digits);
         _SL=Price-NormalizeDouble((LevelHigh-LevelLow)/100.0*SL,Digits);
      }else {
         _TP=Price+TP*_Point;
         _SL=Price-(SL+_Spred)*_Point;
      }
   } else  {
      if (bProcent) {
         _TP=Price-NormalizeDouble((LevelHigh-LevelLow)/100.0*TP,Digits);
         _SL=Price+NormalizeDouble((LevelHigh-LevelLow)/100.0*SL,Digits);
      }else {
         _TP=Price-TP*_Point;
         _SL=Price+(SL+_Spred)*_Point;
      }
   }
   int res;
   res=OrderSend(_Symbol, OP, Lots, Price, _Spred, _SL, _TP, _comment, Magic, _EX);
   if (res<0) {
      int err=GetLastError();
      if (err>0) {
         Print("Error=",err," OP=",sOP[OP]," Ask=",_Ask," Bid=",_Bid," Price=",Price);
         return(-1);
      }
   }
   return(res);
}


double iif(bool a, double b, double c){if(a) return(b);return(c);}


Есть вкладка дополнительные опции, там и прикрепляешь советничка, скинь его. Спасибо.


2
Торговые системы / Re: ZIG
« : 02.06.2009 09:05 »
для этого не нужно советник).... есть же тестер
Приветствую, а поясните как с индикатором в тестере работать???
я использую ТФ М15, вроде держит стратегия удар! есть и плюсы и минусы. Плюсов больше.

3
да да........ выложите статистику......... а советника напишем)........ просто говорю что пробовал на истории....... стабильного зароботка нет.......
советничка сваяете???  доработаем потом до ума!!! :-)

4
Торговые системы / Re: ZIG
« : 01.06.2009 15:52 »
Уважаемые коллеги, может кто может сделать из этого зигзага советник (смысл - линия проложилась очередная, выставляется ордер, задаваемые параметры - лот, СЛ и ТП, ограничения по парам, т.е. мейджик, и функция - если сработа по одной паре второй ордер, то предыдущий закрывется!!!)???  очень хочется его потестить на истории. Спасибо.  :-)

5
Сегодня все пропустил, все первые пробития. Кстати у меня есть некий советник, но разобраться в нем не могу. Вот выкладываю!  может поможете его переделать!

6
Статистика у меня не большая, выкладываю. Но ввиду того что с работы только выхожу в сеть, пропускаю постоянно первые пробития уровней. Советничка надо! В середине статистики поставил ордер в догонку и зря, т.е. только отложенники д.б. выставлены в 00-10 примерно.

7
Уважаемые программисты и люди знающие, напиите пож. советника по этой системе, она того стоит!!! :-)

8
Использую пары eurusd, eurjpy, audusd, стоп лосс у всех делаем 30 пп. желательно чо бы в настройках мона было ставить.
Формируем основные условия работы:
Торговый день длится от 00 GMT до 00 GMT.
1. Войти в длинную позицию по стоп-ордеру, если превышен максимум предыдущего дня.
2. Выход по тейк-профиту приблизительно 10 пипсов. Выход по стоп-лоссу около 30 пипсов.
3. Войти в короткую позицию по стоп-ордеру, если цена упала ниже минимума предыдущего дня.
4. Закрыть короткую позицию, когда сделка принесла приблизительно 10 пипсов прибыли - TP. Выход по стопу, если цена прошла примерно 30 пипсов против вас.
5. Принимаются во внимание только первые пересечения максимума/минимума в течение дня.

Спасибо за помощь!!!

9
Уважаемые трейдеры, стратегия заслуживает внимания!!!  :-o Кто может сваять советника, что бы эту систему отработать???  Будте так добры!!!  :-)

10
Мститель, хотелось бы проверить советника в бою, характеристики не плохие!  :-o

11
Вот и евро появилась, итого по шел встаем!!! :-)
завтра 19.05.2009г.    43,4714   ?0,1410

Страницы: [1]