0
Скрины логи в студию? Чужим кодом не занимаюсь.
avatar

AM2

  • 7 июля 2016, 08:27
0
Смотрит сразу на 3 ТФ, настройки вывел и еще хотел изменить название: «3 сутки» :D  www.opentraders.ru/downloads/1237/


void OpenPos()
  {
   double MA1=iMA(NULL,240,MA1Per,0,MA1Met,MA1Pr,Shift);
   double MA2=iMA(NULL,60, MA2Per,0,MA2Met,MA2Pr,Shift);
   double MA3=iMA(NULL,5,  MA3Per,0,MA3Met,MA3Pr,Shift);
   double MA32=iMA(NULL,5,MA3Per,0,MA3Met,MA3Pr,Shift+1);

   if(Ask>MA1 && Ask>MA2 && iClose(NULL,5,1)>MA3 && iOpen(NULL,5,1)<MA32)
     {
      PutOrder(0,Ask);
     }

   if(Ask<MA1 && Ask<MA2 && iClose(NULL,5,1)<MA3 && iOpen(NULL,5,1)>MA32)
     {
      PutOrder(1,Bid);
     }
  }
avatar

AM2

  • 6 июля 2016, 12:58
0
Переписал с нуля ориентируясь больше на ваше ТЗ, т.к. с исходным кодом небольшие расхождения были: www.opentraders.ru/downloads/1237/

avatar

AM2

  • 6 июля 2016, 09:51
0
Давайте сделаем так со стоп лосом, посмотрим что получится.


В гадалки играть не будем, если не получается по ТЗ это уже не ко мне. По исходному ТЗ все сделано.
avatar

AM2

  • 6 июля 2016, 09:24
0
Сейчас близко к авторской стратегии, в рынке 3 ордера: www.opentraders.ru/downloads/1236/

avatar

AM2

  • 6 июля 2016, 09:17
0
Посмотрел исходную стратегию. Вы забыли скопипастить этот момент:

Оба отложенных ордера являются как бы стоп лоссом и тейк профитом для открытой
позиции! Другими словами, при срабатывании одного из отложенных ордеров
автоматически закрывается открытая позиция не зависимо, был взят профит
или словили стоп лосс и откладывается новый отложенник взамен сработавшему.


Поэтому и зависает куча ордеров.
avatar

AM2

  • 6 июля 2016, 06:55
0
Да нет я просто жду когда сделаешь полную версию, не хочу тебя грузить, может у тебя много работы.

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

AM2

  • 6 июля 2016, 06:42
0
В работе всегда находится три ордера — открытая позиция и два отложенника — не больше, не меньше.


Вот этот пункт у меня вызывает вопросы. А что делать если ордер сработал, поза зависла и не перешла в БУ?
avatar

AM2

  • 6 июля 2016, 06:36
+1
Даже и в мыслях не было что по такому Т.З. советник не простой.

А вы начните делать и сразу все узнаете <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp; 
avatar

AM2

  • 6 июля 2016, 06:22
0
Добавил свой лот.
И зачем два магика, если советник всего один?

Алгоритм непростой, я реализовал таким образом.




//+------------------------------------------------------------------+
//|                                                      BuySell.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 Lot2       = 0.2;      // добавочный лот
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 500;      // язь
extern int StopLoss2     = 1500;     // лось
extern int TakeProfit2   = 1500;     // язь
extern int BuySell       = 0;        // 1-buy 2-sell 0-off
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик
extern int Magic2        = 321;      // магик доп ордера
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double lot,double stop,double take,int mag)
  {
   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+stop*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-take*Point,Digits);
     }

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

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",mag,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 || OrderMagicNumber()==Magic2))
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastRes()
  {
   int result=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderProfit()>0)
           {
            result=1;//tp  
           }
         if(OrderProfit()<0)
           {
            result=2;//sl  
           }
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastType()
  {
   int type=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         type=OrderType();
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      if(LastRes()==2 && LastType()==0) PutOrder(1,Bid,Lot2,StopLoss2,TakeProfit2,Magic2);
      if(LastRes()==2 && LastType()==1) PutOrder(0,Ask,Lot2,StopLoss2,TakeProfit2,Magic2);
     }
     
   if(CountTrades()<1)
     {
      if(BuySell==1) PutOrder(0,Ask,Lots,StopLoss,TakeProfit,Magic);
      if(BuySell==2) PutOrder(1,Bid,Lots,StopLoss,TakeProfit,Magic);
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 5 июля 2016, 22:09
0
Автор молчит, видимо идею проверил.
avatar

AM2

  • 5 июля 2016, 21:55
0
Cделал на выбор: www.opentraders.ru/downloads/1213/

extern int ModeType = 0; // 0-обычные стопы. 1-от предыдущей свечи


avatar

AM2

  • 5 июля 2016, 13:14
0
Завтра буду смотреть.
avatar

AM2

  • 4 июля 2016, 21:14
0
Может ему мешает другой советник?

Уберите посмотрите, как заработает добавлю стопы от свечи.

Скрины так делают: Правый клик -> Сохранить как рисунок -> Активная рабочая область -> Имя файла -> Сохранить.

Мне нужно видеть вкладки: Журнал, Эксперты, Торговля.

Без этого всего никуда, т.к. я не знаю что там у вас, на основе этих данных я смогу хоть что то понять в чем там у вас дело.
avatar

AM2

  • 4 июля 2016, 21:11
0
ещё и пятьсый вариант,

Это равноценно варианту 1. Можно даже упростить, т.к. МА 50 всегда раньше пересечет МА 100 и будет так:

1. Входы.

1.1. Покупка. МА 50 пересекает МА 100 снизу вверх.
1.2. Продажа. МА 50 пересекает МА 100 сверху вниз.

2. Выходы.

2.1. Закрытие покупок. МА 50 пересекает МА 100 сверху вниз
2.2. Закрытие продаж. МА 50 пересекает МА 100 снизу вверх.



А так я уже сделал в коде выше.
avatar

AM2

  • 4 июля 2016, 18:32
0
Извините, я не понял, Вы внесли изменения по ТЗ?

Сначала выясняю почему у вас не ставит стопы сразу. У меня все ставит нормально, можно убедиться по скринам. Покажите на скринах что советник работает неверно.
avatar

AM2

  • 4 июля 2016, 17:48
0
Тут вариантов немного:

номер раз:

1. Входы.

1.1. Покупка. МА 50 пересекает МА 100 или МА 200 снизу вверх.
1.2. Продажа. МА 50 пересекает МА 100 или МА 200 сверху вниз.

2. Выходы.

2.1. Закрытие покупок. МА 50 пересекает МА 100 или МА 200 сверху вниз
2.2. Закрытие продаж. МА 50 пересекает МА 100 или МА 200 снизу вверх.


двас:

1. Входы.

1.1. Покупка. МА 100 пересекает МА 200 снизу вверх.
1.2. продажа. МА 100 пересекает МА 200 сверху вниз.

2. Выходы.

2.1. Закрытие покупок. МА 50 пересекает МА 100 или МА 200 сверху вниз
2.2. Закрытие продаж. МА 50 пересекает МА 100 или МА 200 снизу вверх.


трис:

1. Входы.

1.1. Покупка. МА 50 пересекает МА 100 или МА 200 снизу вверх.
1.2. продажа. МА 50 пересекает МА 100 или МА 200 сверху вниз.

2. Выходы.

2.1. Закрытие покупок. МА 100 пересекает МА 200 сверху вниз
2.2. Закрытие продаж. МА 100 пересекает МА 200 снизу вверх.


четырес:

1. Входы.

1.1. Покупка. МА 100 пересекает МА 200 снизу вверх.
1.2. продажа. МА 100 пересекает МА 200 сверху вниз.

2. Выходы.

2.1. Закрытие покупок. МА 100 пересекает МА 200 сверху вниз
2.2. Закрытие продаж. МА 100 пересекает МА 200 снизу вверх.


может где еще спряталось и пятьс :D 
avatar

AM2

  • 4 июля 2016, 14:48
0
все готово ведь почти только от вас ТЗ нужно, а сигнал переписать 5 минут делов.
avatar

AM2

  • 4 июля 2016, 12:46