+1
Можно в текстовом виде здесь в топике? У меня на ноуте офис не установлен.
avatar

AM2

  • 5 июня 2016, 18:33
0
У вас файл не прикрепился, перезалейте или подождем когда поправят.
avatar

AM2

  • 5 июня 2016, 16:16
0
Я помню там бюджет 15 был а этот за 50 точно переваливает.
avatar

AM2

  • 4 июня 2016, 19:12
0
Отличный сайт получился! *bravo* 
avatar

AM2

  • 4 июня 2016, 18:56
0
Для торговли по времени смотри еще какая функция есть более простая для понимания. Туда и секунды можно подставить как иногда просят.


bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
avatar

AM2

  • 4 июня 2016, 18:34
0
Вчера было 2 сложных заказа один доделал а ваш на после выходных остался.
avatar

AM2

  • 4 июня 2016, 15:32
0
Сделал пока вкл.откл. по времени:

//+------------------------------------------------------------------+
//|                                                   AutoTrader.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.01"

#define VK_CONTROL 0x11 //CTRL key
#define KEY_CODE   'E'

#import "user32.dll"
void  keybd_event(int bVk,int bScan,int dwFlags,int dwExtraInfo);
#import

input string StartTime = "09:00";
input string EndTime   = "23:00";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Key()
  {
   keybd_event(VK_CONTROL,0,0,0);
   Sleep(10);
   keybd_event(KEY_CODE,0,0,0);
   Sleep(10);
   keybd_event(KEY_CODE,0,2,0);
   Sleep(10);
   keybd_event(VK_CONTROL,0,2,0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// включаем по времени
   if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==0 && TimeCurrent()>StringToTime(StartTime) && TimeCurrent()<StringToTime(EndTime)) Key();
// выключаем по времени
   if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==1 && !(TimeCurrent()>StringToTime(StartTime)) && TimeCurrent()<StringToTime(EndTime)) Key();
 
   Comment("\n Enable: ",TerminalInfoInteger(TERMINAL_TRADE_ALLOWED),
           "\n Time: ",TimeCurrent());
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 3 июня 2016, 09:14
0
Чужой код я править не возьмусь. Первую часть сделал, а вторую еще надо думать как все это машине объяснить.


//+------------------------------------------------------------------+
//|                                                       GridBU.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 50;       // лось
extern int TakeProfit    = 70;       // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int Expiration    = 10;       // экспирация
extern int Delta         = 300;      // дельта
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|  Безубыток ордеров   if(BULevel>0) BU();                         |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder(int type)
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BULevel>0) BU();

   if(CountOrders(4)<1) PutOrder(4,Bid+Delta*Point);
   if(CountOrders(5)<1) PutOrder(5,Bid-Delta*Point);
   //if(CountOrders(0)>0) DelOrder(5);
   //if(CountOrders(1)>0) DelOrder(4);
   
   Comment("\n Buy Stop: ",CountOrders(4),
           "\n Sell Stop: ",CountOrders(5));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 3 июня 2016, 08:10
0
Вы такой делали такой советник GRID_Stop_BU,


Это не мой советник. Оксана делала.
avatar

AM2

  • 3 июня 2016, 06:33
0
Здесь стрелочных советников достаточно посмотрите в базе: www.opentraders.ru/downloads/
avatar

AM2

  • 2 июня 2016, 20:36
0
Завтра посмотрю на сегодня норма :) 
avatar

AM2

  • 2 июня 2016, 08:50
0
Cделал. На сегодня хватит, т.к. сделано еще 2 заказа :) 
www.opentraders.ru/downloads/1194/

avatar

AM2

  • 2 июня 2016, 08:49
0
С этого и надо было начинать когда есть основа проще намного.
avatar

AM2

  • 2 июня 2016, 08:23
0
Посмотрел. Советник сложный это не ко мне.
avatar

AM2

  • 2 июня 2016, 08:08
0
Это опять слепой советник, мне нужно что то изобретать чтобы проверить и смоделировать ситуацию в рынке. такие делать в разы сложнее.
avatar

AM2

  • 2 июня 2016, 08:03
0
Здесь нужно писать отдельную функцию, я с ней просидел 2 часа так и не сделал а готовой не нашел. Теперь буду смотреть только когда будет свободное время.

Вот функция может кто поправит, в ней ищу цены верхних и нижних фракталов.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FractalPrice(int num,int mode)
  {
   double f=0;
   int up=0,dn=0,n=0;
   for(int i=2; i<100; i++)
     {
      double fup=iFractals(NULL,0,MODE_UPPER,i);
      double fdn=iFractals(NULL,0,MODE_LOWER,i);
      if(fup>0 && mode==1)
        {
         n++;
         if(n==num) f=fup;
         break;
        }
      if(fdn>0 && mode==2)
        {
         n++;
         if(n==num) f=fdn;
         break;
        }
     }
   return(f);
  }
avatar

AM2

  • 2 июня 2016, 07:54
0
Действительно много. Вчера 2 сделал, сегодня ночью один и сейчас другой делаю. Как только будет свободное время.
avatar

AM2

  • 2 июня 2016, 07:26