AlexeNP
Гуру форума
конечно.. один из хороших фильтров - это ограничение по времени торговли)Поздравляю всех присутствующих С Новым годом!
Скажите пожалуйста, возможно ли в готового советника добавить время торговли?
конечно.. один из хороших фильтров - это ограничение по времени торговли)Поздравляю всех присутствующих С Новым годом!
Скажите пожалуйста, возможно ли в готового советника добавить время торговли?
TradeScheduler v2.3 - хороший советник для установки времени работы других советниковПоздравляю всех присутствующих С Новым годом!
Скажите пожалуйста, возможно ли в готового советника добавить время торговли?
TradeScheduler v2.3 - хороший советник для установки времени работы других советников
Нет.Хорошо, спасибо.
А у Вас в MQ4 нет?
Ну и че, советник где?Поздравляю всех присутствующих С Новым годом!
Скажите пожалуйста, возможно ли в готового советника добавить время торговли?
А как? Рисовалку как фильтр???? Поделитесь методикой!!! Это внепланетная методика наверное.Уважаемые программисты, использую этот индикатор как фильтр.
а что такого-то? практически все индикаторы рисовалки либо будущего, либо прошлого... по другому никак они не реализуютсяА как? Рисовалку как фильтр???? Поделитесь методикой!!! Это внепланетная методика наверное.
так как? поясните рисовалку как фильтр нерисовалкам?а что такого-то? практически все индикаторы рисовалки либо будущего, либо прошлого... по другому никак они не реализуются
не бывает нерисовалок в принципе... ну вот возьмем любой индикатор - он все равно рисует... возьми к примеру скользящую среднюю и смести ее на пол-периода назад... а потом честно ответь рисует этот индикатор или неттак как? поясните рисовалку как фильтр нерисовалкам?
//+------------------------------------------------------------------+
//| 22.12.2019 ZZ+WPR.mq4 |
//| trader.ua. |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "trader.ua."
#property link "[email protected]"
#property version "1.00"
#property strict
extern int Magic = 1;
extern double Lots = 0.01;
extern int Slippage = 3;
extern int Delta = 50;
extern int StopLoss = 300;
extern int TakeProfit = 600;
double Price;
int ticket=0,err;
double zz;
double sl=0,tp=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
if(Digits == 3 || Digits == 5)
{
Slippage*=10;
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
double ZZPrice(int ne=0)
{
int i,k=iBars(NULL,0),ke=0;
for(i=1; i<k; i++)
{
zz=iCustom(NULL,0,"ZigZag",5,5,3,0,i);
if(zz!=0)
{
ke++;
if(ke>ne)
return(zz);
}
}
Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
double zz0 = ZZPrice(0);
double zz1 = ZZPrice(1);
double zz2 = ZZPrice(2);
double delta = MathAbs(zz0-zz1)/Point;
if(CountTrades()<1)
{
if(delta>Delta)
{
if(CountOrders(5)<1 && zz0<zz1)
{
RefreshRates();
if(StopLoss>0)
sl=NormalizeDouble(Price+StopLoss*Point,Digits);
else
sl=0;
if(TakeProfit>0)
tp=NormalizeDouble(Price-TakeProfit*Point,Digits);
else
tp=0;
Price = NormalizeDouble(iHigh(NULL,0,0),Digits);
ticket = OrderSend(Symbol(),OP_SELLLIMIT,Lots,Price,Slippage,sl,tp,"",Magic,0,Red);
Alert("Открылась сделка на Sell");
if(ticket<0)
{
Print("Позиция Sell не открылась, ошибка: ",GetLastError());
return;
}
}
if(CountOrders(4)<1 && zz0>zz1)
{
RefreshRates();
if(StopLoss>0)
sl=NormalizeDouble(Price-StopLoss*Point,Digits);
else
sl=0;
if(TakeProfit>0)
tp=NormalizeDouble(Price+TakeProfit*Point,Digits);
else
tp=0;
Price = NormalizeDouble(iLow(NULL,0,0),Digits);
ticket = OrderSend(Symbol(),OP_BUYLIMIT,Lots,Price,Slippage,sl,tp,"",Magic,0,Blue);
Alert("Открылась сделка на Buy");
if(ticket<0)
{
Print("Позиция Buy не открылась, ошибка: ",GetLastError());
return;
}
}
}
}
return;
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
{
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==type || (OrderType()>=0 && type==-1))
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ShowERROR()
{
err=GetLastError();
switch(err)
{
case 1:
return;
case 2:
Alert("Нет связи с торговым сервером ",Symbol());
return;
case 3:
Alert("Error неправильные параметры ",Symbol());
return;
case 130:
Alert("Error близкие стопы Ticket ",Symbol());
return;
case 134:
Alert("Недостаточно денег ",Symbol());
return;
case 146:
Alert("Error Подсистема торговли занята ",Symbol());
return;
case 129:
Alert("Error Неправильная цена ",Symbol());
return;
case 131:
Alert("Error Неправильный объем ",Symbol());
return;
case 4200:
Alert("Error Объект уже существует ",Symbol());
return;
default:
Alert("Error ",ticket," ",Symbol());
return;
}
}
//--------------------------------------------------------------------
//+------------------------------------------------------------------+
Код вставляйте пожалуйста файлом.Добрый вечер. Уважаемые программисты, помогите исправить ошибку в советнике. Нужно, чтобы выставлялись лимитные (отложенные) ордера , ставятся сразу рыночные. То есть при сигнале индикатора ставится Limit, а сделка по этому ордеру открывается только при пересечении цены выставленного лимитника.
У Вас, как только выполнилось условие, идет определение ценовых значений для SL и TP, относительно значения в переменной Price, вопрос: а какое там реальное значение? На следующем шаге, Вы присваиваете новое значение для этой же переменной, как текущие значение цены текущего бара по High или Low, которое и будет ценовым значением для установки позиции. Да, новый пик Zig-Zagа на n-баре может быть как в процессе построения текущей свечи, так и в момент открытия нового бара. Если это отложка, то должен быть отступ от цены, отложка, то, устанавливается и тут же срабатывает. Но, это как повезет. И еще одно: устанавливаете лимитки, а считаете стоповые позиции.Добрый вечер. Уважаемые программисты, помогите исправить ошибку в советнике. Нужно, чтобы выставлялись лимитные (отложенные) ордера , ставятся сразу рыночные. То есть при сигнале индикатора ставится Limit, а сделка по этому ордеру открывается только при пересечении цены выставленного лимитника.
Код://+------------------------------------------------------------------+ //| 22.12.2019 ZZ+WPR.mq4 | //| trader.ua. | //| [email protected] | //+------------------------------------------------------------------+ #property copyright "trader.ua." #property link "[email protected]" #property version "1.00" #property strict extern int Magic = 1; extern double Lots = 0.01; extern int Slippage = 3; extern int Delta = 50; extern int StopLoss = 300; extern int TakeProfit = 600; double Price; int ticket=0,err; double zz; double sl=0,tp=0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(Digits == 3 || Digits == 5) { Slippage*=10; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ double ZZPrice(int ne=0) { int i,k=iBars(NULL,0),ke=0; for(i=1; i<k; i++) { zz=iCustom(NULL,0,"ZigZag",5,5,3,0,i); if(zz!=0) { ke++; if(ke>ne) return(zz); } } Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { double zz0 = ZZPrice(0); double zz1 = ZZPrice(1); double zz2 = ZZPrice(2); double delta = MathAbs(zz0-zz1)/Point; if(CountTrades()<1) { if(delta>Delta) { if(CountOrders(5)<1 && zz0<zz1) { RefreshRates(); if(StopLoss>0) sl=NormalizeDouble(Price+StopLoss*Point,Digits); else sl=0; if(TakeProfit>0) tp=NormalizeDouble(Price-TakeProfit*Point,Digits); else tp=0; Price = NormalizeDouble(iHigh(NULL,0,0),Digits); ticket = OrderSend(Symbol(),OP_SELLLIMIT,Lots,Price,Slippage,sl,tp,"",Magic,0,Red); Alert("Открылась сделка на Sell"); if(ticket<0) { Print("Позиция Sell не открылась, ошибка: ",GetLastError()); return; } } if(CountOrders(4)<1 && zz0>zz1) { RefreshRates(); if(StopLoss>0) sl=NormalizeDouble(Price-StopLoss*Point,Digits); else sl=0; if(TakeProfit>0) tp=NormalizeDouble(Price+TakeProfit*Point,Digits); else tp=0; Price = NormalizeDouble(iLow(NULL,0,0),Digits); ticket = OrderSend(Symbol(),OP_BUYLIMIT,Lots,Price,Slippage,sl,tp,"",Magic,0,Blue); Alert("Открылась сделка на Buy"); if(ticket<0) { Print("Позиция Buy не открылась, ошибка: ",GetLastError()); return; } } } } return; } //+------------------------------------------------------------------+ int CountTrades() { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()<2) count++; } } } return(count); } //+------------------------------------------------------------------+ //| Подсчет ордеров по типу | //+------------------------------------------------------------------+ int CountOrders(int type=-1) { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==type || (OrderType()>=0 && type==-1)) count++; } } } return(count); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ShowERROR() { err=GetLastError(); switch(err) { case 1: return; case 2: Alert("Нет связи с торговым сервером ",Symbol()); return; case 3: Alert("Error неправильные параметры ",Symbol()); return; case 130: Alert("Error близкие стопы Ticket ",Symbol()); return; case 134: Alert("Недостаточно денег ",Symbol()); return; case 146: Alert("Error Подсистема торговли занята ",Symbol()); return; case 129: Alert("Error Неправильная цена ",Symbol()); return; case 131: Alert("Error Неправильный объем ",Symbol()); return; case 4200: Alert("Error Объект уже существует ",Symbol()); return; default: Alert("Error ",ticket," ",Symbol()); return; } } //-------------------------------------------------------------------- //+------------------------------------------------------------------+
Вы не много заблуждаетесь. Включите визуализацию объема вашего брокера на своей платформе. Вы хоть на голове стойте а значения на его истории не изменятся.не бывает нерисовалок в принципе... ну вот возьмем любой индикатор - он все равно рисует... возьми к примеру скользящую среднюю и смести ее на пол-периода назад... а потом честно ответь рисует этот индикатор или нет
Подскажите, чем он от WPR отличается? В принципе почти одно и тожеУважаемые программисты возможно ли этому индикатору сделать запрет на рисование (перерасчет уже нарисованных значений)?
К примеру: наложите на wpr индикатор cci или rsi предполагаю тоже сходство визуальное найти можно )Подскажите, чем он от WPR отличается? В принципе почти одно и тоже
У меня работает.Предположу, что если на чарте на цене (паре в моменте) нет условий для канала-он не строиться.Доброе утро или вечер! Не подскажите, почему обычный NB-channel перестал отображаться на 5-минутке? Везде есть, а там как и не было... Пробовал разные версии и ничего.
в каком виде? в общем или в отдельном инфоблоке так как это сделано сейчас по парам?Здравствуйте!
добавьте пожалуйста в индикатор учет по магику.
спасибо.