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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от Deimos



Прикрутить алерт MT4 Комментариев 20
2015-10-01 09:19:06Рейтинг 0

TralMov Комментариев 16
2015-11-02 17:42:04Рейтинг 0

Создать индикатор Комментариев 6
2016-01-14 23:19:46Рейтинг 0

Индикатор.Отрисовка импульса Комментариев 20
2016-03-09 10:16:30Рейтинг 0

Прикрутить алерт Комментариев 5
2016-11-30 11:25:10Рейтинг 0

30 пипс

Добрый день

Хочу потестить вариант советника по данному индикатору.

Сделать надо будет простую вещь это при прохождении 0 значения вверх… начинает продавать.Ниже начинает покупать.и функцию чтобы можно было делать при пробое вверх покупка при пробое вниз продажа.прикрутить стоп лосс.тейк профит. усреднялку. трейлинг стоп который так же будет тралить большой объем по усреднению. что то наподобе советника Усреднитель 2 тут на сайте. усреднялку желательно сделать отключаемую.тру фолс) спасибо.30pips.mq4 (2 Kb)
  • 0
  • Просмотров: 3166
  • 21 июля 2016, 10:43
  • Deimos
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Пока некогда статью пишу :) 
avatar

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

  • 21 июля 2016, 10:45
+
0
*hi*  подождем)
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 11:14
+
0
В конце дня где то буду смотреть предыдущий топик а потом уже ваш.
avatar

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

  • 21 июля 2016, 11:18
+
0
*good* 
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 11:28
+
0
Сделать надо будет простую вещь

Это кто это определяет простая она или нет? Когда начнете делать сразу все и узнаете :D 
Пока так:



//+------------------------------------------------------------------+
//|                                                         Pips.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

extern double Lots        = 0.1;         // торговый объем
extern double MaxLot      = 5;           // аксимальный торговый объем
extern double KLot        = 2;           // увеличение лота
extern double KStep       = 2;           // увеличение шага
extern int    StopLoss    = 190;         // стоп лосс ордера
extern int    TakeProfit  = 50;          // тейк профит ордера
extern int    Step        = 10;          // шаг между ордерами
extern int    MaxTrades   = 20;          // максимальное количество ордеров
extern int    Slip        = 3;           // проскальзывание
extern int    N           = 36;          // период индикатора 30Pips
extern int    Magic       = 123;         // магик
extern string IndName     = "30pips";    // 

int ticket;
double tp,sl,price;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double pr)
  {
   int r=0;
   color clr=Green;

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

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

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(pr,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ModifyOrders()
  {
   double all=0;
   double 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)
              {
               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)
              {
               tp=NormalizeDouble(all+TakeProfit*Point,Digits);
               sl=NormalizeDouble(all-StopLoss*Point,Digits);
               if(OrderStopLoss()!=sl || OrderTakeProfit()!=tp)
                  bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);
              }

            if(OrderType()==OP_SELL)
              {
               tp=NormalizeDouble(all-TakeProfit*Point,Digits);
               sl=NormalizeDouble(all+StopLoss*Point,Digits);
               if(OrderStopLoss()!=sl || OrderTakeProfit()!=tp)
                  bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int FindOrderType()
  {
   int oticket,ticketNumber=0,type=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               type=OrderType();
              }
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastBuyPrice()
  {
   int oticket,ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               oprice=OrderOpenPrice();
              }
           }
        }
     }
   return(oprice);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastSellPrice()
  {
   int oticket,ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               oprice=OrderOpenPrice();
              }
           }
        }
     }
   return(oprice);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   if(CountTrades()>0) lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Steps()
  {
   double step=0;
   if(CountTrades()>0) step=NormalizeDouble(Step*MathPow(KStep,CountTrades()),0);
   return(step);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double pips1=iCustom(NULL,0,IndName,N,0,1);
   double pips2=iCustom(NULL,0,IndName,N,0,2);

   ModifyOrders();

   if(CountTrades()<1 && pips1<0)
     {
      PutOrder(0,Ask);
     }

   if(CountTrades()<1 && pips1>0)
     {
      PutOrder(1,Bid);
     }

   if(CountTrades()>0 && CountTrades()<=MaxTrades)
     {
      int otype=FindOrderType();

      if(otype==OP_BUY)
        {
         price=FindLastBuyPrice();
         if((price-Ask)/Point>=Steps())
           {
            PutOrder(0,Ask);
           }
        }

      else if(otype==OP_SELL)
        {
         price=FindLastSellPrice();
         if((Bid-price)/Point>=Steps())
           {
            PutOrder(1,Bid);
           }
        }
     }

   Comment("\n Lot: ",Lot(),
           "\n Trades: ",CountTrades(),
           "\n Step:",Steps());
  }
//+------------------------------------------------------------------+


avatar

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

  • 21 июля 2016, 17:18
+
0
отлично.теперь добавить трал… открыл скажем 0.8 объем… цена пошла к тейку… он тралит нижнюю позицию по заданным пунктам.и отключаемую усреднялку.и переключатель типа чтобы четко по сигналу торговал.выше нуля бай ниже нуля сел. если это уже перебор в заказе.то добавьте трал и чтобы по сигналу торговал как это положено.тейк стоп и трал тоже.спасибо.

ЗЫ.для меня торговать просто)) робота написать не просто)))
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 18:00
+
0
Сейчас есть все, кроме трала. Если поставить обычный то он так и будет последний ордер тралить.
www.opentraders.ru/downloads/1262/


Редактирован: 21 июля 2016, 18:24
avatar

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

  • 21 июля 2016, 18:20
+
0
в этом и идея тоже чтобы он большой объем добивал тралом.и потом если значение опять тоже… то снова тот же объем открывает. т.е. было 0.8 в бай… пошла цена вверх от него… через скажем 10п начинается трал… если закрыло и пошло опять в ту же цену где было открыто 0.8… он снова открывает эти 0.8. это последнее что надо сделать)) и готов
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 18:33
+
0
Интересная получилась усреднялка когда последние ордера тралятся! Никому не отдам! :D  www.opentraders.ru/downloads/1262/

avatar

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

  • 21 июля 2016, 18:43
+
0
чето индюк у меня другой показывает…
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 18:49
+
0
чето индюк у меня другой показывает… pipsfxgainer какой то
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 18:50
+
0
на скрине мой индюк… в тестере проверяю не мой индюк))
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 18:56
+
0
Когда принцесса видит сон про не сон, ей кажется, что сон не сон про сон, а думает что сон про не сон… :D 
avatar

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

  • 21 июля 2016, 19:02
+
0
откуда? *shock* 
Вот имя
extern string IndName = "30pips";  // 

вот вызов.
double pips1=iCustom(NULL,0,IndName,N,0,1);
   double pips2=iCustom(NULL,0,IndName,N,0,2);


обновил еще на всякий случай.
avatar

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

  • 21 июля 2016, 18:59
+
0
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 19:08
+
0
у вас так?

avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 19:09
+
0
все разобрался.спасибо.то что надо. буду тестить *zapoy* 
avatar

  11  Deimos Автор Сообщений: 94

  • 21 июля 2016, 19:30

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