0
Можете выбирать цвет в настройках: www.opentraders.ru/downloads/927/

avatar

AM2

  • 10 ноября 2015, 17:04
0
С чужим кодом очень непросто работать. Посмотрю что можно сделать.
avatar

AM2

  • 10 ноября 2015, 16:47
0
Если из индикатора можно вытащить значения, сделаю.
avatar

AM2

  • 10 ноября 2015, 16:43
0
Опишите все подробно в Столе Заказов MQL и буду смотреть.
avatar

AM2

  • 10 ноября 2015, 16:19
+1
Рисует, сигналит:




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

double LastOpen=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Проверяет значения точек привязки "Уровней Фибоначчи" и для      |
//| пустых значений устанавливает значения по умолчанию              |
//+------------------------------------------------------------------+
void ChangeFiboLevelsEmptyPoints(datetime &time1,double &price1,
                                 datetime &time2,double &price2)
  {
//--- если время второй точки не задано, то она будет на текущем баре
   if(!time2)
      time2=TimeCurrent();
//--- если цена второй точки не задана, то она будет иметь значение Bid
   if(!price2)
      price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- если время первой точки не задано, то она лежит на 9 баров левее второй
   if(!time1)
     {
      //--- массив для приема времени открытия 10 последних баров
      datetime temp[10];
      CopyTime(Symbol(),Period(),time2,10,temp);
      //--- установим первую точку на 9 баров левее второй
      time1=temp[0];
     }
//--- если цена первой точки не задана, то сдвинем ее на 200 пунктов ниже второй
   if(!price1)
      price1=price2-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
  }
