Light Style© by Fisana

Перейти к содержимому


Инвестиционные фонды NordFx: профессиональное управление и прозрачность


NordFX

Фотография

Создание Советника


  • Пожалуйста, авторизуйтесь, чтобы ответить
200 ответов в этой теме

#46 Shu

Shu

    Option Trader

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 1 897 сообщений

Опубликовано 27 Декабрь 2008 - 06:23

Здравствуйте! Сегодня написал свой первый советник. Прогоняю его на тестере стратегий и вижу, что он открывает по несколько одинаковых сделок (по одной и той же цене) в один и тот же момент времени. Если я правильно понимаю, то происходит это из-за того, что код советника выполняется при получении каждого нового тика, которых на одном баре приходит множество (советник тестирую на пятиминутном графике). Подскажите пожалуйста как избежать этого эффекта. Видимо надо сделать как-то так, чтобы алгоритм выполнялся по одному разу на каждый бар? И как это реализовать технически?


Попробуйте использовать такую мою функцию: :wink:

//+------------------------------------------------------------------+
bool NewBar() {
   bool r;
   static datetime bar = 0;
   if (bar == 0) bar = TimeCurrent();
   if (bar == Time[0]) r = false;
   else { bar = Time[0]; r = true; }
return(r);
}
//+------------------------------------------------------------------+


#47 selenat

selenat

    прописался

  • Пользователи ST test (off)
  • PipPipPip
  • 56 сообщений

Опубликовано 27 Декабрь 2008 - 04:59

Здравствуйте! Сегодня написал свой первый советник. Прогоняю его на тестере стратегий и вижу, что он открывает по несколько одинаковых сделок (по одной и той же цене) в один и тот же момент времени. Если я правильно понимаю, то происходит это из-за того, что код советника выполняется при получении каждого нового тика, которых на одном баре приходит множество (советник тестирую на пятиминутном графике). Подскажите пожалуйста как избежать этого эффекта. Видимо надо сделать как-то так, чтобы алгоритм выполнялся по одному разу на каждый бар? И как это реализовать технически?


Попробуйте использовать такую мою функцию: :wink:

//+------------------------------------------------------------------+
bool NewBar() {
   bool r;
   static datetime bar = 0;
   if (bar == 0) bar = TimeCurrent();
   if (bar == Time[0]) r = false;
   else { bar = Time[0]; r = true; }
return(r);
}
//+------------------------------------------------------------------+


Спасибо большое! Буду пробовать. :smile:
Меня зовут Андрей

#48 djday

djday

    пробегал

  • Пользователи
  • Pip
  • 2 сообщений

Опубликовано 03 Январь 2009 - 06:53

Здравствуйте! Сегодня написал свой первый советник. Прогоняю его на тестере стратегий и вижу, что он открывает по несколько одинаковых сделок (по одной и той же цене) в один и тот же момент времени. Если я правильно понимаю, то происходит это из-за того, что код советника выполняется при получении каждого нового тика, которых на одном баре приходит множество (советник тестирую на пятиминутном графике). Подскажите пожалуйста как избежать этого эффекта. Видимо надо сделать как-то так, чтобы алгоритм выполнялся по одному разу на каждый бар? И как это реализовать технически?



Добрый день.
На одном из форумов помогли.


Да, на каждом тике выставлялся ордер.
Выставил такое условие - if(OrdersTotal() == 0) и перстали выставлятся беспрерывно ордера, только один.

Может и подойдёт такая конструкция.

#49 selenat

selenat

    прописался

  • Пользователи ST test (off)
  • PipPipPip
  • 56 сообщений

Опубликовано 04 Январь 2009 - 02:50

