Закрытая тема
28.12.2013, 11:45
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Большое спасибо за возню со мной, но последний вопрос прошу не проигнорировать. В вашей ветке в 20 уроке есть такое: "Урок 20 - количество попыток открыть(модифицировать,зак рыть) ордер "
Пояснение.
1)Объявляем переменную в которую при открытии ордера будет записан тикет.
2)Будем пробовать открыть ордер(2-ое в цыкле) либо пока ордер не откроется(ticket_op=1), либо пока не истечёт количество попыток открыть ордер(j_op = Open_MaxAttempts);
3)Советник дальше не будет работать, пока не освободится торговый поток.
4)ticket_op
Если ордер откроется, то в эту переменную запишем тикет ордера.

Как вставить приведенный там PHP код в мой советник я не знаю и не знаю, подойдет ли такой метод для достижения результата.
Поясните, если будет время и настроение.
Ну так советник надо.
28.12.2013, 11:50
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Друзья, ВСЕХ с Наступающими!!!

Просьба доработать сов:

- когда остались только отложки - скидываем их и цикл по-новой...
после
PHP код:
int start()
  { 
вставь строку
PHP код:
if(countall(OP_BUY,OP_SELL)==0)  DeletePending1(TimeCurrent()); 
28.12.2013, 11:58
Аватар для digaysasha
digaysasha digaysasha на форуме Активный участник
Регистрация: 01.02.2010 / Сообщений: 158
Поблагодарили 46 раз(а) / Репутация: 47
Добрый день кто сможет добавить в эту сеточку параметр закрытие по общему профиту и трал
28.12.2013, 12:16
Аватар для terminat
terminat terminat вне форума Заблокирован
Регистрация: 20.07.2012 / Сообщений: 58
Поблагодарили 20 раз(а) / Репутация: 21
Ну так советник надо.
Прошу прощения, протупил. Сов должен проверять, выставил ли ордер и если нет повторять попытку несколько раз.

Последний раз редактировалось terminat; 28.12.2013 в 12:20.
28.12.2013, 13:43
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Ха ха. Вот это прикол. Сидят пылесосы и ждут пока проапгреденные файлы будут выкладыватся. А тут я только кодом помагаю. У ха ха ха... Пылесос же может только сосать.
28.12.2013, 14:31
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Прошу прощения, протупил. Сов должен проверять, выставил ли ордер и если нет повторять попытку несколько раз.
Находим строку
PHP код:
OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC,0,clOpen); 
меняем на
PHP код:
ticket_op=OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC,0,clOpen); 


Перед строкой вставляем
PHP код:
int ticket_op=-1;
 for (
int j_op 0j_op MaxAttemptsj_op++)
 {
 while(
IsTradeContextBusy()) Sleep(pause_if_busy*1000);
 
RefreshRates(); 


после строки вставляем
PHP код:
 if(ticket_op>-1)break;
 } 

ну и с самого начала
PHP код:
extern int MaxAttempts 4;
extern double pause_if_busy 0.7
28.12.2013, 14:32
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Добрый день кто сможет добавить в эту сеточку параметр закрытие по общему профиту и трал
Могу или то или то.
28.12.2013, 14:40
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Ну для Вас не сложно, у Вас уже набит глаз...





28.12.2013, 14:40
Аватар для digaysasha
digaysasha digaysasha на форуме Активный участник
Регистрация: 01.02.2010 / Сообщений: 158
Поблагодарили 46 раз(а) / Репутация: 47
Могу или то или то.
по общему профиту
28.12.2013, 14:52
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
по общему профиту
Сначала вставляй
PHP код:
extern int CloseProfit 22;
extern int CloseLose 47
после
PHP код:
int start()
  { 
PHP код:
 double prof=Profit_f();
 if((
CloseProfit!=&& prof>=CloseProfit) || (CloseLose!=&& prof<=-CloseLose)) Close_all(); 
в самом конце

Скрытый текст

PHP код:
////////////////////////////////////////////////////////////////////////////////
void Close_all()
{
for(
int i=OrdersTotal()-1i>=0i--)
 {
 if(
OrderSelect(iSELECT_BY_POS))
 {
 if(
OrderMagicNumber()==MAGIC)
 {
 if(
OrderSymbol()==Symbol())
 {
 while(
IsTradeContextBusy()) Sleep(200);
 
RefreshRates();
 
 if(
OrderType()==OP_BUY OrderClose(OrderTicket(),OrderLots(),Bid,2,Yellow); 
 if(
OrderType()==OP_SELLOrderClose(OrderTicket(),OrderLots(),Ask,2,Yellow);
 if(
OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYLIMITOrderDelete(OrderTicket(),CLR_NONE);

 }
 }
 }
 }
 
}

/////////////////////////////////////////////////////////////////////////////////// 
double Profit_f()
{
double prof;
for(
int i=OrdersTotal()-1i>=0i--)
 {
 if(
OrderSelect(i,SELECT_BY_POS))
 {
 if(
OrderMagicNumber()==MAGIC)
 {
 if(
OrderSymbol()==Symbol())
 {
prof+=OrderProfit()+OrderSwap()+OrderCommission();
 }
 }
 }
 }
 
 return(
prof);

[свернуть]
29.12.2013, 01:12
Аватар для digaysasha
digaysasha digaysasha на форуме Активный участник
Регистрация: 01.02.2010 / Сообщений: 158
Поблагодарили 46 раз(а) / Репутация: 47
Сначала вставляй
PHP код:
extern int CloseProfit 22;
extern int CloseLose 47
после
PHP код:
int start()
  { 
PHP код:
 double prof=Profit_f();
 if((
CloseProfit!=&& prof>=CloseProfit) || (CloseLose!=&& prof<=-CloseLose)) Close_all(); 
в самом конце

Скрытый текст

PHP код:
////////////////////////////////////////////////////////////////////////////////
void Close_all()
{
for(
int i=OrdersTotal()-1i>=0i--)
 {
 if(
OrderSelect(iSELECT_BY_POS))
 {
 if(
OrderMagicNumber()==MAGIC)
 {
 if(
OrderSymbol()==Symbol())
 {
 while(
IsTradeContextBusy()) Sleep(200);
 
RefreshRates();
 
 if(
OrderType()==OP_BUY OrderClose(OrderTicket(),OrderLots(),Bid,2,Yellow); 
 if(
OrderType()==OP_SELLOrderClose(OrderTicket(),OrderLots(),Ask,2,Yellow);
 if(
OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYLIMITOrderDelete(OrderTicket(),CLR_NONE);

 }
 }
 }
 }
 
}

/////////////////////////////////////////////////////////////////////////////////// 
double Profit_f()
{
double prof;
for(
int i=OrdersTotal()-1i>=0i--)
 {
 if(
OrderSelect(i,SELECT_BY_POS))
 {
 if(
OrderMagicNumber()==MAGIC)
 {
 if(
OrderSymbol()==Symbol())
 {
prof+=OrderProfit()+OrderSwap()+OrderCommission();
 }
 }
 }
 }
 
 return(
prof);

[свернуть]
огромное спасибо
29.12.2013, 09:57
Аватар для Ingeneer
Ingeneer Ingeneer вне форума Интересующийся
Регистрация: 27.12.2013 / Сообщений: 16
Поблагодарили 2 раз(а) / Репутация: 3

По умолчанию Ilan1.7byNikolaus требуется доработка

Ха ха. Вот это прикол. Сидят пылесосы и ждут пока проапгреденные файлы будут выкладываться. А тут я только кодом помогаю. У ха ха ха... Пылесос же может только сосать.
в этот советник хочу внести условие:

1. если количество открытых ордеров на продажу > количества ордеров на покупку, тогда параметр DynamicPips = FALSE - для покупок, иначе DynamicPips = true - для покупок

2. если количество открытых ордеров на покупку > количества ордеров на продажу, тогда параметр DynamicPips = FALSE - для продаж, иначе DynamicPips = true - для продаж

Спасибо за помощь!
29.12.2013, 18:49
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
в этот советник хочу внести условие:
...
Ну вноси, я разрешаю.

Последний раз редактировалось eevviill; 29.12.2013 в 19:10.
29.12.2013, 19:57
Аватар для Ingeneer
Ingeneer Ingeneer вне форума Интересующийся
Регистрация: 27.12.2013 / Сообщений: 16
Поблагодарили 2 раз(а) / Репутация: 3
Спасибо огромное!

Но как всегда есть одно но. Николаус как то отключил функцию DynamicPips = FALSE все время работает как true. а в версии Illan1.6-Dynamic работает как надо.

вот и в Вашей версии DynamicPips = FALSE не работает.

СУТЬ В ТОМ что когда продажи идут в просадку, то покупки должны включаться с параметром DynamicPips = FALSE, ну и наоборот, тогда во время просадки противоположные позиции будут тащить в + намного быстрее


еще хотел добавить что все функции во входных параметрах все что ниже max trades лишние...

еще раз спасибо!

Последний раз редактировалось Ingeneer; 29.12.2013 в 20:07.
29.12.2013, 20:35
Аватар для Ingeneer
Ingeneer Ingeneer вне форума Интересующийся
Регистрация: 27.12.2013 / Сообщений: 16
Поблагодарили 2 раз(а) / Репутация: 3
в Illan1.6-Dynamic:
int start()
{
if (DynamicPips) {
double hival=High[iHighest(NULL,0,MODE_HIGH,Glubina,1)]; // calculate highest and lowest price from last bar to 24 bars ago
double loval=Low[iLowest(NULL,0,MODE_LOW,Glubina,1)]; // chart used for symbol and time period
PipStep=NormalizeDouble((hival-loval)/DEL/Point,0); // calculate pips for spread between orders
if (PipStep<DefaultPips/DEL) PipStep = NormalizeDouble(DefaultPips/DEL,0);
if (PipStep>DefaultPips*DEL) PipStep = NormalizeDouble(DefaultPips*DEL,0); /
/ if dynamic pips fail, assign pips extreme value
}// else PipStep = DefaultPips;
//double filtr_MA = iMA(NULL,60,60,0,0,0,0);


а у Николауса так:

if (DynamicPips)
{
double hival=High[iHighest(NULL,0,MODE_HIGH,Glubina,1)];
double loval=Low[iLowest(NULL,0,MODE_LOW,Glubina,1)];
PipStep=NormalizeDouble((hival-loval)/DEL/Point,0);
if (PipStep<(DefaultPips+mod)) PipStep = DefaultPips+mod;
}
else PipStep=DefaultPips+mod;


у Вас посмотрел также как у Николауса (если не ошибся)
29.12.2013, 20:40
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Спасибо огромное!

Но как всегда есть одно но. Николаус как то отключил функцию DynamicPips = FALSE все время работает как true. а в версии Illan1.6-Dynamic работает как надо.

вот и в Вашей версии DynamicPips = FALSE не работает.

СУТЬ В ТОМ что когда продажи идут в просадку, то покупки должны включаться с параметром DynamicPips = FALSE, ну и наоборот, тогда во время просадки противоположные позиции будут тащить в + намного быстрее


еще хотел добавить что все функции во входных параметрах все что ниже max trades лишние...

еще раз спасибо!
Всё там работает.
Там ещё доп условие есть
PipStep(вычесленый дин степ)<(DefaultPips+mod) то дэфолтный степ будет.

Попробуй удалить (2 экземпляра)
PHP код:
if (PipStep<(DefaultPips+mod)) PipStep DefaultPips+mod

P.S. А вообще странная формула вычесления дин степа(или так надо)
Вершина за количесвто баров Glubina-низина/DEL
PipStep<(DefaultPips+mod)
29.12.2013, 20:42
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
в Illan1.6-Dynamic:

Скрытый текст

int start()
{
if (DynamicPips) {
double hival=High[iHighest(NULL,0,MODE_HIGH,Glubina,1)]; // calculate highest and lowest price from last bar to 24 bars ago
double loval=Low[iLowest(NULL,0,MODE_LOW,Glubina,1)]; // chart used for symbol and time period
PipStep=NormalizeDouble((hival-loval)/DEL/Point,0); // calculate pips for spread between orders
if (PipStep<DefaultPips/DEL) PipStep = NormalizeDouble(DefaultPips/DEL,0);
if (PipStep>DefaultPips*DEL) PipStep = NormalizeDouble(DefaultPips*DEL,0); /
/ if dynamic pips fail, assign pips extreme value
}// else PipStep = DefaultPips;
//double filtr_MA = iMA(NULL,60,60,0,0,0,0);


а у Николауса так:

if (DynamicPips)
{
double hival=High[iHighest(NULL,0,MODE_HIGH,Glubina,1)];
double loval=Low[iLowest(NULL,0,MODE_LOW,Glubina,1)];
PipStep=NormalizeDouble((hival-loval)/DEL/Point,0);
if (PipStep<(DefaultPips+mod)) PipStep = DefaultPips+mod;
}
else PipStep=DefaultPips+mod;
[свернуть]



у Вас посмотрел также как у Николауса (если не ошибся)
Ну попробуй строки с правильного вставить.
29.12.2013, 20:57
Аватар для Ingeneer
Ingeneer Ingeneer вне форума Интересующийся
Регистрация: 27.12.2013 / Сообщений: 16
Поблагодарили 2 раз(а) / Репутация: 3
попробовал. результат тот же.
покупает и продает с одним шагом.
29.12.2013, 21:18
Аватар для Ingeneer
Ingeneer Ingeneer вне форума Интересующийся
Регистрация: 27.12.2013 / Сообщений: 16
Поблагодарили 2 раз(а) / Репутация: 3
может дело в том что вычисление DynamicPips надо перенести в начало до строчек
bool DynamicPips_s=true;
bool DynamicPips_b=true;

???
29.12.2013, 21:36
Аватар для Ingeneer
Ingeneer Ingeneer вне форума Интересующийся
Регистрация: 27.12.2013 / Сообщений: 16
Поблагодарили 2 раз(а) / Репутация: 3
Ну попробуй строки с правильного вставить.
вобщем и строки поменял и попробовал перенести в начало. ничего не получилось.

попробуй пожалуйста сделать расчет DynamicPips из этого илана
Закрытая тема

Метки
mql программирование, дописать индикатор, дописать эксперт, доработать советник, форекс программирование


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь профессионального программиста в написании МТС индикаторов советников. cmillion Поиск программиста, поиск заказов 96 05.09.2017 08:20
Написание экспертов, индикаторов. Улсуги VPS для ваших советников. RL.Maxim Temp, корзина, реклама 5 31.10.2009 21:55
Написание советников, индикаторов, скриптов для MT4 по Вашему ТЗ Impish Поиск программиста, поиск заказов 0 04.04.2009 21:30


Текущее время: 23:43. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO