Strannik
Алексей (деактивирован)

 
Уровень 0

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


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

Рейтинг 2081



РЕКОМЕНДУЮ



Советник МА

Напишите советник. С двумя скользящими МА. При пересечении открывает ордер. Ставит тейк и стоп. Ждем, закрытия, по стопу или тейку. Если получили встречный сигнал, сделку кроем, и открываем встречную. Прикручиваем тейк и стоп. Если сделка убыточная, закрылась по стопу либо по встречному сигналу получив убыток. Считаем объем новой сделки. Если сможем тем же объемом перекрыть минус, предыдущей(предыдущих) сделок. То заходим тем же объемом. Если нет, используем мартин. Если есть готовые решения, то «Vitalik5675» будет вам благодарен :) 
  • +2
  • Просмотров: 4026
  • 10 февраля 2016, 14:35
  • Strannik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
+1
есть два похожих варианта. один Андрей уже писал — www.opentraders.ru/downloads/506/
второй это IlanMA. можно скачать отсюда. я там просил Андрея лок приделать. в заказе есть возможность скачать советник. zakaz.opentraders.ru/29045.html
Редактирован: 10 февраля 2016, 15:32
avatar

  5  igr-yard Сообщений: 77

  • 10 февраля 2016, 14:59
+
+1
Не подходит. Илан не нужен. Тем более с локом. Второй тоже не то, что хотелось бы.
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 10 февраля 2016, 16:02
+
+1
у илана нет лока. Андрей отказался его делать. а если нужен трал, то возьмите отсюда www.opentraders.ru/downloads/954/ бросте в дополнительное окно, задайте ему нужный магик и он будет контролировать все пары на которых ордера с этим магиком. Илан вам больше подходит, под ваше ТЗ.
покрайней мере оба советника можно использовать как исходный материал.
avatar

  5  igr-yard Сообщений: 77

  • 10 февраля 2016, 17:36
+
+1
Причем тут илан? Как он может вообще подходить? Он использует усреднение. Это первое, а второе, трал вообще не нужен. Нужен советник, по ТЗ, или подобный. По скользящим средним. Но ни как не илан. *fool* 
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 10 февраля 2016, 17:50
+
+1
а Илан МА не по машкам? не устраивает илан и ладно. тогда остаётся к «2MATrallNoLossMEMM» приделать мартин и условия будут соблюдены.
avatar

  5  igr-yard Сообщений: 77

  • 10 февраля 2016, 19:00
+
+2
У меня был подобный, я его немного подправил:




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

extern int StopLoss     = 1200;
extern int TakeProfit   = 1400;
extern int Slip         = 50;
extern int MA1Period    = 9;
extern int MA2Period    = 22;
extern int Magic        = 123;
extern double Lots      = 0.1;
extern double MaxLot    = 5;
extern double KLot      = 2;

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

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<=0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,0,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);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double ma11=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma21=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma12=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,2);
   double ma22=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,2);

//---- buy 
   if(ma11>ma21 && ma12<ma22)
     {
      PutOrder(0,Ask);
     }
//---- sell   
   if(ma11<ma21 && ma12>ma22)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double ma11=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma21=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma12=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,2);
   double ma22=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,2);
//---
   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(ma11<ma21 && ma12>ma22)
                 {
                  if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Red))
                     Print("OrderClose error ",GetLastError());
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(ma11>ma21 && ma12<ma22)
                 {
                  if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Blue))
                     Print("OrderClose error ",GetLastError());
                 }
              }
           }
        }
     }
  }  
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && t!=Time[0])
     {
      OpenPos();
     }
   else ClosePos();
   t=Time[0];
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 10 февраля 2016, 19:14
+
0
Ордер buy закрылся по тейку, при пересечении ма в обратном направлении, ордер sell открылся, но когда она опять сменилась в сторону buy, то sell закрылся и все. А buy нее открылся.
Вот
avatar

  7  Vitalik5675 Сообщений: 282

  • 10 февраля 2016, 20:39
+
0
используй трал.
avatar

  5  igr-yard Сообщений: 77

  • 10 февраля 2016, 21:35
+
+1
А причем тут трал? Если ордер новый не открылся?
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 11 февраля 2016, 08:29
+
0
где там написано что не открылся? написано «нее открылся». понимай как хочешь.
avatar

  5  igr-yard Сообщений: 77

  • 11 февраля 2016, 08:49
+
0
Почему-то от тебя полезных советов мало(
Так и еще плохо видишь, нарисовать тебе где ордер не открылся?
И еще через одну лишнюю <<е>> уже комментарий писать, походу уровень так себе поднимешь*haha* 
avatar

  7  Vitalik5675 Сообщений: 282

  • 11 февраля 2016, 10:13
+
0
пиши грамотно. в отличии от тебя не попрошайничаю, а честно следую правилам сайта.
avatar

  5  igr-yard Сообщений: 77

  • 11 февраля 2016, 10:18
+
0
Ну вот еще + 1 сообщение точно уровень хочешь прокачать. Хватит уже засорять топик(*capitan* 
avatar

  7  Vitalik5675 Сообщений: 282

  • 11 февраля 2016, 10:23
+
+1
Ну вот еще + 1 сообщение точно уровень хочешь прокачать.

уровень не зависит от числа сообщений -_-
avatar

  45  Bishop Сообщений: 5719 - АЛЬФАХАМЕЦ-Машковод

  • 11 февраля 2016, 10:31
+
0
наивный. уровень не зависит от количества сообщений, тем более от количества в одном топике.
avatar

  5  igr-yard Сообщений: 77

  • 11 февраля 2016, 10:32
+
+1
Я чего то не особо понял. Какого ты привязался? Там ясно написано, " А buy нее открылся." Чего тут тебе не понятно? То трейлинг поставь, и на скрине все понятно, что открылось, а что нет. Если парню понадобилась помощь, это не значит, что ты тут умничать будешь.
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 11 февраля 2016, 10:48
+
+1
Сейчас посмотрите: www.opentraders.ru/downloads/897/



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

extern int StopLoss     = 1200;
extern int TakeProfit   = 1400;
extern int Slip         = 50;
extern int MA1Period    = 9;
extern int MA2Period    = 22;
extern int Magic        = 123;
extern double Lots      = 0.1;
extern double MaxLot    = 5;
extern double KLot      = 2;

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

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<=0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,0,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);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double ma11=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma21=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma12=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,2);
   double ma22=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,2);

//---- buy 
   if(ma11>ma21 && ma12<ma22)
     {
      PutOrder(0,Ask);
     }
//---- sell   
   if(ma11<ma21 && ma12>ma22)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double ma11=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma21=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,1);
   double ma12=iMA(NULL,0,MA1Period,0,MODE_EMA,PRICE_CLOSE,2);
   double ma22=iMA(NULL,0,MA2Period,0,MODE_EMA,PRICE_CLOSE,2);
//---
   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(ma11<ma21 && ma12>ma22)
                 {
                  if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Red))
                     Print("OrderClose error ",GetLastError());
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(ma11>ma21 && ma12<ma22)
                 {
                  if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Blue))
                     Print("OrderClose error ",GetLastError());
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      OpenPos();
     }
   else ClosePos();
  }
//+------------------------------------------------------------------+

Редактирован: 11 февраля 2016, 11:46
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 11 февраля 2016, 10:20
+
0
Слишком поздно ордер отрывается, просто ужас.
Нужно чтобы точно на то свече, где пересечение, а закрытие на максимуме еще до встречного сигнала, если ТР оказалось выше, а цена принялась откатывать

Редактирован: 19 февраля 2016, 02:43
avatar

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

  • 18 февраля 2016, 20:23
+
+2
Нужно чтобы точно на то свече где пересечение

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

а закрытие на максимуме еще до встречного сигнала, если ТР оказалось выше, а цена принялась откатывать

:D  все так хотели бы, чтобы закрывалось «когда должна была закрываться»

В этом и ловушка визуального тестирования. Смотришь и кажется, что входы-выходы должны быть идеальны, а на деле запаздывания очень серьезные.
avatar

  45  Bishop Сообщений: 5719 - АЛЬФАХАМЕЦ-Машковод

  • 18 февраля 2016, 21:25
+
0
а по факту можно задать условием пересечения МА и гистограммы MACD, вопрос как это в коде задать?
avatar

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

  • 19 февраля 2016, 02:46
+
+1
а по факту можно задать условием пересечения МА и гистограммы MACD, вопрос как это в коде задать?


Также как пересечение МА. Берем значения МА и MACD на 2-х барах и сравниваем.
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 19 февраля 2016, 10:09
+
0
а по факту можно задать условием пересечения МА и гистограммы MACD, вопрос как это в коде задать?

Индикатор MACD, линейный он или гистограмма, строится на основе MA! Это схождение и расхождение 3-х MA. По умолчанию ЕМАs с периодом 12, ЕМАl с периодом 26, EМАa с периодом 9. Вывод напрашивается: добавляя 4-ю MA, вам не интересно даже что MACD показывает. *think*  Но вы не единственный…
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 19 февраля 2016, 12:53

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