0
в ТЗ в самом верху — строчка над первым скрином

По последнему ТЗ все есть дальнейшие доработки в следующем топике.
avatar

AM2

  • 26 августа 2016, 17:17
0
Добавил в советник настройки индикатора:


//+------------------------------------------------------------------+
//|                                                 RenkoChannel.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 Slip          = 30;       // реквот
extern int Magic         = 123;      // магик
extern string IndName    = "TMA-KC";

extern int     HalfLength = 48;
extern int     MA_MODE    = 0;
extern int     PRICE_MODE = 0;
extern int     ATR_PERIOD = 100;
extern double  K = 2.0;

datetime t=0;
//+------------------------------------------------------------------+
//| 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;
   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(OrderType()<2) count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double up=iCustom(NULL,0,IndName,HalfLength,MA_MODE,PRICE_MODE,ATR_PERIOD,K,0,1);
   double dn=iCustom(NULL,0,IndName,HalfLength,MA_MODE,PRICE_MODE,ATR_PERIOD,K,2,1);

   if(t!=Time[0])
     {
      // покупка

      if((Close[1]>Open[1] && Close[2]<Open[2] && Ask<dn) ||              // цена ниже нижней границы канала плюс разворотный паттерн
         (Low[2]<dn && Close[1]>Open[1] && Close[2]<Open[2] && Ask>dn))   // цена выше нижней границы канала плюс разворотный паттерн и касание
        {
         if(CountTrades()<1) PutOrder(0,Ask);
        }
      // продажа

      if((Close[1]<Open[1] && Close[2]>Open[2] && Bid>up) ||              // цена выше верхней границы канала плюс разворотный паттерн
         (High[2]>up && Close[1]<Open[1] && Close[2]>Open[2] && Bid<up))  // цена ниже верхней границы канала плюс разворотный паттерн и касание
        {
         if(CountTrades()<1) PutOrder(1,Bid);
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double up=iCustom(NULL,0,IndName,HalfLength,MA_MODE,PRICE_MODE,ATR_PERIOD,K,0,1);
   double dn=iCustom(NULL,0,IndName,HalfLength,MA_MODE,PRICE_MODE,ATR_PERIOD,K,2,1);
//---
   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(High[2]>up && Close[1]<Open[1] && Close[2]>Open[2] && Bid<up) // цена ниже верхней границы канала плюс разворотный паттерн и касание
                 {
                  CloseAll(0);
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(Low[2]<dn && Close[1]>Open[1] && Close[2]<Open[2] && Ask>dn) // цена выше нижней границы канала плюс разворотный паттерн и касание
                 {
                  CloseAll(1);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up=iCustom(NULL,0,IndName,HalfLength,MA_MODE,PRICE_MODE,ATR_PERIOD,K,0,1);
   double dn=iCustom(NULL,0,IndName,HalfLength,MA_MODE,PRICE_MODE,ATR_PERIOD,K,2,1);

   if(t!=Time[0])
     {
      if(CountTrades()<1) OpenPos();
      else ClosePos();
     }

   Comment("\n up: ",up,"\n dn: ",dn);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 26 августа 2016, 07:44
0
Основные моменты в советнике есть: www.opentraders.ru/downloads/1297/

avatar

AM2

  • 26 августа 2016, 07:42
0
Точное соответствие ТЗ не гарантирую, то что можно быстро сделать сделаю.
avatar

AM2

  • 25 августа 2016, 14:00
0
На моем последнем скрине в обозначенном красным кружком месте эксперт и должен был по условию закрыть шорт и открыть лонг.


У меня открыл закрыл как положено:

avatar

AM2

  • 25 августа 2016, 13:50
0
Чтобы поправить мне нужно видеть какие ошибки когда, что при этом пишет и др. Для этого и прошу скрины и логи.
avatar

AM2

  • 25 августа 2016, 13:47
0
Поставил на отладку на своем генераторе ренко. У меня ренко лайф чарт 3. Открыл по сигналу продажу:

avatar

AM2

  • 25 августа 2016, 10:59
0
Советник открыл короткую позицию, но не закрыл (и сразу же не открыл длинную) после касания цены нижней линии канала и закрытия первого buy-ордера


У меня стоит двойной контроль только одной позиции. Не понимаю как у вас открылось 2 позы одновременно? На вашем скрине нет никакой отладочной информации чтобы мне понять в чем дело. Нужны полностью скрины сделок и вкладок журнал и эксперты.

Также ваш генератор ренко вешает мой ноут и я не в курсе как им пользоваться.
avatar

AM2

  • 24 августа 2016, 21:57
0
Кто будет заморачиваться на бесплатном?

avatar

AM2

  • 24 августа 2016, 20:51
0
Сдейте просто и понятно TakeProfit в пунктах и StopLoss в место этой массы неразберихи.


В метаэдиторе напишите самостоятельно, то что вам нужно в комментах.

сейчас же он работает только на стандартных настройках и то, не совсем корректно. Он выставляет отложки определенное количество и одновременно с этим открывает такое же количество ордеров…
Начинаю эксперементировать с настройками он выдает разные ошибки и перестает работать.


Здесь логи, скрины все как обычно. Скрины настроек, вкладок эксперты и журнал.
avatar

AM2

  • 24 августа 2016, 20:39
0
Посмотрю завтра.
avatar

AM2

  • 24 августа 2016, 20:10
0
Выполнение заказа затянулось, основа есть, занимайтесь отладкой самостоятельно или обращайтесь к платному. Здесь делаю только то что можно быстро сделать.
avatar

AM2

  • 24 августа 2016, 20:07
0
Сейчас по ТЗ все есть. Если бы сразу было такое задание, сколько времени и сил вы могли бы мне сэкономить. www.opentraders.ru/downloads/1296/

avatar

AM2

  • 24 августа 2016, 10:23
0
Кроме скрина выше я еще выкладывал рисунок EURUSDM2.jpg: zakaz.opentraders.ru/34047.html


Желательно чтобы все было перед глазами, чтобы ничего не искать:

avatar

AM2

  • 24 августа 2016, 09:50
0
Сделал подобный индикатор: www.opentraders.ru/downloads/1305/



avatar

AM2

  • 24 августа 2016, 08:34
0
Сейчас буду смотреть.
avatar

AM2

  • 24 августа 2016, 06:13
0
На рисунке — не ренко-график (H1).

Сначала делаю на обычном графике, затем отладка на ренко. Если все это затянется смело обращайтесь к платному. Здесь делаю только то что можно быстро сделать.
avatar

AM2

  • 24 августа 2016, 06:11
0
Сделайте новый заказ на доработку.
avatar

AM2

  • 24 августа 2016, 06:07