Здравствуйте, гость ( Вход | Регистрация )

5 страниц V « < 2 3 4 5 >  
Ответить в эту темуОткрыть новую тему
> Определение тренда, Определяем тренд по эксперту ProtoType-IX
leonid553
сообщение 2.11.2007, 14:54
Сообщение #31





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Понял. Тогда надо определиться с моментом входа.
Я то думал, что мы оцениваем уже сформировавшийся бар. И по результатам оценки принимаем решение, - открыть позицию или нет.
Получается алгоритм должен быть такой:
Вот открылся бар (в 0:00ч.). Далее советник пассивно ждет, когда (и если) этот бар вырастет до заданного нами значения (в твоем примере BarSize_long(short)- до 100 пипсов). Если такое случилось, - то мы входим в рынок, - по направлению движения бара.
Если бар не достиг этого значения, - отслеживаем следующий... ?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 2.11.2007, 17:36
Сообщение #32





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Вот вроде - то что надо. Но коэф.=10000 пока оставил. Для Фуя задавать размер с учетом этого!
Работает в рЕжиме по ВСЕМ ТИКАМ

Код

double vol_long = (iHigh(NULL,1440,0)- iOpen(NULL,1440,0))*10000;
double vol_short= (iOpen(NULL,1440,0)- iLow(NULL,1440,0))*10000;

  Comment (vol_long);
  Comment (vol_short);
//===== Ищем возможность войти в рынок ==========================================

