0
Сейчас как раз нет фильтра по магику, а лось и язь это для теста или если соберетесь им торговать. Если BuySell = 0, то советник не торгует.

input int BuySell = 0;         // 0-не торгуем 1-Buy 2-Sell
avatar

AM2

  • 24 ноября 2015, 03:48
0
Это ещё пол беды, сегодня он стоял на демо с самого утра, и за 14 часов открыл всего пять сделок, хотя ситуаций когда он должен был открывать было в разы больше.


Опишите сигнал на вход и выход еще более подробно. Возьмите этот образец для описания: am2.opentraders.ru/29048.html
avatar

AM2

  • 24 ноября 2015, 03:04
0
То что сейчас смог проверить. Открывает закрывает сделку по сигналу, закрывает после торгов.

www.opentraders.ru/downloads/942/

avatar

AM2

  • 24 ноября 2015, 01:27
0
Добавил в советник реверс и время. Поставлю на демо для отладки. В следующий раз, когда советник работает не правильно, присылайте мне скрины с графика и записи в журнале в тот момент когда пропущена сделка или какой то другой глюк.

www.opentraders.ru/downloads/940/
avatar

AM2

  • 24 ноября 2015, 01:17
0
Сделал пока такой вариант:




//+------------------------------------------------------------------+
//|                                                    ZeroPoint.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.02"

#include <Trade\Trade.mqh>             // Подключаем торговый класс CTrade

//--- входные параметры эксперта
input int      TakeProfit = 500;       // Тейкпрофит
input int      StopLoss   = 500;       // Стоплосс
input int      BULevel    = 200;       // Уровень БУ
input int      BUPoint    = 20;        // Пункты БУ
input int      BuySell    = 1;         // 0-не торгуем 1-Buy 2-Sell
input int      Slip       = 50;        // Проскальзывание
input double   Lot        = 0.1;       // Количество лотов для торговли 

CTrade trade;                          // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

//--- Стопы
   double stop=0,take=0;
//--- Buy
   if(PositionsTotal()<1 && BuySell==1)
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Ask-StopLoss*_Point;
      if(TakeProfit>0) take=Ask+TakeProfit*_Point;
      //--- Открываем ордер на покупку
      trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lot,NormalizeDouble(Ask,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
     }
//--- Sell
   if(PositionsTotal()<1 && BuySell==2)
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Bid+StopLoss*_Point;
      if(TakeProfit>0) take=Bid-TakeProfit*_Point;
      //--- Открываем ордер на продажу
      trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lot,NormalizeDouble(Bid,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double sl=0,tp=0;

   if(PositionSelect(_Symbol))
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         if(PositionGetDouble(POSITION_PRICE_OPEN)<=Bid-BULevel*_Point)
           {
            if(PositionGetDouble(POSITION_PRICE_OPEN)>PositionGetDouble(POSITION_SL))
              {
               sl = PositionGetDouble(POSITION_PRICE_OPEN)+BUPoint*_Point;
               tp = PositionGetDouble(POSITION_PRICE_OPEN)+TakeProfit*_Point;
               trade.PositionModify(_Symbol,sl,tp);
              }
           }
        }

      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         if(PositionGetDouble(POSITION_PRICE_OPEN)>=Ask+BULevel*_Point)
           {
            if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN))
              {
               sl = PositionGetDouble(POSITION_PRICE_OPEN)-BUPoint*_Point;
               tp = PositionGetDouble(POSITION_PRICE_OPEN)-TakeProfit*_Point;
               trade.PositionModify(_Symbol,sl,tp);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BuySell>0) OpenPos();
   if(BULevel>0) BU();
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 24 ноября 2015, 00:12
0
Где то писал отдельно БУ. Сейчас посмотрю.
avatar

AM2

  • 23 ноября 2015, 22:51
0
Я поставлю на демо, если что не по ТЗ поправлю.
avatar

AM2

  • 23 ноября 2015, 22:39
0
Если будет вопрос по поводу советника, вот тогда и отвечу.
avatar

AM2

  • 23 ноября 2015, 11:17
0
Все по мере поступления :) 
avatar

AM2

  • 23 ноября 2015, 11:13
0
Андрей вдруг что то захочется добавить можно обратится?

В пределах разумного :D 
Я тебя не устал

У меня работа такая! :) 
avatar

AM2

  • 23 ноября 2015, 10:54
0
Добавьте пожалуйста в настройки советника функцию реверса, которую можно включать отключать.


А отсюда поподробнее пожалуйста.
avatar

AM2

  • 23 ноября 2015, 06:09
0
Сначала тот нужно до ума довести. Очень приличный объем работы.
avatar

AM2

  • 23 ноября 2015, 05:43
0
Лок ставится, закрывается и снова открывается: www.opentraders.ru/downloads/933/

avatar

AM2

  • 23 ноября 2015, 04:33
0
Все основные параметры добавлены. Сейчас буду смотреть лок.
www.opentraders.ru/downloads/933/
avatar

AM2

  • 23 ноября 2015, 02:45
0
Сначала буду добавлять то что есть в илане, а потом уже лок буду смотреть.
avatar

AM2

  • 23 ноября 2015, 01:43
0
Вот это ТЗ сказка! Сейчас посмотрю что можно сделать.

Техническое задание

Торговый советник DREAM STRATEGY v.1
для торгового терминала МТ4
В советнике используются ндикаторы:
1.пользовательский индикатор SCALPER DREAM build 600
2.стандартный индикатор PARABOLIC SAR
/прилагаются/
• Советник торгует в реверс (LONG/SHORT)
• В советнике должен быть реализован StopLoss,
В советнике должен быть реализован Takeprofit
В советнике должен быть реализован скользящий стоп /0=falce/
• Установка фиксированного лота для торговли,
• Функция начала работы советника /час, мин 00-00/
• Функция окончания работы советник /час, мин 00-00/
• Функция выхода из позиции одновременно с окончанием работы советника /TRUE. FALCE/
• Выбор таймфрейма в зависимости от выбранного окна графика,
Magic

1. Тейкпрофит и стоплосс
1. 0 — параметр отключен, и Тейкпрофит сделки будет равен 0.
2. 0 — параметр отключен, и Стоплосс сделки будет равен 0.

2. Условия входа и выхода

А// Вход в длинную позицию осуществляется по следующему условию:

Индикатор Scalper Dream окрашен в синий цвет.
Рыночная цена больше значения Parabolic SAR.
Вход в позицию производится строго на первой лонговой свече /баре/.

Выход из длинной позиции
происходит, если выполнено, хотя бы одно из следующих условий:
1. Выполнены условия для входа в короткую позицию.
2. Выход по ордеру стоп-лосс или тейк-профит.
3. Выход в конце работы советника (при активной соответствующей опции).

В// Вход в короткую позицию осуществляется по следующему условию:

Индикатор Scalper Dream окрашен в красный цвет.
Рыночная цена меньше значения Parabolic SAR.
Вход в позицию производится строго на первой шортовой свече /баре/.

Выход из короткой позиции
происходит, если выполнено, хотя бы одно из следующих условий:
1. Выполнены условия для входа в длинную позицию.
2. Выход по ордеру стоп-лосс или тейк-профит.
3. Выход в конце работы советника (при активной соответствующей опции).

2. Выставление заявок
Все ордера, формируемые советником, являются рыночными
avatar

AM2

  • 23 ноября 2015, 00:09
0
Править Илан не возьмусь.
avatar

AM2

  • 23 ноября 2015, 00:04
0
Добавил простейший ММ. Вам там еще ошибки модификации и удаления ордеров вылавливать.
www.opentraders.ru/downloads/941/


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lots(double Risk)
  {
   double lots=0;
   if(Lot==0)
     {
      lots=NormalizeDouble(AccountBalance()*Risk/1000000,2);
     }
   else lots=Lot;
   if(lots==0)lots=Lot;
   return(lots);
  }       
avatar

AM2

  • 22 ноября 2015, 07:28
0
Показания над баром добавил. Насчет ММ подробнее пожалуйста.
www.opentraders.ru/downloads/941/

avatar

AM2

  • 22 ноября 2015, 03:58