//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |
//+------------------------------------------------------------------+
bool FiboLevelsCreate(const long            chart_ID=0,        // ID графика
                      const string          name="FiboLevels", // имя объекта
                      const int             sub_window=0,      // номер подокна 
                      datetime              time1=0,           // время первой точки
                      double                price1=0,          // цена первой точки
                      datetime              time2=0,           // время второй точки
                      double                price2=0,          // цена второй точки
                      const color           clr=clrRed,        // цвет объекта
                      const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии объекта
                      const int             width=1,           // толщина линии объекта
                      const bool            back=false,        // на заднем плане
                      const bool            selection=true,    // выделить для перемещений
                      const bool            ray_right=false,   // продолжение объекта вправо
                      const bool            hidden=true,       // скрыт в списке объектов
                      const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точек привязки, если они не заданы
   ChangeFiboLevelsEmptyPoints(time1,price1,time2,price2);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим "Уровни Фибоначчи" по заданным координатам
   if(!ObjectCreate(chart_ID,name,OBJ_FIBO,sub_window,time1,price1,time2,price2))
     {
      Print(__FUNCTION__,
            ": не удалось создать \"Уровни Фибоначчи\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линии
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим выделения объекта для перемещений
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- включим (true) или отключим (false) режим продолжения отображения объекта вправо
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установи приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up=iHigh(NULL,PERIOD_D1,1);
   double dn=iLow(NULL,PERIOD_D1,1);
   if(LastOpen!=Open[0])
     {
      if(Open[1]<up && Close[1]>up) Alert(Symbol()+" Пробили верхний стольник!!!");
      if(Open[1]>dn && Close[1]<dn) Alert(Symbol()+" Пробили нижний стольник!!!");
      LastOpen=Open[0];
     }

   ObjectDelete(0,"Fibo");
   FiboLevelsCreate(0,"Fibo",0,Time[0],up,Time[1],dn,Red,STYLE_SOLID,1,false,true,false,false,0);
   ObjectSet("Fibo",OBJPROP_FIBOLEVELS,8);

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+0,0.0);
   ObjectSetFiboDescription("Fibo",0,"100.0  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+1,1.0);
   ObjectSetFiboDescription("Fibo",1,"100.0  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+2,1.236);
   ObjectSetFiboDescription("Fibo",2,"123.6  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+3,-0.236);
   ObjectSetFiboDescription("Fibo",3,"123.6  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+4,1.382);
   ObjectSetFiboDescription("Fibo",4,"138.2  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+5,-0.382);
   ObjectSetFiboDescription("Fibo",5,"138.2  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+6,1.618);
   ObjectSetFiboDescription("Fibo",6,"161.8  (%$)");

   ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+7,-0.618);
   ObjectSetFiboDescription("Fibo",7,"161.8  (%$)");
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 10 ноября 2015, 02:29
0
По ТЗ все пункты есть:




//+------------------------------------------------------------------+
//|                                                 ValeriyVist.mq4  |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Not simple expert advisor"

//------- Внешние параметры советника --------------------+
extern double Lot     = 0.1;       // Лот buy/sell ордера
extern double Lot1    = 0.2;       // Лот 1-го limit ордера
extern double Lot2    = 0.3;       // Лот 2-го limit ордера
extern double Lot3    = 0.4;       // Лот 3-го limit ордера
extern double Lot4    = 0.5;       // Лот 4-го limit ордера
extern double Lot5    = 0.6;       // Лот 5-го limit ордера
extern double Lot6    = 0.7;       // Лот 6-го limit ордера
extern double Lot7    = 0.8;       // Лот 7-го limit ордера
extern double Lot8    = 0.9;       // Лот 8-го limit ордера
extern double Lot9    = 1.0;       // Лот 9-го limit ордера
extern double Lot10   = 1.1;       // Лот 10-го limit ордера

extern int    Step1   = 100;       // Шаг 1-го limit ордера
extern int    Step2   = 200;       // Шаг 2-го limit ордера
extern int    Step3   = 300;       // Шаг 3-го limit ордера
extern int    Step4   = 400;       // Шаг 4-го limit ордера
extern int    Step5   = 500;       // Шаг 5-го limit ордера
extern int    Step6   = 600;       // Шаг 6-го limit ордера
extern int    Step7   = 700;       // Шаг 7-го limit ордера
extern int    Step8   = 800;       // Шаг 8-го limit ордера
extern int    Step9   = 900;       // Шаг 9-го limit ордера
extern int    Step10  = 1000;      // Шаг 10-го limit ордера

extern int    TP      = 100;       // Take profit buy/sell ордера
extern int    TP1     = 200;       // Take profit после 1-го limit ордера
extern int    TP2     = 300;       // Take profit после 2-го limit ордера
extern int    TP3     = 400;       // Take profit после 3-го limit ордера
extern int    TP4     = 500;       // Take profit после 4-го limit ордера
extern int    TP5     = 600;       // Take profit после 5-го limit ордера
extern int    TP6     = 700;       // Take profit после 6-го limit ордера
extern int    TP7     = 800;       // Take profit после 7-го limit ордера
extern int    TP8     = 900;       // Take profit после 8-го limit ордера
extern int    TP9     = 1000;      // Take profit после 9-го limit ордера
extern int    TP10    = 1100;      // Take profit после 10-го limit ордера

extern int    SL      = 400;       // Stop Loss для всех ордеров
extern int    Slip    = 30;        // Проскальзывание цены
extern int    Magic   = 123;       // Идентификатор ордера

int k=0;
int tp[10],step[10];
double lot[10];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   tp[0]=TP;
   tp[1]=TP1;
   tp[2]=TP2;
   tp[3]=TP3;
   tp[4]=TP4;
   tp[5]=TP5;
   tp[6]=TP6;
   tp[7]=TP7;
   tp[8]=TP8;
   tp[9]=TP9;
   tp[10]=TP10;

   step[0]=Step1;
   step[1]=Step1;
   step[2]=Step2;
   step[3]=Step3;
   step[4]=Step4;
   step[5]=Step5;
   step[6]=Step6;
   step[7]=Step7;
   step[8]=Step8;
   step[9]=Step9;
   step[10]=Step10;

   lot[0]=Lot;
   lot[1]=Lot1;
   lot[2]=Lot2;
   lot[3]=Lot3;
   lot[4]=Lot4;
   lot[5]=Lot5;
   lot[6]=Lot6;
   lot[7]=Lot7;
   lot[8]=Lot8;
   lot[9]=Lot9;
   lot[10]=Lot10;

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealResult()
  {
   int result=0;
   if(OrdersHistoryTotal()==0)
     {
      result=0;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()>0)
        {
         result=1;//tp  
        }
      if(OrderProfit()<0)
        {
         result=2;//sl  
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
  {
   int type=0;
   if(OrdersHistoryTotal()==0)
     {
      type=0;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderType()==OP_BUY)
        {
         type=1;//buy  
        }
      if(OrderType()==OP_SELL)
        {
         type=2;//sell  
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelBuyLimitOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
        {
         if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
           {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
            if(OrderType()==OP_BUYLIMIT) del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
void DelSellLimitOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
        {
         if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
           {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
            if(OrderType()==OP_SELLLIMIT) del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int res=0;
   double pr=0;
   if(k>10) k=0;
//когда нет позиций
   if(CountTrades()<1)
     {
      res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-SL*Point,Ask+TP*Point,"",Magic,0,Blue);
      res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+SL*Point,Bid-TP*Point,"",Magic,0,Red);
      pr=Ask-step[k]*Point;
      res=OrderSend(Symbol(),OP_BUYLIMIT,lot[k],pr,0,pr-SL*Point,Ask+tp[k]*Point,"",Magic,0,Blue);
      pr=Bid+step[k]*Point;
      res=OrderSend(Symbol(),OP_SELLLIMIT,lot[k],pr,0,pr+SL*Point,Bid-tp[k]*Point,"",Magic,0,Red);
      k++;
      return;
     }

//когда есть позы и sell закрылся по ТП
   if(CountTrades()>0 && LastDealResult()==1 && LastDealType()==2)
     {
      DelSellLimitOrder();
      res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+SL*Point,Bid-TP*Point,"",Magic,0,Red);
      pr=Bid+step[k]*Point;
      res=OrderSend(Symbol(),OP_SELLLIMIT,lot[k],pr,0,pr+SL*Point,Bid-tp[k]*Point,"",Magic,0,Red);
      k++;
      return;
     }

//когда есть позы и buy закрылся по ТП
   if(CountTrades()>0 && LastDealResult()==1 && LastDealType()==1)
     {
      DelBuyLimitOrder();
      res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-SL*Point,Ask+TP*Point,"",Magic,0,Blue);
      pr=Ask-step[k]*Point;
      res=OrderSend(Symbol(),OP_BUYLIMIT,lot[k],pr,0,pr-SL*Point,Ask+tp[k]*Point,"",Magic,0,Blue);
      k++;
      return;
     }
   Comment("\n TP: ",tp[k],
           "\n Lot: ",lot[k],
           "\n Step: ",step[k]);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 9 ноября 2015, 18:56
+1
Cоветник торгует после указанного в настройках времени
в направлении машки:



Время может быть указано в следующих форматах:


datetime NY=D'2015.01.01 00:00';     // время наступления 2015 года
datetime d1=D'1980.07.19 12:30:27';  // год месяц день часы минуты секунды
datetime d2=D'19.07.1980 12:30:27';  // равнозначно D'1980.07.19 12:30:27';
datetime d3=D'19.07.1980 12';        // равнозначно D'1980.07.19 12:00:00'
datetime d4=D'01.01.2004';           // равнозначно D'01.01.2004 00:00:00'
datetime compilation_date=__DATE__;             // дата компиляции
datetime compilation_date_time=__DATETIME__;    // дата и время компиляции 
datetime compilation_time=__DATETIME__-__DATE__;// время компиляции
//--- примеры объявлений, на которые будут получены предупреждения компилятора
datetime warning1=D'12:30:27';       // равнозначно D'[дата компиляции] 12:30:27'
datetime warning2=D'';               // равнозначно __DATETIME__


Код советника:


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

//--- Inputs
extern double Lots      = 0.1;      // лот
extern int StopLoss     = 500;      // лось
extern int TakeProfit   = 500;      // язь
extern int Slip         = 30;       // реквот
extern string TradeTime="2015.11.06 15:10:30"; //время начала торгов
extern int Magic=123;      // магик
extern string IndicatorProperties="--------------------";
extern int MAPeriod=12;
extern ENUM_TIMEFRAMES TimeFrame=PERIOD_D1;

double LastOpen=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    r=0;
   double sl=0,tp=0;
//--- get Ind
   double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
   double ma3=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,3);

//--- sell conditions
//if(Bid<ma)
   if(ma<ma3)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
      return;
     }
//--- buy conditions
//if(Ask>ma)
   if(ma>ma3)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      if(Open[0]!=LastOpen)
        {
         if(TimeCurrent()>=StringToTime(TradeTime))
           {
            OpenPos();
            LastOpen=Open[0];
           }
        }
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 9 ноября 2015, 16:44
0
Я еще когда в прошлый раз смотрел, у меня возник вопрос: для чего городить весь этот огород, когда можно сразу выставить всю сеть ордеров? Таким образом получается в разы больше работы для кодера, а в чем смысл, подскажите пожалуйста?
avatar

AM2

  • 9 ноября 2015, 16:21
+1
Сделаю одноразовый :) 
avatar

AM2

  • 9 ноября 2015, 16:15
+2
открытие в «пятницу после первой среды месяца»

… DayOfWeek()==5 && Day()>=3 && Day()<=10 ...

Так должно условие выглядеть, а целиком:

if(ma>ma3 && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15)


И советник исправленный:


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

//--- Inputs
extern double Lots      = 0.1;      // лот
extern int StopLoss     = 500;      // лось
extern int TakeProfit   = 500;      // язь
extern int Slip         = 30;       // реквот
extern int Magic        = 123;      // магик
extern string IndicatorProperties="--------------------";
extern int MAPeriod=12;
extern ENUM_TIMEFRAMES TimeFrame=PERIOD_M1;

double LastOpen=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    r=0;
   double sl=0,tp=0;
//--- get Ind
   double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
   double ma3=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,3);

//--- sell conditions
//if(Bid<ma && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15)
   if(ma<ma3 && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15 && Minute()==0)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
      return;
     }
//--- buy conditions
//if(Ask>ma && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15)
//  с учетом первой среды DayOfWeek()==5 && Day()>=3 && Day()<=10
   if(ma>ma3 && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15 && Minute()==0)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && Open[0]!=LastOpen)
     {
      OpenPos();
      LastOpen=Open[0];
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 9 ноября 2015, 04:21
0
Добавил отключаемый MACD, БУ там был: www.opentraders.ru/downloads/526/

avatar

AM2

  • 9 ноября 2015, 03:40
0
Да можно. Оформите потом топик в столе заказов.
avatar

AM2

  • 8 ноября 2015, 22:10
0
Если интересует 100%-е соответствие дате новостей, забиваете вручную данные в массив: www.opentraders.ru/downloads/826/

открытие не в первую пятницу, а в «пятницу после первой среды месяца»

Это можно поправить.
avatar

AM2

  • 8 ноября 2015, 21:13
0
Завтра добавлю.
avatar

AM2

  • 8 ноября 2015, 19:38
0
Я делал вам в этом месяце один заказ. Если только возьмется кто то другой.
avatar

AM2

  • 6 ноября 2015, 23:41
0
Мне не удалось вытянуть из вас четкого ТЗ. За такие заказы я не берусь.
avatar

AM2

  • 6 ноября 2015, 23:40
0
Доделаю конечно, это набросок только.

На до что бы открывал ордера наоборот, и если ордер уходит в минус, тогда выставляется, еще один ордер за последний фрактал.


Покажите на скрине какой ордер, куда ставить и как тянуть?
avatar

AM2

  • 6 ноября 2015, 20:07
0
На мгновение заскочили в прошлое

Это калябушки :D  Люди празднуют *drinks*  И похоже что уже давно :D 
avatar

AM2

  • 6 ноября 2015, 16:25
0
То есть открылся ордер на продажу, сразу открылся отложенный лимитный ордер за фракталом. Этот ордер тянется за фракталом.


Если цена пошла не в ту сторону, тогда за фрокталом выставляется стопордер но уже с увеличенным лотом.


Вот открылся ордер на продажу.



За какой фрактал ставим лимитный ордер? Ставим байлимит или селллимит или стоповый как первоначально в ТЗ? Куда тянется? Просьба показать все на скринах. Помните какое будет ТЗ такой получите и результат.
Вот набросок с входами с рынка по условию:


//+------------------------------------------------------------------+
//|                                                      Fractal.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Simple expert advisor"

//--- Inputs
extern int    StopLoss      = 500; // лось 
extern int    TakeProfit    = 500; // язь
extern int    MAPeriod      = 12;  // период МА
extern double Lots          = 0.1; // лот
extern double MaxLot        = 5;   // максимальный лот
extern double KLot          = 2;   // увеличение лота
extern int    Slip          = 30;  // проскальзывание
extern int    Shift         = 3;   // сдвиг баров назад
extern int    Count         = 1;   // количество открываемых ордеров
extern int    MAGIC         = 20150531;
//+------------------------------------------------------------------+
int CountTrades()
  {
   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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double up,dn,ma;
   int    res;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);
   ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
   if(up>0 && Close[0]<ma)
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGIC,0,Red);
      return;
     }
//--- buy conditions
   if(dn>0 && Close[0]>ma)
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGIC,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up,dn;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);

   if(CountTrades()<Count) OpenPos();

   Comment("\n  UP Fractal ",up,
           "\n  DN Fractal ",dn);
//---
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 6 ноября 2015, 16:12
0
Опишите все подробнее, желательно с картинками. Этого описания недостаточно.
avatar

AM2

  • 6 ноября 2015, 14:22