int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders==0)                 //если нет открытых ордеров
  {

//---------проверяем условие на покупку----------------------------
  if   (  
                   (vol_long>BarSize_long )  )
   {
  ...   }
//--------проверяем условие на продажу------------------------------
  if  (
                  (vol_short>BarSize_short))


Прикрепленные файлы
Прикрепленный файл  Plastic_v03.mq4 ( 4.35 килобайт ) Кол-во скачиваний: 485
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 2.11.2007, 18:04
Сообщение #33





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Похоже ещё надо добавить "блокировку". Чтобы на одном баре - не более одной сделки было....


Эскизы прикрепленных изображений
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Plastик
сообщение 2.11.2007, 19:07
Сообщение #34





Группа: Активный участник
Сообщений: 15
Регистрация: 25.10.2007
Пользователь №: 1 527
Спасибо сказали: 0 раз(а)



Цитата(leonid553 @ 2.11.2007, 17:54) *

Понял. Тогда надо определиться с моментом входа.
Я то думал, что мы оцениваем уже сформировавшийся бар. И по результатам оценки принимаем решение, - открыть позицию или нет.
Получается алгоритм должен быть такой:
Вот открылся бар (в 0:00ч.). Далее советник пассивно ждет, когда (и если) этот бар вырастет до заданного нами значения (в твоем примере BarSize_long(short)- до 100 пипсов). Если такое случилось, - то мы входим в рынок, - по направлению движения бара.
Если бар не достиг этого значения, - отслеживаем следующий... ?

Абсолютно верно! Только не забываем что бары у нас дневные!
И если я правильно понял ты теперь считаешь длину бара от оупена, а надо как в предыдущей версии от лоя до хая(предыдущя яверсия хорошо, тока на брала данные из предыдущей свечи, а надо из текущей!
И проверку на один открытый ордер в день тоже надо!

Почему то у меня пишет вот чего:
2007.11.02 22:19:42 TestGenerator: unmatched data error (volume limit 518 at 2007.06.29 20:00 exceeded)


Сообщение отредактировал Plastик - 2.11.2007, 19:20
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Plastик
сообщение 2.11.2007, 19:26
Сообщение #35





Группа: Активный участник
Сообщений: 15
Регистрация: 25.10.2007
Пользователь №: 1 527
Спасибо сказали: 0 раз(а)



А вот еще вариантец
2007.11.02 22:24:45 TestGenerator: unmatched data error (high value 1.9782 at 2007.06.08 06:15 and price 1.9783 mismatched
2007.11.02 22:24:45 TestGenerator: unmatched data error (volume limit 12 at 2007.06.05 20:30 exceeded)
2007.11.02 22:24:45 TestGenerator: unmatched data error, rest errors will not be logged

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 2.11.2007, 19:32
Сообщение #36





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Ты, похоже, сам запутался! Как же я могу считать текущий бар от LOW до HIGHT, если он у нас еще не закрылся! У нас на текущем баре есть цена открытия и один из экстремумов! - или ЛОУ или ХАЙ ! - больше пока ничего нет.
Вот я и вычисляю величину бара от цены открытия до экстремума!
В закачке - версия строго для иеновых пар . Дневные свечи. По всем тикам.
С ЯНВ. 2007г. GBPJPY, D
Качество моделирования 90.00%
Начальный депозит 10000.00
Чистая прибыль 356.55
Общая прибыль 4329.64
Общий убыток -3973.09
Прибыльность 1.09
Матожидание выигрыша 2.49
Абсолютная просадка 517.82
Максимальная просадка 825.09 (8.00%)
Относительная просадка 8.00% (825.09)
Всего сделок 143
Короткие позиции (% выигравших) 73 (69.86%)
Длинные позиции (% выигравших) 70 (68.57%)
Прибыльные сделки (% от всех) 99 (69.23%)
Убыточные сделки (% от всех) 44 (30.77%)
Самая большая
прибыльная сделка 51.54
убыточная сделка -96.59
Средняя
прибыльная сделка 43.73
убыточная сделка -90.30
Максимальное количество
непрерывных выигрышей (прибыль) 12 (516.73)
непрерывных проигрышей (убыток) 5 (-453.33)
Максимальная
непрерывная прибыль (число выигрышей) 516.73 (12)
непрерывный убыток (число проигрышей) -453.33 (5)
Средний
непрерывный выигрыш 3
непрерывный проигрыш 1
----------------------------------------------------------------------------
Надо оптимизировать параметры. И попробовать с тралом погонять.
Код
//+------------------------------------------------------------------+
//|Stochastic_Env.mq4.mq4
//| leonid553
//| http://www.tradersforum.net.ru/
//+------------------------------------------------------------------+
#property copyright "leonid553 & co"
#property link      "http://www.tradersforum.net.ru/"

//---- input parameters---------
extern int     MagicNum    =6784;

extern int     BarSize_long    =100;
extern int     TP_long         =50;
extern int     SL_long         =100;

extern int     BarSize_short    =100;
extern int     TP_short         =50;
extern int     SL_short         =100;
//------------------------------
extern bool UseTrailing = false;
extern int lMinProfit = 30;
extern int sMinProfit = 30;
extern int lTrailingStop = 30;
extern int sTrailingStop = 30;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;

extern double  Lot=0.1;
extern int     Slippage=3;
//-- Подключаемые модули --
#include <stdlib.mqh>
//-------------------
int ticket;
int         ExpertBars;
static bool ZeroBarOrd;
//*********************************************************************

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
ExpertBars = Bars;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }  

int _Order=isExpertOrder();


if (isNewBar) {
if (_Order!=0) ZeroBarOrd=true;  //есть ордер
else           ZeroBarOrd=false; //нет ордера
}
    if (UseTrailing) TrailPositions();
//*********************************************************************

double vol_long = (iHigh(NULL,1440,0)- iOpen(NULL,1440,0))*100;
double vol_short= (iOpen(NULL,1440,0)- iLow(NULL,1440,0))*100;

  Comment (vol_long);
  Comment (vol_short);
//===== Ищем возможность войти в рынок ==========================================

int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders==0)                 //если нет открытых ордеров
  {
if (!ZeroBarOrd) {      
//---------проверяем условие на покупку----------------------------
  if   (  
          //(vol_>0)  &&
          (vol_long>BarSize_long )  )
   {
  ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL_long *Point,
                                      Ask+TP_long *Point,NULL,MagicNum ,0,Green);
  if (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0); }      
   else ZeroBarOrd=true;
   }
//--------проверяем условие на продажу------------------------------
  if  (
          //(vol_<0)  &&
           (vol_short>BarSize_short))
   {      
  ticket=OrderSend(Symbol(),1,Lot,Bid,Slippage,Bid+SL_short*Point,
                                       Bid-TP_short *Point,NULL,MagicNum ,0,Blue);
if (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0); }            
  else ZeroBarOrd=true;
   }  
