Лента последних комментариев


0
А с какими настройками он у тебя усреднял и закрывал?
avatar

Kashtan

  • 16 августа 2018, 20:27
0
открыл вручную ордер, через шаг советник выставил усредняющий:

Если так, тогда всё норм. Этого не проверял как увидел что к ручному ТП не ставит. Ну самому ТП ставить на проблема к первому, лишь бы остальное делал
avatar

Kashtan

  • 16 августа 2018, 20:26
0
Магик по умолчанию, не менял
avatar

Kashtan

  • 16 августа 2018, 20:22
0
Я длительное время задумывался об использовании стратегии торговли на отскоке от Moving Average.
С вашим советником, www.opentraders.ru/downloads/755/ не смог разобраться самостоятельно, точнее с его настройками. При тестировании его на Демо, выяснилось, что при подходе котировок сверху вниз к Moving Average, советник подает сигнал и открывает сделку по котировке БИД, а при подходе котировок снизу вверх, советник подает сигнал и открывает сделку по котировке АСК (т.е. реально котировки еще на графике не подошли к Moving Average, а сделка уже открылась). Необходимо, что бы сигнал подавался и открывалась сделка лишь при условии касания котировкой БИД не только сверху вниз, а и снизу вверх!
Далее по не понятному алгоритму, после открытия первого ордера на отскок от Moving Average, советник открыл второй ордер, после закрытия первого уже в обратном направлении. Т.е. котировки бегали вверх и вниз через МА не достигая ни Stop Loss ни Take Profit, я вручную закрыл ордер, то при следующем подходе к Moving Average, ордер был открыт не на отскок, а на оборот на продолжение движения!
Обдумав все возможные варианты поведения советника, я написал какие требованиям он должен реализовывать, что бы его работа была наилучшей.
Если Вы сможете внести необходимые коррективы, будет отлично!

Открытие позиции советник совершает только один раз, после установки советника на

график, при условии наступления заданного события.
Событие наступило, ордер открывается.
Под событием понимается ситуация, когда на графике инструмента, на который установлен

советник, произошло касание котировкой БИД, заданной в настройках советника, Moving

Average.
В настройках советника должна присутствовать возможность настройки значений Moving

Average:
1. Период
2. Сдвиг
3. Метод МА: Simple, Exponential, Smoothed, Linear Weighted.
4. Применить к: Close, Open, High, Low, Median Price (HL/2), Typical Price (HLC/3),

Weighted Close (HLCC/4), Previous Indicator`s Data, First Indicator`s Data.

В настройках советника должна присутствовать возможность настройки значений:
1. Размер лота
2. Дистанция в пунктах, для открытия ордера до момента касания Moving Average

котировкой БИД (например: котировка приблизилась к Moving Average на расстояние 1

пункт, сделка открывается.)
3. Направление открытия позиции: Buy, Sell
4. Magic — Уникальный номер ордеров советника
5. Slip — Проскальзывание.
6. Stop Loss — стоп лосс в пунктах (если 0, нет стоп лосс)
7. Take Profit — размер тейк профит в пунктах (если 0, нет тейк профит)
8. Sound — Включение / отключение звука при наступлении касания котировкой БИД,

