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

 
Jeaa:

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

Я учусь программированию и сделал простой советник, который определяет низкое значение в 3 последних бара и открывает ордер на покупку... но у меня проблема, ордер не ставится... Кто-нибудь может мне помочь? Программа получает низкую цену и показывает алерт, но не выставляет ордер на покупку...


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

//--------------------------------------------------------------------
// NewBar_jeaa_Rev 2.mq4
//--------------------------------------------------------------------
#property copyright "Jeaa"

extern int GV_CantidadBarras=3; // Cantidad de barras
extern int digits=5;
//--------------------------------------------------------------------
extern double Lots = 0.01;
extern double StopLoss = 100;
extern double TakeProfit = 100;
extern int Slippage = 3;


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

int start() // Специальная функция. start()
{
double Precio; // переменная, регистрирующая минимальную и максимальную цену.
//--------------------------------------------------------------------
Fun_NuevaBarra(); // Вызов функции
if (GV_Flag_NuevaBarra==false) // Si no hay nueva barra...
return; // ..return
//=========================================================================

//int IndMax =ArrayMaximum(High,GV_CantidadBarras,1);// Indice de la barra del precio maximo
int IndMin =ArrayMinimum(Low, GV_CantidadBarras,1);// Indice de la barra del precio minimo

Precio=Low[IndMin];

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,StopLoss,TakeProfit, "My orderrr",16384,0,Blue);

Alert(Symbol(),": Barras= ",GV_CantidadBarras, // Mostrar mensaje de precios max y min
", Min= ",DoubleToString(Precio,digits));

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
}
}

Какую ошибку вы получаете в экспертах или на вкладке журнала в терминале?
 
mladen:
Какую ошибку вы получаете в экспертах или на вкладке журнала в терминале?

Привет, Младен... Спасибо за ваш ответ...

2016.09.06 11:42:06.700 NewBar_jeaa_Rev 2 USDJPY,M1: Алерт: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: Алерт: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: торговые операции не разрешены настройками
2016.09.06 11:41:36.396 NewBar_jeaa_Rev 2 USDJPY,M1: инициализировано
2016.09.06 11:41:36.385 NewBar_jeaa_Rev 2 USDJPY,M1 входы: GV_CantidadBarras=3; digits=5; Lots=0.01; StopLoss=100.0; TakeProfit=100.0; Slippage=3;
2016.09.06 11:41:35.080 Expert NewBar_jeaa_Rev 2 USDJPY,M1: успешно загружен


2016.09.06 12:57:08.587 '502630': ордер buy 0.01 USDJPY открытие по рынку sl: 50.000 tp: 50.000 failed [Invalid S/L or T/P]
2016.09.06 12:57:08.268 '502630': ордер buy market 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:07.224 '502630': ордер buy 0.01 USDJPY открытие на рынке sl: 50.000 tp: 50.000 failed [Invalid S/L or T/P]
2016.09.06 12:56:06.921 '502630': ордер buy market 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:04.221 Автоматическая торговля включена

 
Jeaa:

Привет, Младен... Спасибо за ваш ответ...

2016.09.06 11:42:06.700 NewBar_jeaa_Rev 2 USDJPY,M1: Alert: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: Alert: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: торговые операции не разрешены настройками
2016.09.06.06 11:41:36.396 NewBar_jeaa_Rev 2 USDJPY,M1: инициализирован
2016.09.06 11:41:36.385 NewBar_jeaa_Rev 2 USDJPY,M1 inputs: GV_CantidadBarras=3; digits=5; Lots=0.01; StopLoss=100.0; TakeProfit=100.0; Slippage=3;
2016.09.06 11:41:35.080 Expert NewBar_jeaa_Rev 2 USDJPY,M1: загружен успешно


2016.09.06 12:57:08.587 '502630': order buy 0.01 USDJPY opening at market sl: 50.000 tp: 50.000 failed [Invalid S/L or T/P]
2016.09.06 12:57:08.268 '502630': order buy market 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:07.224 '502630': order buy market 0.01 USDJPY opening at market sl: 50.000 tp: 50.000 failed [Invalid S/L or T/P]
2016.09.06 12:56:06.921 '502630': order buy market 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:04.221 Автоматическая торговля включена.

Как вы можете видеть, ваши стоп-лосс и тейк-профит неверны.

Вы неправильно их рассчитываете: стоп лосс и тейк профит рассчитываются как цена открытия ордера +- стоп лосс и/или тейк профит (+ или - зависит от типа ордеров), но не как 50 (как в вашем случае), а как цена открытия ордера +- 50*_Point (для пунктов) или 50*_Point*MathPow(10,MathMod(_Digits,2)) для расстояния в пипсах от цены открытия ордера.

 
mladen:

Как вы можете видеть, ваши стоп-лосс и тейк-профит неверны.

Вы неправильно их рассчитываете: стоп-лосс и тейк-профит рассчитываются как цена открытия ордера +- стоп-лосс и/или тейк-профит (+ или - зависит от типа ордеров), но не как 50 (как в вашем случае), а как цена открытия ордера +- 50*_Point (для пунктов) или 50*_Point*MathPow(10,MathMod(_Digits,2)) для расстояния в пипсах от цены открытия ордера.

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


Спасибо за вашу помощь... Я изменил:


double SL=NormalizeDouble(Precio - StopLoss*Point,Digits);
double TP=NormalizeDouble(Precio + TakeProfit*Point,Digits);

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,SL,TP, "Jeaa",0,0,Blue);


И работает должным образом.


С наилучшими пожеланиями.


Хесус

 
Jeaa:

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


Спасибо за помощь... Я поменял:


double SL=NormalizeDouble(Precio - StopLoss*Point,Digits);
double TP=NormalizeDouble(Precio + TakeProfit*Point,Digits);

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,SL,TP, "Jeaa",0,0,Blue);


И работает должным образом.


С наилучшими пожеланиями.


Хесус

Хорошо. Счастливой торговли :)
 

Привет, ребята,

Не могли бы вы добавить таймфрейм в оповещение в прикрепленном файле, пожалуйста?

Большое спасибо :)

 

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

Прошу прощения за то, что размещаю этот запрос здесь, так как не знаю правильного места.

Возможно ли добавить опцию Current Symbol Only в прилагаемый индикатор.

Если бы Вы могли, это бы очень помогло :)

Будьте здоровы.

Sameer

Файлы:
 
DRADIS33:

Привет, ребята,

Не могли бы вы добавить таймфрейм в оповещение в прикрепленном файле, пожалуйста?

Большое спасибо :)

Вот версия, в которой это добавлено


 
sameermehta74:

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

Прошу прощения за то, что размещаю этот запрос здесь, так как не знаю правильного места.

Возможно ли добавить опцию Current Symbol Only в прилагаемый индикатор.

Если можно, то это очень помогло бы :)

Будьте здоровы.

Sameer

У вас есть очень простое решение. Добавьте эту строку :

      StringReplace(Symbols,"current",_Symbol);

перед строкой 64, а затем в списке символов введите "current" в любом месте строки (без ""), и он будет заменен на текущий символ. Или воспользуйтесь прикрепленным файлом :) (применяются те же правила для текущего символа: чтобы отображался только текущий символ, введите только "current" в списке символов)

Файлы:
 
mladen:

У вас есть очень простое решение. Добавьте эту строку :

перед строкой 64, а затем в списке символов введите "current" в любом месте строки (без ""), и он будет заменен на текущий символ. Или воспользуйтесь прикрепленным файлом :) (применяются те же правила для текущего символа: чтобы отображался только текущий символ, введите только "current" в списке символов)

Спасибо :) Очень признателен.