Здравствуйте! Сегодня написал свой первый советник. Прогоняю его на тестере стратегий и вижу, что он открывает по несколько одинаковых сделок (по одной и той же цене) в один и тот же момент времени. Если я правильно понимаю, то происходит это из-за того, что код советника выполняется при получении каждого нового тика, которых на одном баре приходит множество (советник тестирую на пятиминутном графике). Подскажите пожалуйста как избежать этого эффекта. Видимо надо сделать как-то так, чтобы алгоритм выполнялся по одному разу на каждый бар? И как это реализовать технически?



Добрый день.
На одном из форумов помогли.


Да, на каждом тике выставлялся ордер.
Выставил такое условие - if(OrdersTotal() == 0) и перстали выставлятся беспрерывно ордера, только один.

Может и подойдёт такая конструкция.


А если используешь его сразу на нескольких валютных парах? Впрочем, идея понятна, спасибо!
Меня зовут Андрей

#50 CuTTer1991

CuTTer1991

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 204 сообщений

Опубликовано 11 Февраль 2009 - 06:55

Доброго времени суток всем!

Обращаюсь за помощью к людям, умеющим писать советники.
Есть собственная ТС, есть техническое задание к ней, но я Очень далека от программирования.
Может кто-нибудь откликнется на мою просьбу?

С уважением.
"Богатство — это иной образ мыслей, а не размер банковского счета."

#51 idolzhenko

idolzhenko

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 216 сообщений

Опубликовано 12 Февраль 2009 - 05:23

Есть собственная ТС, есть техническое задание к ней, но я Очень далека от программирования.


"Чего хочет Женщина, того хочет Бог".

Мэм, можно попробовать, если от программы не требуется "кофе в постель". Единственное условие, ТС и советник становятся достоянием общественности этого форума.

#52 CuTTer1991

CuTTer1991

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 204 сообщений

Опубликовано 13 Февраль 2009 - 05:45

Доброго времени суток!

Благодарю за отклик!
Приятно, что мужчина протягивает руку помощи!
"Кофе в постель" мы оставим для другой программы -)) , а с Вашим условием я согласна.

Подробности напишу в личку.

С уважением.
"Богатство — это иной образ мыслей, а не размер банковского счета."

#53 паша111

паша111

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 111 сообщений

Опубликовано 20 Февраль 2009 - 08:32

Всем доброго дня. Кто может посоветовать или сделать или помочь сделать. советник.
Описание такое. Выставляется время (часы\минуты) там находится цена сейчас и от этой цены выставляются ордера с верху селллимиты с низу байлимиты. ( со стопами и профитами)
выставляются значения -----время (например 14:00) -----цена этого времени (например 1.3000 )----- от этой цены 100 п (или несколько лимитников 100п. 150п. 200п от цены в 14:00) в верху селлимит (с фиксированным стопом и профитом) с низу 100 п байлимит .
установка:
время
цена
сколько пунктов от цены
байлимиты и селлимиты с профитом и стопом


Буду очень благодарен за помощь так как не разбираюсь в программировании. а на сайте mql4 нету так бы скачал. Или ктото знает о готовом таком советнике . он ведь не сложный . В любом случае благодарю.

#54 dim3535dim

dim3535dim

    пробегал

  • Пользователи
  • Pip
  • 8 сообщений

Опубликовано 02 Март 2009 - 02:47

Доброго времени суток. У меня небольшая проблема, языком начал заниматься совсем недавно, поэтому опыта нету. А хотелось бы мне использовать один индикатор в советнике, посредством функции icustom. Но то что я пишу не открывает сделок либо открывает их в огромном количестве и только по buy. Отсюда вопрос, может я неправильно пишу параметры icustom или что то еще. В идеале надо чтобы советник реагировал на каждый сигнал (сигнал вверх покупка, вниз продажа). Облазил кучу сайтов в поисках подсказки, но безрезультатно. Помогите пожалуйста. Файлы индикатора и моих советников прилагаются

Вложенные файлы



#55 idolzhenko

idolzhenko

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 216 сообщений

Опубликовано 02 Март 2009 - 07:25

