Slava78

 
Уровень 12

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от Slava78



Советник Комментариев 9
2020-03-17 14:42:32Рейтинг 0

Советник Комментариев 15
2020-05-28 14:02:26Рейтинг 0

Советник
2020-05-28 05:26:27Рейтинг 0

ТС "Новая Черепаха" Комментариев 3
2020-04-19 10:01:11Рейтинг 0

Советник Комментариев 11
2020-01-02 11:45:26Рейтинг 0

Советник Fibo

Прошу написать советник по Фибо.Принцип: строется канал из двух МА(период 3, метод 3 — high,low(на выбор)), свеча пройдя более 140 пунктов(прописываем) — считаем за 100% фибо, при выходе из канала ставятся отложники на текущей свече на расстоянии фибо (на выбор 23,6 / 38,2 / 50 / 61,8).Ордера усредняются по общему профиту(прописываем), трал профита, увеличение(умножение на 2)следующего ордера по мартину, истечение ордеров через 10 свечей(прописываем), закрытие сетки ордеров через 5 свечей(прописываем) Идею взял отсюда slava78.opentraders.ru/53036.html Буду рад любому варианту, спасибо.
  • 0
  • Просмотров: 2079
  • 2 января 2020, 11:42
  • Slava78
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
ПОДПРАВИТЬ И ДОРАБОТАТЬ
Следующая запись в группе  
Коридорный советник
27 декабря 2019
02 января 2020

Брокер для ваших роботов, 15 лет на рынке

Комментарии (13)

+
0
вот вышла цена из канала, 0 фибо ставим на бид. куда ставим 100%?
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 января 2020, 12:08
+
0
0 — Берем open свечи, 100% — количество пунктов 140 (прописуем) Первый отложник 23.6% — 173.04 пункта от open и так далее
Редактирован: 2 января 2020, 12:50
avatar

  12  Slava78 Автор Сообщений: 598

  • 2 января 2020, 12:48
+
+1
в тз не указано какой тип отложек ставить? лимитки?

вот для начала мой вариант WayGrow:



работа оригинала:



www.opentraders.ru/downloads/2529/
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 января 2020, 13:31
+
0
Спасибо за ваш вариант. Оригинал дает прибыль при минимальном спреде(до 15). Хочу свою ТС по уровням фибо (на выбор, возможность изменения в настройках). Селл лимит, бай лимит. Модифицировать ордера не нужно(брокер пугается)
avatar

  12  Slava78 Автор Сообщений: 598

  • 2 января 2020, 14:32
+
0
пока так:

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

//--- Inputs
extern double Lots       = 1;        // лот
extern double Risk       = 10;       // риск

extern double Level1     = 23.6;     // уровень 1
extern double Level2     = 38.2;     // уровень 2
extern double Level3     = 50.0;     // уровень 3
extern double Level4     = 61.8;     // уровень 4
extern double Level5     = 100.0;    // уровень 5
extern double Level6     = 161.8;    // уровень 6

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал

extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли

extern int Slip          = 30;       // реквот
extern int MAPeriod      = 3;        // период MA
extern int Exp           = 10;       // истечение в часах
extern int Gamma         = 140;      // фильтр
extern int Magic         = 123;      // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,TimeCurrent()+3600*Exp,clr);
   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()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   if(Risk>0)
      lot=AccountBalance()*Risk/100000;

   if(lot>100)
      lot=100;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double all=0,count=0,sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
              {
               all+=OrderOpenPrice()*OrderLots();
               count+=OrderLots();
              }
           }
        }
     }

   if(count>0)
      all=NormalizeDouble(all/count,Digits);

   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(Bid-all>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     sl=NormalizeDouble(Bid-TrailingStop*Point,Digits);
                     if(OrderStopLoss()!=sl)
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(all-Ask>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     sl=NormalizeDouble(Bid+TrailingStop*Point,Digits);
                     if(OrderStopLoss()!=sl)
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   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 || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up = iMA(NULL,0,MAPeriod,0,3,PRICE_HIGH,0);
   double dn = iMA(NULL,0,MAPeriod,0,3,PRICE_LOW,0);

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1 && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && MathAbs(Open[0]-Bid)>Gamma*_Point)
     {
      if(Bid<dn && CountOrders(2)<1)
        {
         if(Level1>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level1*0.01);
           }
         if(Level2>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level2*0.01);
           }
         if(Level3>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level3*0.01);
           }
         if(Level4>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level4*0.01);
           }
         if(Level5>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level5*0.01);
           }
         if(Level6>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level6*0.01);
           }
        }

      if(Bid>up && CountOrders(3)<1)
        {
         if(Level1>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level1*0.01);
           }
         if(Level2>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level2*0.01);
           }
         if(Level3>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level3*0.01);
           }
         if(Level4>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level4*0.01);
           }
         if(Level5>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level5*0.01);
           }
         if(Level6>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level6*0.01);
           }
        }
     }
  }
//+------------------------------------------------------------------+

Редактирован: 2 января 2020, 22:34
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 января 2020, 22:33
+
0
Большое спасибо *victory*  Класс*good* , супер, будем тестить *budenov* 
avatar

  12  Slava78 Автор Сообщений: 598

  • 3 января 2020, 06:38
+
0
Андрей, сделай пожалуйста без автолота и увеличение лота по мартину. Еще нужно закрытие всех ордеров по окончании Exp
avatar

  12  Slava78 Автор Сообщений: 598

  • 3 января 2020, 09:37
+
0
на скрине видно что ордера установились с увеличением лота и удалились по окончании времени:



www.opentraders.ru/downloads/2530/

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 3 января 2020, 12:20
+
0
Спасибо за ваш труд. Сделал истечение ордеров в минутах(было 3600 — сделал 60).
Ордера не закрылись, я просил закрытие всех ордеров
Редактирован: 3 января 2020, 14:49
avatar

  12  Slava78 Автор Сообщений: 598

  • 3 января 2020, 14:47
+
0
Ордера не закрылись


истечение только для отложек. у бай или сел надо считать сколько сек прошло от открытия позы и потом закрывать функцией
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 3 января 2020, 14:54
+
0
Да, нужно закрытие у рабочих ордеров дополнительно. Можно отдельно прописать, можно совместно с отложками( как проще сделайте)
avatar

  12  Slava78 Автор Сообщений: 598

  • 3 января 2020, 15:00
+
0
здесь проще время торговли поставить и когда не время все крыть и удалять
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 3 января 2020, 22:01
+
0
Проще например по истечении часовой свечи например
avatar

  16  cerber04 Сообщений: 409

  • 4 января 2020, 04:06

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий