Помогите изменить советник

 
BLACKJACK 21.11.2009 08:44

Приветствую всех читающих данную тему.

Возникла необходимость в доработке советника

e-CloseByLossOrProfit "

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

Возможно ли переориентировать советник,чтобы он закрывал все позиции при достижении заданного размера именно средств по счету (вторая колонка терминала),а также после чего закрывал и сам терминал, как "e-CloseByPercentProfit "

Помогите,кто в состоянии.

Сайт автора изложенных советников www.kimiv.ru

Прикрепленные файлы:
esCloseByPercentProfit.rar (2.91 KB) удалить
eqCloseByLossOrProfit.rar (2.59 KB) удалить
 
BLACKJACK писал(а) >>
BLACKJACK 21.11.2009 08:44

Приветствую всех читающих данную тему.

Возникла необходимость в доработке советника

"e-CloseByLossOrProfit "

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

Возможно ли переориентировать советник,чтобы он закрывал все позиции при достижении заданного размера именно средств по счету (вторая колонка терминала),а также после чего закрывал и сам терминал, как "e-CloseByPercentProfit "

Помогите,кто в состоянии.

Сайт автора изложенных советников www.kimiv.ru

Прикрепленные файлы:
esCloseByPercentProfit.rar (2.91 KB) удалить
eqCloseByLossOrProfit.rar (2.59 KB) удалить

Посмотри этот советник http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=73

Может подойдет

 
Vinin писал(а) >>

Посмотри этот советник http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=73

Может подойдет

Благодарю за участие.Советника посмотрел;идея с виртуальным тралом великолепна,но ее с наскока не впихнуть в мой случай.А если и впихнуть,то только как составляющую.

В указанном советнике точкой отсчета также является колонка прибыли, а мне необходим размер средств

 
BLACKJACK >>:
BLACKJACK 21.11.2009 08:44

Приветствую всех читающих данную тему.

Возникла необходимость в доработке советника


e-CloseByLossOrProfit "


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

Возможно ли переориентировать советник,чтобы он закрывал все позиции при достижении заданного размера именно средств по счету (вторая колонка терминала),а также после чего закрывал и сам терминал, как "e-CloseByPercentProfit "

Помогите,кто в состоянии.

Сайт автора изложенных советников www.kimiv.ru

Прикрепленные файлы:
esCloseByPercentProfit.rar (2.91 KB) удалить
eqCloseByLossOrProfit.rar (2.59 KB) удалить

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

имеется в виду разница AccountEquity()-AccountBalance()

//+------------------------------------------------------------------+
//| panelektrik@yandex.ru |
//| Starigin Konstantin |
//+------------------------------------------------------------------+

#property show_inputs

extern int maxCLOSE=+100;
extern int minCLOSE=-100;


int objekt1(string Trade)
{
ObjectCreate("max",OBJ_LABEL,0,0,0);
ObjectSetText("max","max = +"+Trade, 10,"Times New Roman",DodgerBlue);
ObjectSet("max", OBJPROP_CORNER, 1);
ObjectSet("max", OBJPROP_XDISTANCE, 20);
ObjectSet("max", OBJPROP_YDISTANCE, 10);
}
int objekt2(string Trade)
{
ObjectCreate("min",OBJ_LABEL,0,0,0);
ObjectSetText("min","min = "+Trade, 10,"Times New Roman",Tomato);
ObjectSet("min", OBJPROP_CORNER, 1);
ObjectSet("min", OBJPROP_XDISTANCE, 20);
ObjectSet("min", OBJPROP_YDISTANCE, 30);
}

int start()
{
objekt1(maxCLOSE);
objekt2(minCLOSE);
PlaySound("Wait.wav");
while(!IsStopped())
{
if((AccountEquity()-AccountBalance()>maxCLOSE)||(AccountEquity()-AccountBalance()<minCLOSE))
if(close()==0)
{
PlaySound("Wait.wav");
ObjectDelete("max");
ObjectDelete("min");
break;
}
Sleep(10000);
}
}
//+------------------------------------------------------------------+
int close()
{
for(int i=OrdersTotal(); i+1>=0; i--)
{
RefreshRates();
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderType()==OP_BUY))
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(Symbol(),MODE_SPREAD));
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderType()==OP_SELL))
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(Symbol(),MODE_SPREAD));
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket());
}
return(OrdersTotal());
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("max");
ObjectDelete("min");
}

Файлы:
 
forex-k писал(а) >>

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

имеется в виду разница AccountEquity()-AccountBalance()

//+------------------------------------------------------------------+
//| panelektrik@yandex.ru |
//| Starigin Konstantin |
//+------------------------------------------------------------------+

#property show_inputs

extern int maxCLOSE=+100;
extern int minCLOSE=-100;


int objekt1(string Trade)
{
ObjectCreate("max",OBJ_LABEL,0,0,0);
ObjectSetText("max","max = +"+Trade, 10,"Times New Roman",DodgerBlue);
ObjectSet("max", OBJPROP_CORNER, 1);
ObjectSet("max", OBJPROP_XDISTANCE, 20);
ObjectSet("max", OBJPROP_YDISTANCE, 10);
}
int objekt2(string Trade)
{
ObjectCreate("min",OBJ_LABEL,0,0,0);
ObjectSetText("min","min = "+Trade, 10,"Times New Roman",Tomato);
ObjectSet("min", OBJPROP_CORNER, 1);
ObjectSet("min", OBJPROP_XDISTANCE, 20);
ObjectSet("min", OBJPROP_YDISTANCE, 30);
}