Посмотрел на индикатор PRM_v3, на основе которого Ваш советник написан. ИМХО не заморачивайтесь с ним, у него стрелки вверх и вниз на одном и том же баре стоят. Куда в этом случае будете открываться?

#56 ЛЮТЫЙ

ЛЮТЫЙ

    Ё

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 1 517 сообщений

Опубликовано 02 Март 2009 - 10:47

Есть советник который открывает и закрывает сделки по индикатору (не важно по какому), то есть индикатор красный значит селл, индикатор синий значит бай.

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

Вопрос: что нужно прописать или изменит в коде советника чтоб после включения терминала если индикатор допустим красный еще то советник не закрывает открытый селл ждет пока цвет индикатора не изменится и как только станет синим то открывает сделку на бай и закрывает селл.
то есть не тупо открывал сделки сразу после включения терминала, а после смены сигнала на сделку.

если где то эту проблему описывали просто скажите что " уже писали " я найду.

int start(){//----//if(CountBars<Bars) return(0);if (tTime != Time[0]){tTime = Time[0]; //Print("Время открытия бара ", Time[0]);} else return(0);int itTrand = iCustom(NULL,0,"trend",Range,FastMA,SlowMA,CountBars,filter,2,0);if (iTrand != itTrand){int total=OrdersTotal();for(int pos=0;pos<total;pos++){if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue;if (OrderType()==OP_SELL){RefreshRates();OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);Sleep(10000);}if (OrderType()==OP_BUY){RefreshRates();OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);Sleep(10000);}}if (itTrand > 0){OrderSend(Symbol(),OP_BUY,mLots,Ask,3,0,0,"",16384,0,Green);} else{OrderSend(Symbol(),OP_SELL,mLots,Bid,3,0,0,"",16384,0,Green);}iTrand = itTrand;}//----return(0);}//+------------------------------------------------------------------+

Если это решаемо и очень легко то не могил бы сюда еще прописать код для того чтоб открытая сделка переводилась в без убыток в +10 по прошествии 150 пунктов.
Я просто хочу быть достаточно богатым, чтобы не быть зацикленным на деньгах.

#57 dim3535dim

dim3535dim

    пробегал

  • Пользователи
  • Pip
  • 8 сообщений

Опубликовано 03 Март 2009 - 01:58

Посмотрел на индикатор PRM_v3, на основе которого Ваш советник написан. ИМХО не заморачивайтесь с ним, у него стрелки вверх и вниз на одном и том же баре стоят. Куда в этом случае будете открываться?


Там немного не так, если в реальном времени тестировать, то видно что сигнал подается в одну сторону, а уже потом в другую(как я понял в начале и в конце свечи). Но даже это не главное, черт с ним с индикатором, мне интересно почему не получается написать эксперт на основе него, вроде все делаю как в учебниках описано а эффекта ноль, подскажите пожалуста в чем ошибка.

Заранее спасибо

#58 idolzhenko

idolzhenko

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 216 сообщений

Опубликовано 03 Март 2009 - 07:40

Есть советник который открывает и закрывает сделки по индикатору (не важно по какому), то есть индикатор красный значит селл, индикатор синий значит бай.

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

Вопрос: что нужно прописать или изменит в коде советника чтоб после включения терминала если индикатор допустим красный еще то советник не закрывает открытый селл ждет пока цвет индикатора не изменится и как только станет синим то открывает сделку на бай и закрывает селл.
то есть не тупо открывал сделки сразу после включения терминала, а после смены сигнала на сделку.

если где то эту проблему описывали просто скажите что " уже писали " я найду.

Если это решаемо и очень легко то не могил бы сюда еще прописать код для того чтоб открытая сделка переводилась в без убыток в +10 по прошествии 150 пунктов.


А Вы не закрывайте ордера при запуске советника, а закрывайте противоположные ордера если поступил сигнал на открытие.
Выложил куски кода из своих советников (все они в теме про МТС)

if (InvestorTrend==LONG && main_ha_trend==LONG && ha_trend==LONG && vo_trend==TREND && adx_trend==LONG) // получили сигнал на покупку
	  {
		while (CloseAllOpenOrders(1)!=true) // Закрываем все продажм
		{
		  Print("Пока все не закроем - спать не пойдем!");
		}
		can_sell=true;		

		if (OrdersTotal()==0 && can_buy==true) // Если ничего не открыто и можем баить
		{
		  if (ExtTakeProfit!=0) tp_price=Ask+ExtTakeProfit*Point;
		  else tp_price=0;
		  // Стоп-лосс вычисляем только 1 раз, у доливки стоп равен первому открытому ордеру
		  if (ExtStopLoss!=0) sl_price=Bid-ExtStopLoss*Point;
		  else sl_price=0;
		  Print("sl = ", DoubleToStr(sl_price,4));
		  ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,ExtSlippage,sl_price,tp_price,"EA_HA_MA",Magic,0,CLR_NONE);
		  if (ticket<0)
		  {
			error=GetLastError();
			Print("Ошибка открытия ордера BUY #", error, " ", ErrorDescription(error)); 
		  } 
		  else can_buy=false; // Выставляем флаг совершения сделки, чтобы не открывать ордера на каждом новом баре
		}

код трала
if (ExtTrailing==true)
  {
	for (i=0; i<OrdersTotal(); i++) {
	  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
	  {
		if (OrderType()==OP_BUY)
		{
		  if (!ExtProfitTrailing || (Bid-OrderOpenPrice())>ExtTrailingStop*Point)
		  {
			if (OrderStopLoss()<Bid-(ExtTrailingStop+ExtTrailingStep-1)*Point)
			{
			  open_price=OrderOpenPrice();
			  tp_price=OrderTakeProfit();		
			  if (IsTradeAllowed())
			  {
				if (!OrderModify(OrderTicket(), open_price, Bid-ExtTrailingStop*Point, tp_price, 0, clModifyBuy))
				{
				  Print("Ошибка изменения ордера BUY #",GetLastError());
				}
			  }
			}
		  }
		}
		if (OrderType()==OP_SELL)
		{
		  if (!ExtProfitTrailing || OrderOpenPrice()-Ask>ExtTrailingStop*Point)
		  {
			if (OrderStopLoss()>Ask+(ExtTrailingStop+ExtTrailingStep-1)*Point || OrderStopLoss()==0)
			{
			  open_price=OrderOpenPrice();
			  tp_price=OrderTakeProfit();			  
			  if (IsTradeAllowed())
			  {
				if (!OrderModify(OrderTicket(), open_price, Ask+ExtTrailingStop*Point, tp_price, 0, clModifySell))
				{
				  Print("Ошибка изменения ордера SELL #",GetLastError());
				}
			  } 
			}
		  }
		}
	  }
	}
  }


#59 ЛЮТЫЙ

ЛЮТЫЙ

    Ё

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 1 517 сообщений

Опубликовано 03 Март 2009 - 08:58


Благодарю!
Попробую разобраться, дело в том что я еще не сильен в мускуле думал мне пальцем ткнут куда все это вставить в моем советнике)))))))
Ну да ладно разберёмся.
Я просто хочу быть достаточно богатым, чтобы не быть зацикленным на деньгах.

#60 idolzhenko

idolzhenko

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 216 сообщений

Опубликовано 03 Март 2009 - 09:42


Благодарю!
Попробую разобраться, дело в том что я еще не сильен в мускуле думал мне пальцем ткнут куда все это вставить в моем советнике)))))))
Ну да ладно разберёмся.


Кидайте Вашего советника на почту мой_ник_на _мастерфорекс@yahoo.com, я исправлю Вашего советника.




Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Рейтинг брокеров форекс: кто лидер, кто аутсайдер и почему?




Masterforex-V NordFX

Rambler's Top100

Принимаем Z-Payment