0
Cделано и работает :D 




//+------------------------------------------------------------------+
//|                                                          2MA.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 int StopLoss      = 2000;     // лось
extern int TakeProfit    = 2000;     // язь
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик

//---MA Inputs
extern int    MA1Period  = 1;
extern int    MA2Period  = 40;
extern int    MA1Shift   = -10;
extern int    MA2Shift   = 0;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   MA1Shift=MathAbs(MA1Shift);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double MA11=iMA(NULL,0,MA1Period,MA1Shift,0,0,Shift);
   double MA12=iMA(NULL,0,MA1Period,MA1Shift,0,0,Shift+1);
   double MA21=iMA(NULL,0,MA2Period,MA2Shift,0,0,Shift);
   double MA22=iMA(NULL,0,MA2Period,MA2Shift,0,0,Shift+1);

   if(MA11<MA21 && MA12>MA22)
     {
      PutOrder(1,Bid);
     }

   if(MA11>MA21 && MA12<MA22)
     {
      PutOrder(0,Ask);
     }
  }
//+------------------------------------------------------------------+
//| Подсчет позиций                                                  |
//+------------------------------------------------------------------+
int CountTrades(int ot=-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()==0 && (ot==0 || ot==-1)) count++;
            if(OrderType()==1 && (ot==1 || ot==-1)) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0] && CountTrades()<1)
     {
      OpenPos();
      t=Time[0];
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 16 июля 2016, 10:45
0
Сейчас есть свободное время, смотрю все заказы. Сделал основу, но в тестере индикатор «хулиганит» :)  может быть при торговле нормально будет.
www.opentraders.ru/downloads/1254/

avatar

AM2

  • 16 июля 2016, 10:12
0
Даже за такой тьмой ордеров краешек стрелки виднеется :) 
avatar

AM2

  • 15 июля 2016, 15:42
0
не могу понять в чем подвох, настройки индикатора одинаковые везде а вот точки входа советник произвольно берет…
он понимает где зона перекуплености а где перепроданости?

При появлении стрелки сетку ставит.
avatar

AM2

  • 15 июля 2016, 11:06
0
Сделал чтобы первую позу открывал на расстоянии от машки: www.opentraders.ru/downloads/1252
А почему на платном не закажете, если стратегия прибыльная?
avatar

AM2

  • 15 июля 2016, 10:48
0
Надеюсь, поняв систему вы возьмётесь оформить её в коде.

Нет не возьмусь. Чтобы реализовать целиком, нужно уйму времени и сил вбухать, а с этим не ко мне. Я приблизительный вариант в базу скинул и если по вашему ТЗ написать также примерно работать будет.
avatar

AM2

  • 14 июля 2016, 16:49
0
Если не выйдет получить сигнал от индикатора, берите пересечение линий стоха за уровнем, там один в один будет и быстрее летать будет.
avatar

AM2

  • 14 июля 2016, 16:28
0
забыл добавить, советник сделки открывает но он как то не реагирует на точки или на пересечения, тоесть он опирается на что то другое)))

Для отладки выведите в комменты значения PriceHigh, PriceLow.
Когда нет сигнала там значение -1000, когда есть 65 или -65. Для условия на вход можете прописать что то вроде:
if(PriceHigh!=-1000) //buy
avatar

AM2

  • 14 июля 2016, 16:09
0
Кто объяснит логику этого чудо советника, судя по индикатору был сигнал покупать а он тупо продает и еще зачем то покупает сразу 

Судя по скрину и сделкам советник не находит индикатор, поэтому и сделки на каждой свечке и туда сюда к тому же.
avatar

AM2

  • 14 июля 2016, 14:33
0
Памятка заказчику :) 

avatar

AM2

  • 14 июля 2016, 13:37
0
Объем работы большой, а за то что нельзя быстро сделать я не берусь и так уже второй день с ним сижу и не продвигается толком ничего. Обратитесь лучше к платному.
avatar

AM2

  • 14 июля 2016, 12:18
0
Попытался приблизиться к ТЗ, но все равно без грамотного задания где будет все четко ясно и наглядно делать нечего: www.opentraders.ru/downloads/1252/

avatar

AM2

  • 14 июля 2016, 11:38
0
Напишите в стол заказов, там сейчас Андрей aka АМ2 за него отвечает. Кстати, насколько я помню, это как раз его давнишняя разработка.


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

AM2

  • 14 июля 2016, 10:29
0
Попросил поправить ссылку. Можете скинуть в базу или на файлообменник.
avatar

AM2

  • 14 июля 2016, 10:25
0
Ваше задание индивидуальное, все функции нужно писать и отлаживать с нуля, это долго. Мне здесь оплачивается только небольшой объем работы. Пока такой вариант.




//+------------------------------------------------------------------+
//|                                                       Change.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 int StopLoss    = 0;    // Order sroploss
extern int TakeProfit  = 0;    // Order takeprofit
extern int Magic       = 123;  // Magic number
//+------------------------------------------------------------------+
//| 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,err=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,0.1,NormalizeDouble(price,Digits),3,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LastSL()
  {
   double sl=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()<2) sl=OrderStopLoss();
     }
   return(sl);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LastTP()
  {
   double tp=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()<2) tp=OrderTakeProfit();
     }
   return(tp);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastType()
  {
   int type=8;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderType()<2) type=OrderType();
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|  Модификация стопов                                              |
//+------------------------------------------------------------------+
void StopMode(double sl,double tp)
  {
   bool m;
   double st=0,tk=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            st=NormalizeDouble(sl,5);
            tk=NormalizeDouble(tp,5);
            
            if(OrderStopLoss()!=tk && OrderTakeProfit()!=st)
              {
               m=OrderModify(OrderTicket(),OrderOpenPrice(),tk,st,0,Yellow);
               return;
              }
           }

         if(OrderType()==OP_SELL)
           {
            st=NormalizeDouble(sl,5);
            tk=NormalizeDouble(tp,5);
            if(OrderStopLoss()!=st && OrderTakeProfit()!=tk)
              {
               m=OrderModify(OrderTicket(),OrderOpenPrice(),st,tk,0,Yellow);
               return;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(OrdersTotal()<1)
     {
      for(int i=1;i<=2;i++)
        {
         PutOrder(2,Bid-222*Point*i);
         PutOrder(5,Bid-666*Point);
        }
     }

   StopMode(LastSL(),LastTP());

   Comment("\n SL: ",LastSL(),
           "\n TP: ",LastTP(),
           "\n Type: ",LastType());
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 14 июля 2016, 08:52
+1
Накипело <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp; 





avatar

AM2

  • 14 июля 2016, 08:15
0
У меня также мозг кипит когда нет четкого ТЗ, необходимо чтобы было все предельно ясно и наглядно. Чтобы не приходилось все додумывать и догадываться а тем более вытягивать задание. Когда не ясности это просто выносит мозг. Чем доступнее и понятнее вы сможете донести до программиста желаемое тем лучше будет результат.
avatar

AM2

  • 14 июля 2016, 07:54
0
Ссылка битая подождем пока поправят.
avatar

AM2

  • 14 июля 2016, 07:46