Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 10 из 10«128910
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Вопросы от новичков (Здесь можно задать интересующий Вас вопрос)
Вопросы от новичков

expforexДата: Понедельник, 26.01.2009, 02:22 | Сообщение # 1
Главный Администартор
Группа: Администраторы
Сообщений: 9113
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Здесь можно задать интересующий Вас вопрос

Внимание: Здесь обсуждается только тематические вопросы. Все что связанно с модернизацией и написанием советников с чистого листа находиться в форуме Заказ советников



Программирование на заказ || Наши Разработки
 
СообщениеЗдесь можно задать интересующий Вас вопрос

Внимание: Здесь обсуждается только тематические вопросы. Все что связанно с модернизацией и написанием советников с чистого листа находиться в форуме Заказ советников


Автор - expforex
Дата добавления - 26.01.2009 в 02:22

Иван1946Дата: Четверг, 01.10.2015, 18:12 | Сообщение # 91
Трейдер - Майор
Группа: Пользователи
Сообщений: 86
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
хотя сделать не проблема в принципе. нужно подумать
Буду очень признателен!

 
Сообщение
Цитата expforex ()
хотя сделать не проблема в принципе. нужно подумать
Буду очень признателен!

Автор - Иван1946
Дата добавления - 01.10.2015 в 18:12

tchumachenkovladДата: Воскресенье, 27.03.2016, 12:35 | Сообщение # 92
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 3
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Санкт' - необъявленный идентификатор test3.mq4 и 84 13
ST=NormalizeDouble(Ask-StopLoss*Point,Digits); и на той же строке
возможная потеря данных из-за преобразования типов test3.mq4

подскажите как исправить


extern string TMA="Параметры";
extern int   TakeProfit       =100;
extern int   StopLoss         =50;
extern int    Megic           = 123;
extern double Lots            = 0.01;
extern int    Slippage        =5;
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;

double PriceHigh,PriceLow,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

if(Digits==3 || Digits==5)
{

TakeProfit*=10;
StopLoss*=10;
Slippage*=10;
}

return(INIT_SUCCEEDED);

}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

//---

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
PriceHigh=iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
PriceLow=iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

if(CountBuy()==0 && Ask<=PriceLow)

{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"tma",Megic,0,Blue);
if(ticket>0)
{
TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
ST=NormalizeDouble(Ask-StopLoss*Point,Digits);

if(OrderSelect(ticket,SELECT_BY_TICKET))

if( OrderModify(ticket,OrderOpenPrice(),ST,TP,0))
Print("Ошибка");
}

}

if(CountSell()==0 && Bid>=PriceHigh)

{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"tma",Megic,0,Red);
if(ticket>0)
{
ST=NormalizeDouble(Bid+StopLoss*Point,Digits);
TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);

if(OrderSelect(ticket,SELECT_BY_TICKET))

if( OrderModify(ticket,OrderOpenPrice(),ST,TP,0))
Print("Ошибка");
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trede=OrdersTotal()-1;trede>=0;trede--)
{
if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic && OrderType()==OP_SELL)

count++;

}
}
return(count);
}

int CountBuy()
{
int count=0;
for(int trede=OrdersTotal()-1;trede>=0;trede--)
{
if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic && OrderType()==OP_BUY)

count++;

}
}

return(count);
}
//+------------------------------------------------------------------+



Сообщение отредактировал tchumachenkovlad - Воскресенье, 27.03.2016, 13:01
 
СообщениеСанкт' - необъявленный идентификатор test3.mq4 и 84 13
ST=NormalizeDouble(Ask-StopLoss*Point,Digits); и на той же строке
возможная потеря данных из-за преобразования типов test3.mq4

подскажите как исправить


extern string TMA="Параметры";
extern int   TakeProfit       =100;
extern int   StopLoss         =50;
extern int    Megic           = 123;
extern double Lots            = 0.01;
extern int    Slippage        =5;
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;

double PriceHigh,PriceLow,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

if(Digits==3 || Digits==5)
{

TakeProfit*=10;
StopLoss*=10;
Slippage*=10;
}

return(INIT_SUCCEEDED);

}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

//---

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
PriceHigh=iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
PriceLow=iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

if(CountBuy()==0 && Ask<=PriceLow)

{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"tma",Megic,0,Blue);
if(ticket>0)
{
TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
ST=NormalizeDouble(Ask-StopLoss*Point,Digits);

if(OrderSelect(ticket,SELECT_BY_TICKET))

if( OrderModify(ticket,OrderOpenPrice(),ST,TP,0))
Print("Ошибка");
}

}

if(CountSell()==0 && Bid>=PriceHigh)

{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"tma",Megic,0,Red);
if(ticket>0)
{
ST=NormalizeDouble(Bid+StopLoss*Point,Digits);
TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);

if(OrderSelect(ticket,SELECT_BY_TICKET))

if( OrderModify(ticket,OrderOpenPrice(),ST,TP,0))
Print("Ошибка");
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trede=OrdersTotal()-1;trede>=0;trede--)
{
if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic && OrderType()==OP_SELL)

count++;

}
}
return(count);
}

int CountBuy()
{
int count=0;
for(int trede=OrdersTotal()-1;trede>=0;trede--)
{
if(OrderSelect(trede,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic && OrderType()==OP_BUY)

count++;

}
}

return(count);
}
//+------------------------------------------------------------------+

Автор - tchumachenkovlad
Дата добавления - 27.03.2016 в 12:35

semkabudkevichДата: Вторник, 18.10.2016, 21:56 | Сообщение # 93
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 5
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Вот подскажите. Бывает, что свеча закончилась, а цены на новой еще нет и брокер не открывает ордер пока не пройдет тик. Это может длиться несколько секунд.
У меня включен советник и мне нужно чтобы он открывал ордер не позднее чем через 5 секунд после начала минуты по серверу брокера, если в течении этих 5 секунд ордер не открыт, то нужно отменить функцию открытия ордера.
Вопрос: Как написать это в коде MQL?

написал так :
 if (m<TimeSeconds(TimeLocal()))
   {
   if(m>time);
   return;
   }

работает, но есть предупреждения:

possible use of uninitialized variable 'm'
empty controlled statement found



Сообщение отредактировал semkabudkevich - Среда, 19.10.2016, 13:19
 
СообщениеВот подскажите. Бывает, что свеча закончилась, а цены на новой еще нет и брокер не открывает ордер пока не пройдет тик. Это может длиться несколько секунд.
У меня включен советник и мне нужно чтобы он открывал ордер не позднее чем через 5 секунд после начала минуты по серверу брокера, если в течении этих 5 секунд ордер не открыт, то нужно отменить функцию открытия ордера.
Вопрос: Как написать это в коде MQL?

написал так :
 if (m<TimeSeconds(TimeLocal()))
   {
   if(m>time);
   return;
   }

работает, но есть предупреждения:

possible use of uninitialized variable 'm'
empty controlled statement found

Автор - semkabudkevich
Дата добавления - 18.10.2016 в 21:56

expforexДата: Четверг, 20.10.2016, 09:22 | Сообщение # 94
Главный Администартор
Группа: Администраторы
Сообщений: 9113
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Приветствую, 
если нужно посчитать 5 секунд с начала свечи то легче сделать так:

Код
if(TimeCurrent()-Time[0]<5)
{
// открываем сделку
}


в данном примере TimeCurrent возвращает время сервера, и оно будет возвращено только по тику, соответственно Time - это время открытия свечи, и если разница меньше 5 секунд то ордер откроется. 

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



Программирование на заказ || Наши Разработки
 
СообщениеПриветствую, 
если нужно посчитать 5 секунд с начала свечи то легче сделать так:

Код
if(TimeCurrent()-Time[0]<5)
{
// открываем сделку
}


в данном примере TimeCurrent возвращает время сервера, и оно будет возвращено только по тику, соответственно Time - это время открытия свечи, и если разница меньше 5 секунд то ордер откроется. 

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

Автор - expforex
Дата добавления - 20.10.2016 в 09:22

proffessor-orlovДата: Вторник, Сегодня, 02:28 | Сообщение # 95
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 1
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Приветствую!А можно ли где найти код стандартного боллинджера т.е. все расчеты в одном индикаторе. стандартный iBands не видно как считает. Популярный Bands.mq4 тоже не полностью описан в одном файле т.к. ссылается на внешний #include <MovingAverages.mqh>

 
СообщениеПриветствую!А можно ли где найти код стандартного боллинджера т.е. все расчеты в одном индикаторе. стандартный iBands не видно как считает. Популярный Bands.mq4 тоже не полностью описан в одном файле т.к. ссылается на внешний #include <MovingAverages.mqh>

Автор - proffessor-orlov
Дата добавления - Сегодня в 02:28
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Вопросы от новичков (Здесь можно задать интересующий Вас вопрос)
Страница 10 из 10«128910
Поиск:


WebMoney Яндекс цитирования.