Мультитаймфреймовые индикаторы - страница 1132

 
Dann001:

Привет, кто-нибудь знает, есть ли MTF версия индикатора PVT (тренд цены и объема)... Я знаю, что есть Dynamic zone PVT, но он не MTF...

Спасибо за любую помощь....

Не смог найти такой, поэтому добавил mtf в эту версию.

 
mrtools:

Не смог найти ни одного, поэтому добавил mtf к этой версии

mrtools:

Не смог найти ни одного, поэтому добавил mtf к этой версии.

Спасибо...
 
Jeaa:

Уважаемый mladen,

Надеюсь, у вас все хорошо.

Я пытался сделать советника на основе индикатора ZZ... Я могу открыть ордер на покупку, когда индикатор ZZ получает значение; но ордер не закрывается...

Вы можете мне помочь?

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


int MagicN =1453;

extern int Barras=5; // Cantidad de barras
extern int y =5;
//--------------------------------------------------------------------
extern double Lots = 0.01;
extern double Slippage = 3;
extern double Period1 = 5;
extern string Dev_Step_1 = "0,5";
extern int Symbol_1_Kod =140;

//--------------------------------------------------------------------
bool GV_Flag_NuevaBarra=false; // Flag de una nueva barra
//======================================================================

int start() // Специальная функция start()
{
//--------------------------------------------------------------------
Fun_NuevaBarra(); // Вызов функции
if (GV_Flag_NuevaBarra==false) // Si no hay nueva barra...
return; // ..return
//=========================================================================
int IndMin =ArrayMinimum(Low,Barras,1);
int IndMax =ArrayMaximum(High,Barras,1);
double ZZ, CC;

double Buy=Low[IndMin];
double XX=High[IndMax];

ZZ=iCustom(Symbol(),0, "3_Level_ZZ_Semafor",Period1,Dev_Step_1,Symbol_1_Kod,0,y);
CC=iCustom(Symbol(),0, "3_Level_ZZ_Semafor",Period1,Dev_Step_1,Symbol_1_Kod,1,y);

if (Buy == ZZ)
{
Alert(Symbol(),": Barras= ",Barras,", ZZ= ",DoubleToString(ZZ,Digits),", Precio= ",DoubleToString(Buy,Digits) );

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0, "Jeaa",MagicN,0,Blue);

Print ("Orden de Compra enviada: xxxx");// falta colocar el OrderTicket()
}
//=========================================================================

if (XX == CC)

{
if(OrderMagicNumber()== MagicN)
{ //---- проверка типа заказа
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

Alert(Symbol(),": Barras= ",Barras,", CC= ",DoubleToString(CC,Digits),", Precio= ",DoubleToString(XX,Digits) );

Print ("=====ORDEN CERRADA=====");
}
}
}
//=============================================================================
return;
}
//=========================================================================

void Fun_NuevaBarra() // Описание функции, которая обнаруживает ...
{ // ... una nueva barra
static datetime NewTime=0; // переменная, которая запоминает время и время суток
GV_Flag_NuevaBarra=false; // Inicializa nueva barra a falso (no hay nueva barra)
if(NewTime!=Time[0]) // Si existe nueva barra el dato es distinto de cero...
{
NewTime=Time[0]; //... y en ese caso se registra el hora y fecha de la...
GV_Flag_NuevaBarra=true; //nueva barra y se activa el flag que señaliza la...
//existencia de una nueva barra

}
}
//--------------------------------------------------------------------

Насколько я понимаю, вы тестируете неверное условие.

Значения для буфера 1 и слишком 3_Level_ZZ_Semafor не могут быть одинаковыми (они отображаются в разных местах)

 
Уважаемый Младен

Я надеюсь добавить (MTF) на индикаторы.

Пожалуйста, уважаемый сэр

 
mladen:

Измените код на следующий:

спасибо, дорогой друг, младен.

Большое спасибо за вашу помощь.

 
mladen:

Измените код на следующий :

дорогой младен

Код не работает, у него есть ошибка. Я изменил "input" на "extern" для"MA_TF".

После этого он заработал, но проблема осталась.Я имею в виду, что он не сдвигает (переносит) индикатор в конец графика. положительный сдвиг не работает.

но отрицательный работает хорошо.

Еще раз спасибо.

 
rartec4:

дорогой Младен

код не работает.в нем есть ошибка.я изменил "input "на "extern" для"MA_TF".

После этого все заработало, но проблема осталась.Я имею в виду, что он не сдвигает (переносит) индикатор в конец графика. положительный сдвиг не работает.

но отрицательный работает хорошо.

Еще раз спасибо.

Все работает без проблем

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


Файлы:
_test.mq4  2 kb
 
mladen:

Работает без проблем

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


ДОРОГОЙ МЛАДЕН

ВЫ ПРАВЫ, ЭТО БЫЛА МОЯ ОШИБКА.

ЕЩЕ РАЗ БОЛЬШОЕ СПАСИБО, МОЙ ДРУГ, ЗА ВАШУ ПОМОЩЬ.

 
mladen:

Насколько я понимаю, вы проверяете неверное условие.

Значения для буфера 1 и слишком 3_Level_ZZ_Semafor не могут быть одинаковыми (они отображаются в разных местах)

Уважаемый mlanden...

Спасибо за ваши комментарии...

Я модифицировал советника для использования MagicNumber... но пользовательский индикатор заполняет всю память:

2016.09.18 00:33:10.627 Недостаточно памяти для 1039 баров для пользовательского индикатора 3_Level_ZZ_Semafor EURUSD,M5

Что я могу сделать? Спасибо заранее... Хесус...

//+------------------------------------------------------------------+
//|MA_jeaa_EA.mq4 |
//+------------------------------------------------------------------+
#property copyright "Jesus Acedo"

//--- входные параметры ---
input double Lotes=0.01;
input int MagicNumber=1453;
input int Barras=5;
input int y=5;
input double Period1= 5;
input string Dev_Step_1="0,5";
input int Symbol_1_Kod=140;
input int Slippage=3;

//+------------------------------------------------------------------+
//| Функция инициализации эксперта|
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Функция деинициализации эксперта|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| Функция экспертного тика|
//+------------------------------------------------------------------+
void OnTick()
{
//---
long TicketEnUso = Ticket();
if (TicketEnUso>0) // significa que hay una operación... debo controlar salida...
{
if (OrderSelect(TicketEnUso,SELECT_BY_TICKET, MODE_TRADES))
{
if (OrderType()==OP_BUY) // buscar una salida por debajo de un promedio
{
if (Open[y]==ZZ(Period1)) Cierre(TicketEnUso);
}
if (OrderType()==OP_SELL) // buscar una salida por encima de un promedio
{
if (Close[y]==CC(Period1)) Cierre(TicketEnUso);
}
}
}
if (TicketEnUso<1) // no hay operación debo revisar si hay trade posible
{
if (Close[y]==CC(Period1))
{
Abre(OP_BUY);
Alert(Symbol(),": Barras= ",Barras,", ZZ= ",DoubleToString(ZZ(Period1),Digits),", Precio= ",DoubleToString(Close[y],Digits));
Print ("===КОМПРА===");
}
if (Open[y]==ZZ(Period1))
{
Abre(OP_SELL);
Alert(Symbol(),": Barras= ",Barras,", CC= ",DoubleToString(CC(Period1),Digits),", Precio= ",DoubleToString(Open[y],Digits));
Print ("===ВЕНТА===");
}

}
}
//==============================================================================================
double ZZ (int Periodos)
{
return (iCustom(Symbol(),0, "3_Level_ZZ_Semafor",Periodos,Dev_Step_1,Symbol_1_Kod,1,y));
}

double CC (int Periodos)
{
return (iCustom(Symbol(),0, "3_Level_ZZ_Semafor",Periodos,Dev_Step_1,Symbol_1_Kod,0,y));
}


//==============================================================================================
long Ticket()
{
for (int o=0; o<OrdersTotal(); o++)
{
if (OrderSelect(o,SELECT_BY_POS,MODE_TRADES))
{
if (MagicNumber == OrderMagicNumber()) return(OrderTicket());
}
}
return(0);
}

void Abre(int Tipo)
{
if (AccountFreeMargin()<(1000*Lotes))// filtro operaciones que no podria correr por falta de margen disponible
{
Print ("No hay dinero disponible. Свободная маржа= ",AccountFreeMargin());
return;
}
// seleccionar precio por operación
double Precio=0;
if(Tipo==OP_BUY) Precio=Ask; else Precio=Bid;
ResetLastError();
if (OrderSend(NULL,Tipo,Lotes,Precio,Slippage,0,0,NULL,MagicNumber,0,clrNONE)<1) Print (GetLastError());// 10 es fracciones de pips...
}

void Cierre(long TicketNo)
{
double Precio=0;
if (OrderSelect(TicketNo,SELECT_BY_TICKET,MODE_TRADES))
{
if(OrderType()==OP_BUY) Precio=Bid; else Precio=Ask;//selecciono precio de salida segun tipo de operación
ResetLastError();//reseteo número de error
if(OrderClose(TicketNo,Lotes,Precio,Slippage,clrNONE)) Print(GetLastError());//si al cerrar manda error que lo imprima
}
}

//======================================================================

 
Привет mladen, возможно ли сделать этот индикатор без перерисовки и mtf????... спасибо....
Файлы:
Причина обращения: