Доработка ботов (советников, индикаторов) vol. 2

MrGreen86

Гуру форума
Мистер зелёный,что то не так....... он лупит ордера на каждой новой свече,или ещё как то,но их реально немеренно....)))) ща скрин добавлю

ну конечно, сигнал есть - открылась сделка, а вы как хотели? )))
сигнал на покупку в вашем советнике:
1) быстрая МА выше медленной МА
2) закрытие свечи выше быстрой МА

сигнал на продажу зеркально:
1) быстрая МА ниже медленной МА
2) закрытие свечи ниже быстрой МА

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

want a million

Местный житель
вот смотрите,где обвёл...не прерывный сигнал бай,а он шпарит ордера на каждой свече.....а надо,что б открыл по сигналу,если профитнул,то открыл новый,если пошёл в минус и сигнал сменился,а в настройках реверс фальсе,то он бай оставляет висеть,и ещё селл открывает,и так далее....
 

Вложения

  • GBPCHFvM15.png
    GBPCHFvM15.png
    44,2 КБ · Просмотры: 136

MrGreen86

Гуру форума
Всем добрый день.Можно ли сделать чтобы этот индикатор ставил только одну стрелку на продажу и покупку.

вы имеете ввиду чтобы не было нескольких стрелок подряд с 1 стороны? а было только чередование? сделал
Посмотреть вложение 3 MA Cross w_Alert v2 mod.mq4
SNAG_Program-0071.png
 

MrGreen86

Гуру форума
вот смотрите,где обвёл...не прерывный сигнал бай,а он шпарит ордера на каждой свече.....а надо,что б открыл по сигналу,если профитнул,то открыл новый,если пошёл в минус и сигнал сменился,а в настройках реверс фальсе,то он бай оставляет висеть,и ещё селл открывает,и так далее....

я вам для этого и добавил настройку many_orders
поставьте false и у него будет только 1 бай и 1 селл.
 

want a million

Местный житель
я вам для этого и добавил настройку many_orders
поставьте false и у него будет только 1 бай и 1 селл.

опять не так. сейчас сформулирую....всё оставить как в оригинале,только добавить,что бы происходило открытие нового ордера при смене сигнала,не смотря на то,что там уже есть в рынке....сможете?
 

want a million

Местный житель
вот смотрите,тут уже есть сигнал селл,но ордер он не открывает,потому что,был открыт до этого,пунктов на 150 ниже...... а надо что бы открывал ещё селл,при новом сигнале.... надеюсь у меня получилось объяснить....спасибо.
 

Вложения

  • GBPCHFvM15.png
    GBPCHFvM15.png
    31,2 КБ · Просмотры: 128

MrGreen86

Гуру форума
просьба доделать индикатор
при появлении окошка (алерта) добавить в текст уровень цены
когда произошел сигнал
или лучше выставлять на график ценовые отметки под цвет столбика внизу, как на рисунке
почту еще могли прикрутить


и в тестере почему-то не выходят окошки, в чем интересно дело...

добавил ценовые метки.
настройки:
AddPriceMark - отображение ценовых меток
PriceMarkSize - размер ценовых меток
Посмотреть вложение Sonic_6 PVA Volumes (White)_mod.mq4
 

MrGreen86

Гуру форума
опять не так. сейчас сформулирую....всё оставить как в оригинале,только добавить,что бы происходило открытие нового ордера при смене сигнала,не смотря на то,что там уже есть в рынке....сможете?

я все могу ;) тут другой нюанс. критерии сигнала таковы что на свече А есть сигнал SELL, на счете B сигнала нет никакого а на свече C снова сигнал SELL, вопрос в том нужен ли вам этот "новый" SELL или вы ждете чередования: бай селл бай селл бай ....

я вам сразу 2 версии запилил чтобы не терять времени,
edit 2 - откроет второй селл по примеру выше
edit 3 - откроет второй селл только после сигнала BUY (чередование)
Посмотреть вложение MAexpEA2_edit2.mq4
Посмотреть вложение MAexpEA2_edit3.mq4
 

want a million

Местный житель
я все могу ;) тут другой нюанс. критерии сигнала таковы что на свече А есть сигнал SELL, на счете B сигнала нет никакого а на свече C снова сигнал SELL, вопрос в том нужен ли вам этот "новый" SELL или вы ждете чередования: бай селл бай селл бай ....

я вам сразу 2 версии запилил чтобы не терять времени,
edit 2 - откроет второй селл по примеру выше
edit 3 - откроет второй селл только после сигнала BUY (чередование)
Посмотреть вложение 208383
Посмотреть вложение 208384

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

Bseven77

Прохожий
Помогите доработать советник

Ребята помогите пожалуйста доработать советник по риск менеджменту, чтобы он отключался в заданное время( затем включался на след день) и никак не влиял на открытые позиции и вновь открываемые.
Заранее благодарю!

extern double lossperc=10;
int prevVolume=0;
int dVolume=0;
bool is_new_bar=false;
double Daylim=0;
double Daycur=0;
double percent=0;
string tradeallowed;
double AvgLoss=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+


int OrdersClose() {

int res=0;

for (int i=0; i<OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY) { OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 30); res++; }
if (OrderType()==OP_SELL) { OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 30); res++; }
}

return (res);

}


double GetCumProf(string dat)
{
double TimeStart = StrToTime(dat+" 00:00");
double TimeEnd = StrToTime(dat+" 23:59");
double plus = 0;

for ( int i = 0; i<OrdersHistoryTotal(); i++ )
{
if ( OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType()==OP_SELL || OrderType()==OP_BUY) && (OrderCloseTime()>=TimeStart && OrderCloseTime()<=TimeEnd))
{
plus += OrderProfit() + OrderCommission() + OrderSwap();
}
}

for ( i = 0; i<OrdersTotal(); i++ )
{
if ( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && (OrderType()==OP_SELL || OrderType()==OP_BUY))
{
plus += OrderProfit() + OrderCommission() + OrderSwap();
}
}
return (plus);

}

double GetAvgLoss()
{




}

int SetPercent()
{
double tm = TimeCurrent();
int day = TimeDay(tm);
int month = TimeMonth(tm);
int year = TimeYear(tm);
double plus=0;

plus = GetCumProf(year+"."+month+"."+day);

Daycur = plus;
Daylim = NormalizeDouble(AccountBalance() * lossperc/100, 2);
double startbalance = AccountBalance() + plus;

percent = NormalizeDouble((plus / startbalance) *100, 2);


if (percent<=lossperc*(-1)) { tradeallowed = "Not Allowed!"; OrdersClose(); }
else tradeallowed = "Allowed";

return (0);
}


int init()
{
//---- indicators
//----

SetPercent();

return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----


if (Volume[0]!=prevVolume) {

dVolume=Volume[0]-prevVolume;

if (dVolume>0) is_new_bar=false;
if (dVolume<0) { is_new_bar=true; dVolume=Volume[0]; }

}
if (is_new_bar) {

}

SetPercent();
ScreenMsg();
//----
prevVolume = Volume[0];
return(0);
}
//+------------------------------------------------------------------+

void ScreenMsg() {
//+--------------------------------------------------------------------------------------------------------------+

Comment(""
+ "-------------------------------------------------------------"
+ "\n"
+ "Day Loss Limit: " + DoubleToString(Daylim, 2) + " ("+DoubleToStr(lossperc, 2)+"%)"
+ "\n"
+ "Day Cum Profit: " + DoubleToString(Daycur, 2) + " ("+DoubleToStr(percent, 2)+"%)"
+ "\n"
+ "Trade: " + tradeallowed
+ "\n"
+ "-------------------------------------------------------------");
 
Последнее редактирование модератором:

Bseven77

Прохожий
Ребята помогите пожалуйста доработать советник по риск менеджменту, чтобы он отключался в заданное время( затем включался на след день) и никак не влиял на открытые позиции и вновь открываемые.
Заранее благодарю!

extern double lossperc=10;
int prevVolume=0;
int dVolume=0;
bool is_new_bar=false;
double Daylim=0;
double Daycur=0;
double percent=0;
string tradeallowed;
double AvgLoss=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+


int OrdersClose() {

int res=0;

for (int i=0; i<OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY) { OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 30); res++; }
if (OrderType()==OP_SELL) { OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 30); res++; }
}

