0
Пробовал в тестере советник TouchMA Сделки не открывает В журнале ошибка
2016.05.01 14:02:38.810 TestGenerator: 808893 generating errors, logged 100 first error records
Что нужно сделать чтобы советник работал.


Это нужно разбираться что к чему. Опишите все максимально подробно в новом топике в столе заказов, со скринами настроек, вкладок эксперты журнал
avatar

AM2

  • 1 мая 2016, 13:49
0
Я почти закончил. Умножение лота как будет идти?
avatar

AM2

  • 1 мая 2016, 12:07
0
Сделал пока в минимальной поставке:



www.opentraders.ru/downloads/1166/
avatar

AM2

  • 1 мая 2016, 11:16
0
А где индикатор, только на картинке? :) 
avatar

AM2

  • 1 мая 2016, 10:13
0
Закрыл позу когда получили тейк:




//+------------------------------------------------------------------+
//|                                                   OpenOrders.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     = 500;      // лось
extern int TakeProfit   = 500;      // язь
extern int Delta        = 300;      // расстояние от цены
extern int Expiration   = 10;       // истечение ордера
extern int StopLimit    = 1;        // 0-Stop 1-Limit
extern int Slip         = 30;       // реквот
extern int Magic        = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   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()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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 DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Last()
  {
   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);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
void ClosePos(int ot=-1)
  {
   bool cl;
   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))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Last()==1 || Last()==2) DelOrder();

   if(CountTrades()<1)
     {
      if(StopLimit==0)
        {
         if(CountOrders(4)<1)PutOrder(4,Bid+Delta*Point);
         if(CountOrders(5)<1)PutOrder(5,Bid-Delta*Point);
        }

      if(StopLimit==1)
        {
         if(CountOrders(2)<1)PutOrder(2,Bid-Delta*Point);
         if(CountOrders(3)<1)PutOrder(3,Bid+Delta*Point);
        }
     }

   if(Last()==1) ClosePos(-1);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 1 мая 2016, 10:08
0
Кидаете в папку с индикаторами с заменой старого или меняете код в метаэдиторе.
avatar

AM2

  • 1 мая 2016, 09:37
0
После выходных буду смотреть что можно сделать.
avatar

AM2

  • 1 мая 2016, 09:34
0
Я вывел в настройки период и тип цены индикатора, но с другого таймфрейма советник сигнал не берет. Я попробовал несколько вариантов, глухо.
www.opentraders.ru/downloads/1163/
avatar

AM2

  • 1 мая 2016, 09:32
0
Добавил алерты к индикатору со стрелками: www.opentraders.ru/downloads/1165/

avatar

AM2

  • 30 апреля 2016, 23:56
0
А для кого простого!? Если так всё просто, делай сам


Здесь действительно все просто и быстро делается.
avatar

AM2

  • 30 апреля 2016, 23:00
0
Сначала делаю по условиям: zakaz.opentraders.ru/25597.html
потом смотрю остальное.
avatar

AM2

  • 30 апреля 2016, 22:03
0
Смотрите гоняйте потом напишите что поправить.
www.opentraders.ru/downloads/1164/
avatar

AM2

  • 30 апреля 2016, 21:58
0
Я сделал набросок, который откроет в средней трети диапазона. только какой смысл во всем этом?


//+------------------------------------------------------------------+
//|                                                      Kashtan.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    = 3000;     // язь
extern int BarsCount     = 20;       // баров для расчета
extern int MaxDelta      = 1000;     // максимальное расстояние от хая до лоу
extern int MinDelta      = 100;      // минимальное расстояние от хая до лоу
extern int Mnogitel      = 3;        // множитель для десятины
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| 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,Lots,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 CloseAll()
  {
   bool cl;
   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)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==OP_SELL)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double h = High[iHighest(NULL,0,MODE_HIGH,BarsCount,0)];
   double l = Low[iLowest(NULL,0,MODE_LOW,BarsCount,0)];

   if(CountTrades()<1 && t!=Time[0])
     {
      if((h-l)>MinDelta*Point && (h-l)<MaxDelta*Point)
        {
         if(Bid>(l+(h-l)/3) && Bid<(h-(h-l)/3))
           {
            PutOrder(0,Ask);
            PutOrder(1,Bid);
            t=Time[0];
           }
        }
     }

   Comment("\n Delta: ",(h-l)/Point,
           "\n High: ",h,
           "\n Low: ",l,
           "\n h-(h-l)/3: ",h-(h-l)/3,
           "\n l+(h-l)/3: ",l+(h-l)/3);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 29 апреля 2016, 21:59
0
После выходных смотреть буду.
avatar

AM2

  • 29 апреля 2016, 21:02
0
Вечером еще посмотрю как сделать с пересчетом, надеюсь получится сделать по образцам кода.
avatar

AM2

  • 29 апреля 2016, 12:00
0
Вот пара скриптов строющих фибо переделывал под свои нужды только нет привязки к цене

В коде индикатора нашел примерный код для пересчета. А почему самостоятельно не делаете вы ведь можете кодить?
avatar

AM2

  • 29 апреля 2016, 11:51
0
Устроит если скрипт будет привязываться к изломам зигзага, т.к. функции перерасчета координат курсора в номер бара у меня нет. Образцы кода помогут.
avatar

AM2

  • 29 апреля 2016, 11:30
0
Сначала делаю согласно условиям: zakaz.opentraders.ru/25597.html
Все остальное смотрю если есть свободное время.
avatar

AM2

  • 29 апреля 2016, 11:09