//------------------------------------------------------------------
}
   }
  return(0);
  }
  //****************************************************************
void TrailPositions()
{
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++) {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;  

    if (OrderType() == OP_BUY) {
      if (Bid-OrderOpenPrice() > lMinProfit*Point) {
        if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        }}}
    if (OrderType() == OP_SELL) {
      if (OrderOpenPrice()-Ask > sMinProfit*Point) {
        if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point ||
                                                             OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point,
                                                        OrderTakeProfit(), 0, Blue);
        }}}}}
//-------------------------------------------------------------------+
//=======================================================================================
//| Функция проверки наличия ордеров эксперта |==========================================
//| 0 - ордеров нет                           |==========================================
//| 1 - есть ордер Buy                        |==========================================
//| 2 - есть ордер Sell                       |==========================================
//=======================================================================================
int isExpertOrder() {

int _OrdersTotal=OrdersTotal();

//---------- При тестировании проводим упрощённую проверку ордеров.
if (IsTesting())                               {              
  if (_OrdersTotal==0) return (0);
  
  for (int i=0; i<_OrdersTotal; i++)               {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderType()==OP_BUY)  {return(1); break;  }    
      if (OrderType()==OP_SELL) {return(2); break; }
    }        
  }
}


Эскизы прикрепленных изображений


Прикрепленные файлы
Прикрепленный файл  Plastic_v04.mq4 ( 6.16 килобайт ) Кол-во скачиваний: 503
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 2.11.2007, 19:55
Сообщение #37





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Цитата(Plastик @ 2.11.2007, 19:26) *

А вот еще вариантец
2007.11.02 22:24:45 TestGenerator: unmatched data error (high value 1.9782 at 2007.06.08 06:15 and price 1.9783 mismatched
2007.11.02 22:24:45 TestGenerator: unmatched data error (volume limit 12 at 2007.06.05 20:30 exceeded)
2007.11.02 22:24:45 TestGenerator: unmatched data error, rest errors will not be logged

А это не советник виноват. А твоя невнимательность! tongue.gif
smile.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 2.11.2007, 20:20
Сообщение #38





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



У тебя, видимо, нет котировок с разных тф на истории. Нужно подкачать по всем тф. Советник-то по всем тикам работает. Попробуй поставить дату в тестере с 1 окт. 2007 по " сегодня" ...
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Plastик
сообщение 2.11.2007, 22:21
Сообщение #39





Группа: Активный участник
Сообщений: 15
Регистрация: 25.10.2007
Пользователь №: 1 527
Спасибо сказали: 0 раз(а)



Цитата(leonid553 @ 2.11.2007, 22:32) *

Ты, похоже, сам запутался! Как же я могу считать текущий бар от LOW до HIGHT, если он у нас еще не закрылся! У нас на текущем баре есть цена открытия и один из экстремумов! - или ЛОУ или ХАЙ ! - больше пока ничего нет.

Как это только открытие и один из экстремумов?? Я не согласен. Сначало есть открытие - потом например цена пошла вниз - до какого то момента у нас есть только опен и лоу(оно же равно клоуз и текущей цене). Потом цена остановилась и пошла вверх - в этот момент у нас есть опен, лоу и клоуз(текущая цена). Когда цена поднимется выше опен - сделает хай и откатит назад, то у нас будет и ЛОУ и ХАЙ и опен и слоуз(текущая цена). Вот нужна длина от хай до лоу
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Plastик
сообщение 2.11.2007, 22:55
Сообщение #40





Группа: Активный участник
Сообщений: 15
Регистрация: 25.10.2007
Пользователь №: 1 527
Спасибо сказали: 0 раз(а)



Цитата(leonid553 @ 2.11.2007, 23:20) *

У тебя, видимо, нет котировок с разных тф на истории. Нужно подкачать по всем тф. Советник-то по всем тикам работает. Попробуй поставить дату в тестере с 1 окт. 2007 по " сегодня" ...

парадокс заключается в том, что это гадство происходит если стоит галочка у визуализации. Без нее все работает.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

5 страниц V « < 2 3 4 5 >
Ответить в эту темуОткрыть новую тему

 



- Текстовая версия Сейчас: 7.5.2024, 10:57