lorik
Лариса

 
Уровень 19

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


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

Рейтинг 2151



РЕКОМЕНДУЮ



Подправить советник

Прошу поправить советник zakaz.opentraders.ru/30996.html. Не работает на реальном счете.
  • 0
  • Просмотров: 2532
  • 26 сентября 2017, 10:02
  • lorik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Индикатор
25 сентября 2017
26 сентября 2017

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

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

+
0
Ссылка на советник yadi.sk/d/27jTcZoT3NDsjA
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 26 сентября 2017, 10:05
+
0
В четверг буду смотреть. А пока скиньте логи, что пишет в журнале?
avatar

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

  • 26 сентября 2017, 12:13
+
0
Пишет, что советник включен, за четыре дня ни одной сделки. И еще просьба добавить мартина. Спасибо за ранее!
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 07:17
+
0
Поправил посмотрите:


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

//--- Inputs 
extern double Lots         = 0.1; // лот
extern double KLot         = 1;   // умножение лота
extern double MaxLot       = 5;   // максимальный лот
extern int    StopLoss     = 500; //лось
extern int    TakeProfit   = 500; //язь
extern int    BULevel      = 300; //уровень бу
extern int    BUPoint      = 30;  //пункты бу
extern int    TrailingStop = 300; //трал
extern int    Delta        = 100; //проход цены 
extern int    Slip         = 10;  //проскальзывание
extern int    Expiration   = 10;  //время истечения ордера
extern int    Start        = 1;   //начальный бар
extern int    End          = 20;  //конечный бар
extern int    Magic        = 123; //магик

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

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   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()+Expiration*3600,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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |
//+------------------------------------------------------------------+
void FiboLevelsCreate(datetime t1,double p1,datetime t2,double p2)
  {
   ObjectsDeleteAll(0,OBJ_FIBO);
//--- создадим "Уровни Фибоначчи" по заданным координатам
   ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,t1,p1,t2,p2);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CrossUP(double p)
  {
   int res=0;
   if(Open[0]<p && Bid-p>=Delta*Point) res=1;
   return(res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CrossDN(double p)
  {
   int res=0;
   if(Open[0]>p && p-Bid>=Delta*Point) res=1;
   return(res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=0; i<OrdersTotal(); 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,Green);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && OrderOpenPrice()<OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderProfit()>0) break;
         if(OrderProfit()<0)
           {
            lot=OrderLots()*KLot;
            break;
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up=High[iHighest(NULL,0,MODE_HIGH,End,Start)];
   double dn=Low[iLowest(NULL,0,MODE_LOW,End,Start)];
   FiboLevelsCreate(Time[Start],up,Time[End],dn);

   string name="FiboLevels";

   double F = ObjectGet(name, OBJPROP_PRICE1);
   double S = ObjectGet(name, OBJPROP_PRICE2);

   double p0=NormalizeDouble(S,Digits);
   double p100 = NormalizeDouble(F, Digits);
   double p236 = NormalizeDouble((F-S)*0.236+S, Digits);
   double p382 = NormalizeDouble((F-S)*0.382+S, Digits);
   double p50=NormalizeDouble((F-S)*0.50+S,Digits);
   double p618=NormalizeDouble((F-S)*0.618+S,Digits);

   if(High[1]>p50 && Low[1]<p50) cross=1;
   if(Hour()==5) cross=0;

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1 && CrossDN(p50)==1) PutOrder(4,p50);
      if(CountOrders(5)<1 && CrossUP(p50)==1) PutOrder(5,p50);
     }

   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();

   Comment("\n Fibo 100: ",p100,
           "\n Fibo 0: ",p0,
           "\n Fibo 236: ",p236,
           "\n Fibo 382: ",p382,
           "\n Fibo 50: ",p50,
           "\n Fibo 618: ",p618,
           "\n Name: ",name,
           "\n Cross: ",cross,
           "\n CrossUP: ",CrossUP(p50),
           "\n CrossDN: ",CrossDN(p50));
  }
//+------------------------------------------------------------------+


Редактирован: 27 сентября 2017, 11:19
avatar

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

  • 27 сентября 2017, 10:59
+
0
Я извиняюсь, функция трала включена в настройках, но она не работает.
В общем задача какая? необходимо выполнить:
— работу трала;
— открытие ордеров на реальном счете.
По журналу советник включен. На ВПС сервере в течении 4 дней не открыто ни одной сделки. ДЦ Альпари, настройки советника на рисунке



Проверяю на тестере, те дни за которые не открылись сделки, то несколько сделок открываются.

Торговая стратегия по данному советнику, которая была озвучена заказчиком, такая:

Смысл заключается в том, чтобы отложенные ордера выставлялись после пересечения наложенного мною уровня фибо 50 в
сторону уровня 0. Т.е. если например уровень фибо был пробит вниз на n-ое кол-во пунктов, открывается buystop на
том же уровне 50 со SL:
1) за уровнем 61.8, если он не был затронут,
2) или за экстремумом который пробил уровень 61.8. Т.е. при этом варианте SL должен будет постоянно передвигаться
при обновлении экстремума, до момента рыночного исполнения ордера.
Редактирован: 27 сентября 2017, 11:33
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 11:32
+
0
Спасибо, проверю — отпишусь
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 11:35
+
0
Заработал, спасибо. А можно добавить мартин? Что бы на октябрь не переносить. Видно не хватает.
Редактирован: 27 сентября 2017, 12:30
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 12:15
+
0
Мартин есть там, добавлен.
avatar

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

  • 27 сентября 2017, 15:06
+
0
Мартин не включается, не видно шага выставки мартина
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 16:19
+
0
С шагом это уже не мартин а усреднение, это делать намного сложнее.
avatar

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

  • 27 сентября 2017, 16:33
+
0
Вот теперь усредняет: www.opentraders.ru/downloads/1669/

avatar

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

  • 27 сентября 2017, 16:59
+
0
Спасибо!
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 18:32
+
0
Извините, но я выставила шаг 400, а у меня с этим шагом открываются ордера не с усреднением, а просто с настроенными стопом и тейкпрофитом

avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 27 сентября 2017, 19:23
+
0
Cкрин настроек можно посмотреть?
avatar

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

  • 27 сентября 2017, 21:04
+
0
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 28 сентября 2017, 06:11
+
0
Поправил: www.opentraders.ru/downloads/1669/



Там не было рассчитано что стопы 0 будут :) 
avatar

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

  • 28 сентября 2017, 11:47
+
0
Спасибо, точно так, убрала 0 со стопов, пошло. Интересно, какая зависимость стопов в советниках?
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 28 сентября 2017, 14:22
+
0
А можно попросить, добавить общий трал ордеров и тейкпрофит сетки?
avatar

  20  Lobzik Сообщений: 119 - Algoforex

  • 29 сентября 2017, 12:10
+
0
Да можно, размещайте заказ.
avatar

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

  • 29 сентября 2017, 12:24

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