заданной в настройках советника, Moving Average.
9. Желаемое количество повторений звукового оповещения (сколько раз повторится

звуковой сигнал, когда произошло касание Moving Average
10. Trade — Включение / отключение возможности открытия и закрытия ордеров, для

случаев, кода требуется исключительно только звуковое оповещение.

Если ордер закрыт вручную, до достижения заданного уровня Тейк профита или Стоп лосс,

советник ордер не переоткрывает.
Если ордер открыт, а котировка сначала отдалилась на некоторое количество пунктов от

Moving Average, а затем вернулась и снова коснулась Moving Average, никакие ордера

больше не открываются.
Если ордер закрыт по достижению заданного уровня Тейк профита или Стоп лосс, а после

этого события, котировки развернулись и снова произошло касание котировкой Moving

Average, новый ордер больше не открывается.
Не при каких обстоятельствах больше одного ордера не открывается!
avatar

Odinochka

  • 16 августа 2018, 19:24
0
открыл вручную ордер, через шаг советник выставил усредняющий:


как только первый вышел в бу — оба закрылись:



avatar

AM2

  • 16 августа 2018, 18:33
0
Большое спасибо.
avatar

Dim777777

  • 16 августа 2018, 18:02
0
у тебя в настройках стоит какой магик?
avatar

AM2

  • 16 августа 2018, 17:59
0
1. покупка — свеча пересекает верхнюю границу тма и слоуп зеленый или лайм.
2. продажа — свеча пересекает нижнию границу тма и слоуп красный или кирпич.

К сожалению такие входы не подойдут.

Необходимо:
1. покупка — свеча пересекает нижнию границу тма и слоуп зеленый.
2. продажа — свеча пересекает верхнию границу тма и слоуп красный.

По возможности на М15, а не Н1.
avatar

yuriskam

  • 15 августа 2018, 23:03
0
по превышении сколько хочешь:




//+------------------------------------------------------------------+
//|                                                          TDI.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, 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      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик

extern string IndName="TDI-With_Alerts";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   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,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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double yel5 = iCustom(NULL,PERIOD_M5,IndName,2,Shift);
   double gre5 = iCustom(NULL,PERIOD_M5,IndName,4,Shift);
   double yel15 = iCustom(NULL,PERIOD_M15,IndName,2,Shift);
   double gre15 = iCustom(NULL,PERIOD_M15,IndName,4,Shift);
   double yel30=iCustom(NULL,PERIOD_M30,IndName,2,Shift);
   double gre30=iCustom(NULL,PERIOD_M30,IndName,4,Shift);
   double yel60=iCustom(NULL,PERIOD_H1,IndName,2,Shift);
   double gre60=iCustom(NULL,PERIOD_H1,IndName,4,Shift);

   if(gre5>yel5 && gre15>yel15 && gre30>yel30 && gre60>yel60)
     {
      PutOrder(0,Ask);
     }

   if(gre5<yel5 && gre15<yel15 && gre30<yel30 && gre60<yel60)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderProfit()>0) break;
            if(OrderProfit()<0)
              {
               lot=OrderLots()*KLot;
               break;
              }
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   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(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=OrdersTotal()-1;i>=0;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,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   if(CountTrades()<1) OpenPos();
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 15 августа 2018, 21:45
0
по одновременному пересечению нет вообще сигналов:


//+------------------------------------------------------------------+
//|                                                          TDI.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, 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      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик

extern string IndName="TDI-With_Alerts";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   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,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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double yel5 = iCustom(NULL,PERIOD_M5,IndName,2,Shift);
   double gre5 = iCustom(NULL,PERIOD_M5,IndName,4,Shift);
   double yel15 = iCustom(NULL,PERIOD_M15,IndName,2,Shift);
   double gre15 = iCustom(NULL,PERIOD_M15,IndName,4,Shift);
   double yel30=iCustom(NULL,PERIOD_M30,IndName,2,Shift);
   double gre30=iCustom(NULL,PERIOD_M30,IndName,4,Shift);
   double yel60=iCustom(NULL,PERIOD_H1,IndName,2,Shift);
   double gre60=iCustom(NULL,PERIOD_H1,IndName,4,Shift);

   double yel52=iCustom(NULL,PERIOD_M5,IndName,2,Shift+1);
   double gre52=iCustom(NULL,PERIOD_M5,IndName,4,Shift+1);
   double yel152 = iCustom(NULL,PERIOD_M15,IndName,2,Shift+1);
   double gre152 = iCustom(NULL,PERIOD_M15,IndName,4,Shift+1);
   double yel302=iCustom(NULL,PERIOD_M30,IndName,2,Shift+1);
   double gre302=iCustom(NULL,PERIOD_M30,IndName,4,Shift+1);
   double yel602=iCustom(NULL,PERIOD_H1,IndName,2,Shift+1);
   double gre602=iCustom(NULL,PERIOD_H1,IndName,4,Shift+1);

   if(gre5>yel5 && gre52<yel52  && gre15>yel15 && gre152<yel152 && gre30>yel30  && gre302<yel302 && gre60>yel60 && gre602<yel602)
     {
      PutOrder(0,Ask);
     }

   if(gre5<yel5 && gre52>yel52  && gre15<yel15 && gre152>yel152 && gre30<yel30  && gre302>yel302 && gre60<yel60 && gre602>yel602)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderProfit()>0) break;
            if(OrderProfit()<0)
              {
               lot=OrderLots()*KLot;
               break;
              }
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   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(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=OrdersTotal()-1;i>=0;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,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   if(CountTrades()<1) OpenPos();
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 15 августа 2018, 21:40
0
Пример без замены на ноль после первого открытия. Лось и тейк по 1000П


avatar

Kashtan

  • 15 августа 2018, 21:13
0
сделал такие входы:

1. покупка — свеча пересекает верхнюю границу тма и слоуп зеленый или лайм.
2. продажа — свеча пересекает нижнюю границу тма и слоуп красный или кирпич.

т.о. сделок больше:



пуш есть: www.opentraders.ru/downloads/2025/
avatar

AM2

  • 15 августа 2018, 20:59
0
После открытия усреднительного к нему так же встают свои ТП и СЛ.

Настройки были такие для ускорения проверки

А при продолжении противоположного движения появляются новые ордера усреднения


В ТЗ предусматривается только один ордер усреднения и при его открытии ТП и СЛ ордеров ОБЩИЙ!!! Первый ордер закрывается в безубыток, усреднительный по цене открытия первого
avatar

Kashtan

  • 15 августа 2018, 19:37
Начать торговлю с Альпари