return (res);

}


double GetCumProf(string dat)
{
double TimeStart = StrToTime(dat+" 00:00");
double TimeEnd = StrToTime(dat+" 23:59");
double plus = 0;

for ( int i = 0; i<OrdersHistoryTotal(); i++ )
{
if ( OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType()==OP_SELL || OrderType()==OP_BUY) && (OrderCloseTime()>=TimeStart && OrderCloseTime()<=TimeEnd))
{
plus += OrderProfit() + OrderCommission() + OrderSwap();
}
}

for ( i = 0; i<OrdersTotal(); i++ )
{
if ( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && (OrderType()==OP_SELL || OrderType()==OP_BUY))
{
plus += OrderProfit() + OrderCommission() + OrderSwap();
}
}
return (plus);

}

double GetAvgLoss()
{




}

int SetPercent()
{
double tm = TimeCurrent();
int day = TimeDay(tm);
int month = TimeMonth(tm);
int year = TimeYear(tm);
double plus=0;

plus = GetCumProf(year+"."+month+"."+day);

Daycur = plus;
Daylim = NormalizeDouble(AccountBalance() * lossperc/100, 2);
double startbalance = AccountBalance() + plus;

percent = NormalizeDouble((plus / startbalance) *100, 2);


if (percent<=lossperc*(-1)) { tradeallowed = "Not Allowed!"; OrdersClose(); }
else tradeallowed = "Allowed";

return (0);
}


int init()
{
//---- indicators
//----

SetPercent();

return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----


if (Volume[0]!=prevVolume) {

dVolume=Volume[0]-prevVolume;

if (dVolume>0) is_new_bar=false;
if (dVolume<0) { is_new_bar=true; dVolume=Volume[0]; }

}
if (is_new_bar) {

}

SetPercent();
ScreenMsg();
//----
prevVolume = Volume[0];
return(0);
}
//+------------------------------------------------------------------+

void ScreenMsg() {
//+--------------------------------------------------------------------------------------------------------------+

Comment(""
+ "-------------------------------------------------------------"
+ "\n"
+ "Day Loss Limit: " + DoubleToString(Daylim, 2) + " ("+DoubleToStr(lossperc, 2)+"%)"
+ "\n"
+ "Day Cum Profit: " + DoubleToString(Daycur, 2) + " ("+DoubleToStr(percent, 2)+"%)"
+ "\n"
+ "Trade: " + tradeallowed
+ "\n"
+ "-------------------------------------------------------------");


Во вложенном файле сам советник
 

Вложения

  • DayLossBot.mq4
    4,5 КБ · Просмотры: 73

GenkaRak

Почетный гражданин
БОЛЬШАЯ просьба!!!

Доработайте пожалуйста индикатор, что бы показывал сумму профита по бай и селл.
Примерно, как на скрине.
В идеале, мне нужно только инфа: пары и сумма бай и селл.
Очень прошу! :please:
 
Последнее редактирование:

Капиталист

Активный участник
все несколько сложней. для нижней линии используются данные дня вроде как. а для верхней: если параметр Hours 3 или более - тайм фрейм 15, анализ ведется на 4*Hours свечах
если параметр Hours 2 или меньше - тайм фрейм 5, анализ ведется на 12*Hours свечах.

я все это дело ампутировал и вывел настройки тайм фрейма и количества анализируемых баров в настройки:
extern ENUM_TIMEFRAMES MyLowHigh_TimeFrame = PERIOD_M5;
extern int MyHighLow_Bars = 20;
Посмотреть вложение 208375
Огромное вам спасибо за работу только вот вопрос,а настройки анализируемых баров. Т.е эти настройки баров какого ТФ?
Спасибо!
 

zhserg

Местный знаток
Доработайте пожалуйста индикатор, что бы показывал сумму профита по бай и селл.
Примерно, как на скрине.
В идеале, мне нужно только инфа: пары и сумма бай и селл.
Очень прошу! :please:

Посмотри мой индикатор _http://www.mql5.com/ru/market/product/4568 , может устроит.
 

zhserg

Местный знаток

Вложения

  • Sonic_6 PVA Volumes (White) (1).mq4
    11,1 КБ · Просмотры: 62
Верх