int start()
{
objekt1(maxCLOSE);
objekt2(minCLOSE);
PlaySound("Wait.wav");
while(!IsStopped())
{
if((AccountEquity()-AccountBalance()>maxCLOSE)||(AccountEquity()-AccountBalance()<minCLOSE))
if(close()==0)
{
PlaySound("Wait.wav");
ObjectDelete("max");
ObjectDelete("min");
break;
}
Sleep(10000);
}
}
//+------------------------------------------------------------------+
int close()
{
for(int i=OrdersTotal(); i+1>=0; i--)
{
RefreshRates();
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderType()==OP_BUY))
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(Symbol(),MODE_SPREAD));
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderType()==OP_SELL))
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(Symbol(),MODE_SPREAD));
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket());
}
return(OrdersTotal());
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("max");
ObjectDelete("min");
}

Константин, благодарю заранее.

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

Возник вопрос по коду:в какой строке функция SLIPPAGE, и что означает строка кода Sleep?со значением(10000)

 
BLACKJACK >>:

Константин, благодарю заранее.

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

Прикрепленный первый скрипт одноразовый, после срабатывания завершает работу.

Прикрепляю еще такой же только многоразовый

Файлы:
 
forex-k писал(а) >>

Прикрепленный первый скрипт одноразовый, после срабатывания завершает работу.

Прикрепляю еще такой же только многоразовый

Константин

Возник вопрос по коду:в какой строке функция SLIPPAGE, и что означает строка кода Sleep?со значением(10000)

 
BLACKJACK >>:

Константин

Возник вопрос по коду:в какой строке функция SLIPPAGE, и что означает строка кода Sleep?со значением(10000)

SLIPPAGE равен спреду OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(Symbol(),MODE_SPREAD));

sleep нужен для того чтобы скрипт проверял данные 1 раз за 10000 миллисекунд(10секунд), без этого параметра терминал зависнет

 
forex-k писал(а) >>

SLIPPAGE равен спреду OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(Symbol(),MODE_SPREAD));

sleep нужен для того чтобы скрипт проверял данные 1 раз за 10000 миллисекунд, без этого параметра терминал зависнет

По второму вопросу все понятно,

По SLIPPAGE вопрос не ясен. Я может не верно обозначил суть.

Изначально имеем по коду скрипта:

___________________________
extern int maxCLOSE=+100;
extern int minCLOSE=-100;
___________________________
Вопрос: при каком значении сработает скрипт

+ 98?

+102?

+104?

И где в коде отражено,какое значение имеет slippage(Проскальзывание)?

 
BLACKJACK >>:

По второму вопросу все понятно,

По SLIPPAGE вопрос не ясен. Я может не верно обозначил суть.

Изначально имеем по коду скрипта:

___________________________
extern int maxCLOSE=+100;
extern int minCLOSE=-100;
___________________________
Вопрос: при каком значении сработает скрипт

+ 98?

+102?

+104?

И где в коде отражено,какое значение имеет slippage(Проскальзывание)?

сработает скрипт при +100 с максимальным отклонением +-спред

отражено в функции OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(Symbol(),MODE_SPREAD));

выделено красным это SLIPPAGE

 
forex-k писал(а) >>

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

имеется в виду разница AccountEquity()-AccountBalance()

//+------------------------------------------------------------------+
//| panelektrik@yandex.ru |
//| Starigin Konstantin |
//+------------------------------------------------------------------+

#property show_inputs

extern int maxCLOSE=+100;
extern int minCLOSE=-100;


int objekt1(string Trade)
{
ObjectCreate("max",OBJ_LABEL,0,0,0);
ObjectSetText("max","max = +"+Trade, 10,"Times New Roman",DodgerBlue);
ObjectSet("max", OBJPROP_CORNER, 1);
ObjectSet("max", OBJPROP_XDISTANCE, 20);
ObjectSet("max", OBJPROP_YDISTANCE, 10);
}
int objekt2(string Trade)
{
ObjectCreate("min",OBJ_LABEL,0,0,0);
ObjectSetText("min","min = "+Trade, 10,"Times New Roman",Tomato);
ObjectSet("min", OBJPROP_CORNER, 1);
ObjectSet("min", OBJPROP_XDISTANCE, 20);
ObjectSet("min", OBJPROP_YDISTANCE, 30);
}

int start()
{
objekt1(maxCLOSE);
objekt2(minCLOSE);
PlaySound("Wait.wav");
while(!IsStopped())
{
if((AccountEquity()-AccountBalance()>maxCLOSE)||(AccountEquity()-AccountBalance()<minCLOSE))
if(close()==0)
{
PlaySound("Wait.wav");
ObjectDelete("max");
ObjectDelete("min");
break;
}
Sleep(10000);
}
}
//+------------------------------------------------------------------+
int close()
{
for(int i=OrdersTotal(); i+1>=0; i--)
{
RefreshRates();
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderType()==OP_BUY))
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(Symbol(),MODE_SPREAD));
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderType()==OP_SELL))
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(Symbol(),MODE_SPREAD));
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket());
}
return(OrdersTotal());
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("max");
ObjectDelete("min");
}

Возможно ли вносить(задавать перед каждой работой скрипта) необходимые значения,но только в виде конкретных чисел,при достижении которых и "зашкаливании" скрипт и сработает разово,до следующего запуска(внесения нового значения)?

Причина обращения: