Ответ
 
Опции темы
Старый 03.03.2016, 15:11   #4641 (permalink)
Новичок форума
 
Аватар для слава1122
 
Регистрация: 02.06.2015
Сообщений: 29
Репутация: 9
слава1122
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 7 сообщениях
Поинты: 4
Ребята всем привет, скажите пожалуйста что может быть с мт4, частенько вылетает звук алерта, а сигнала не от кокого индюка нет, убераю все индюки с графика все равно появляется звук, без окна алерта
слава1122 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 03.03.2016, 19:23   #4642 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1962
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 347
Поблагодарили 1,891 раз(а) в 1,068 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от слава1122 Посмотреть сообщение
Ребята всем привет, скажите пожалуйста что может быть с мт4, частенько вылетает звук алерта, а сигнала не от кокого индюка нет, убераю все индюки с графика все равно появляется звук, без окна алерта
Алерт может быть и не программный, можно в терминале вручную его назначить на событие (окно терминала, вкладка Алерты). Но и не факт что это алерт. В терминале много поводов для звука. В настройках терминала, на вкладке события, назначаются звуки.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.03.2016, 00:18   #4643 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 241
Репутация: 74
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 74 раз(а) в 60 сообщениях
Поинты: 282
Сообщение от слава1122 Посмотреть сообщение
Ребята всем привет, скажите пожалуйста что может быть с мт4, частенько вылетает звук алерта, а сигнала не от кокого индюка нет, убераю все индюки с графика все равно появляется звук, без окна алерта
Таки у Вас там, может, ещё и советники остались? Например на других графиках.
А в советнике может быть , что угодно запрограммировано.

Если Вы не любите звук, выключите его.
Или посмотрите параметры советника, обычно там
отписывают включение/выключение разных параметров, может там Вы и выключите звук.
_SERG_ вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.03.2016, 12:55   #4644 (permalink)
Местный житель
 
Аватар для mnem0n1k
 
Регистрация: 20.02.2010
Сообщений: 414
Репутация: 200
mnem0n1k - mnem0n1k - mnem0n1k -
Сказал(а) спасибо: 281
Поблагодарили 196 раз(а) в 132 сообщениях
Поинты: 255
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
mnem0n1k на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.03.2016, 14:14   #4645 (permalink)
Элитный участник
 
Аватар для RoboMaks
 
Регистрация: 19.08.2012
Адрес: Баку, Азербайджан
Сообщений: 651
Репутация: 1128
RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks
Сказал(а) спасибо: 322
Поблагодарили 1,118 раз(а) в 442 сообщениях
Поинты: 623
Отправить сообщение для RoboMaks с помощью Skype™
Сообщение от mnem0n1k Посмотреть сообщение
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
Кратко - в этом вложении. Полностью - на форуме MQL от начала создания 600+
Вложения:
Тип файла: zip Документ Microsoft Office Word.zip (62.1 Кб, 11 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирование советников, индикаторов и скриптов для МТ4
контакты для платных работ:
e-mail: maksshukurov@mail.ru
skype: maksshukurov1
RoboMaks вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mnem0n1k (04.03.2016)
Старый 04.03.2016, 14:21   #4646 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от mnem0n1k Посмотреть сообщение
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
А чем не нравится описание в документации?
Миниатюры:
Нажмите на изображение для увеличения
Название: 00.png
Просмотров: 14
Размер:	105.1 Кб
ID:	236482  
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mnem0n1k (04.03.2016)
Старый 04.03.2016, 16:28   #4647 (permalink)
Местный житель
 
Аватар для mnem0n1k
 
Регистрация: 20.02.2010
Сообщений: 414
Репутация: 200
mnem0n1k - mnem0n1k - mnem0n1k -
Сказал(а) спасибо: 281
Поблагодарили 196 раз(а) в 132 сообщениях
Поинты: 255
Сообщение от RoboMaks Посмотреть сообщение
Кратко - в этом вложении. Полностью - на форуме MQL от начала создания 600+
Спасибо. Примерно такое и хотел посмотреть: "было" - "стало".

Сообщение от AlexeyVik Посмотреть сообщение
А чем не нравится описание в документации?
Да, спасибо.. не думал что в справке будет такая информация.
mnem0n1k на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.03.2016, 16:48   #4648 (permalink)
Новичок форума
 
Аватар для derzerack
 
Регистрация: 30.11.2012
Сообщений: 12
Репутация: 7
derzerack
Сказал(а) спасибо: 34
Поблагодарили 1 раз в 1 сообщении
Поинты: 22
Уважаемые знатоки очень прошу разобраться с куском кода который прост как калашников но работает как ....

switch(STATUS)
{
case 0: // старт
if (CountBuy()==0 && CountSell()==0) STATUS=1;
break ;

case 1:
ticket=AntiRequoteOrderSend(Symbol(),OP_SELL,Lots, Bid,Slippage,0,0,comment,Magik,0,Red);
break ;
}
этот кусок почему то зацикливает и срабатывает в любом случае даже если счётчики ордеров милион.
На всякий случай выкладываю функции подсчёта ордеров, может ошибка кроется там, но я эти функции уже не год использую и раньше никогда проблем не возникало.
//---------------Начало Каунт бай-------------------------
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik)
{
if(OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//---------------Конец Каунт бай--------------------------

//------------------Начало коунт СЕЛЛ-----------------
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade --)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik)
{
if(OrderType()==OP_SELL)
count++;
}
}
return(count);
}
//------------------конец Коунт селл------------------
Заранее большущее спасибо за помощь. Аж стыдно просить вроде всё просто но ничего не работает.
derzerack вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 05.03.2016, 08:11   #4649 (permalink)
Местный житель
 
Аватар для Cemen4yk1
 
Регистрация: 18.09.2014
Сообщений: 222
Репутация: 245
Cemen4yk1 - Cemen4yk1 - Cemen4yk1 -
Сказал(а) спасибо: 35
Поблагодарили 244 раз(а) в 101 сообщениях
Поинты: 205
Сообщение от derzerack Посмотреть сообщение

Скрытый текст

Уважаемые знатоки очень прошу разобраться с куском кода который прост как калашников но работает как ....

switch(STATUS)
{
case 0: // старт
if (CountBuy()==0 && CountSell()==0) STATUS=1;
break ;

case 1:
ticket=AntiRequoteOrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,comment,Magik,0,Red);
break ;
}
этот кусок почему то зацикливает и срабатывает в любом случае даже если счётчики ордеров милион.
На всякий случай выкладываю функции подсчёта ордеров, может ошибка кроется там, но я эти функции уже не год использую и раньше никогда проблем не возникало.
//---------------Начало Каунт бай-------------------------
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik)
{
if(OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//---------------Конец Каунт бай--------------------------

//------------------Начало коунт СЕЛЛ-----------------
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade --)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik)
{
if(OrderType()==OP_SELL)
count++;
}
}
return(count);
}
//------------------конец Коунт селл------------------
Заранее большущее спасибо за помощь. Аж стыдно просить вроде всё просто но ничего не работает.
[свернуть]
наверно вы забываете обнулить STATUS
Cemen4yk1 на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
derzerack (05.03.2016)
Старый 06.03.2016, 12:33   #4650 (permalink)
Новичок форума
 
Аватар для derzerack
 
Регистрация: 30.11.2012
Сообщений: 12
Репутация: 7
derzerack
Сказал(а) спасибо: 34
Поблагодарили 1 раз в 1 сообщении
Поинты: 22
и ещё такой вопросик. не пойму что происходит когда при открытии лока хочу указать ТП для покупки и для продажи, возникает ошибка 130. вопрос наверно идитский но я так и не понял почему стопы неправильные

switch(STATUS)
{
case 0: // старт
if (CountBuy()==0 && CountSell()==0) STATUS=1;
break ;

case 1:
ticketSel=AntiRequoteOrderSend(Symbol(),OP_SELL,Lo ts,Bid,Slippage,0,TP,comment,Magik,0,Red);
ticket=AntiRequoteOrderSend(Symbol(),OP_BUY,Lots,A sk,Slippage,0,TP,comment,Magik,0,Blue);
STATUS=0;
break ;
Предыдущий урок по обнулению статуса выучил. И Как всегда спасибо за помощь.
derzerack вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.03.2016, 18:14   #4651 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 241
Репутация: 74
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 74 раз(а) в 60 сообщениях
Поинты: 282
Сообщение от mnem0n1k Посмотреть сообщение
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
По поводу "какие то ошибки", то есть какие то комментарии по этим ошибкам, пусть даже на английском.

Аще, конкретные вопросы, задают конкретные пацаны, и получают конкретные ответы.

Была бы конкретная копия, из учебника С. Ковалёва, был бы и конкретный комментарий. А так о чём говорить?

Да и книжку прочесть, не факт, что мозг шевельнётся, а вот глюк найти в своём коде или том, который как работающий определён, это уже первые шевеленя будут.
Не стесняйся, "скрипи" мозгом.
_SERG_ вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mnem0n1k (07.03.2016)
Старый 07.03.2016, 10:25   #4652 (permalink)
Интересующийся
 
Аватар для serega20024
 
Регистрация: 26.11.2015
Сообщений: 3
Репутация: 1
serega20024
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 10

По умолчанию Подскажите по советнику


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

На тесте все работает отлично, но в реале он неоднократно просто закрывает ордера и не открывает новый(и отложенный не ставит).

Проверяю на тесте проблемный день, все отрабатывается прекрасно.

Подскажите в чем может быть проблема или может можно как то проверку на открытие ордера ставить?


Скрытый текст

PHP код:
int start(){     oz_up=iCustom(Symbol(), 0"OZ_M5"31);   oz_dw=iCustom(Symbol(), 0"OZ_M5"21);   lag=iCustom(Symbol(), 0"LAG_M5"01);               if (Close[1]>oz_up && lag>0.5 && b==0)         {         b=2;         s=0;         if ( oz_up MAX*Point >= Close[1])         {         SendOrder(OP_BUYLot"UP");         OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);                 }        else        {        OrderSend(Symbol(),OP_BUYLIMIT,Lot,NormalizeDouble(oz_up OTS*Point ,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);         SendOrder(OP_BUYLot"UP");        }        }            else      {                    if (Close[1]<oz_dw && lag<0.5 && s==0)           {            s=2;            b=0;             if ( oz_dw MAX*Point <= Close[1])         {         SendOrder(OP_SELLLot"DW");         OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Red);                 }        else        {        OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(oz_dw OTS*Point ,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Blue);         SendOrder(OP_SELLLot"DW");        }            }                        }                               return(0);}//-------------------------------------------------------------------------bool SendOrder(int tip, double lot, string com){   for (int i=0; i<OrdersTotal(); i++)    {        if (OrderSelect(i, SELECT_BY_POS))      {           if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)         {            if (OrderComment()==com) return(0);         }      }   }   int error,nn;   while(true)   {      RefreshRates();                   //-------------------------------------------------------------------------           if (tip==OP_BUY)           {    for(int n=0;n<OrdersTotal();n++)  {    if (!OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) continue;    if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;    if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); n--; }    if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); n--; }  }       error = 1;            }                         //-------------------------------------------------------------------------           if (tip==OP_SELL)           {      for(int p=0;p<OrdersTotal();p++)  {    if (!OrderSelect(p, SELECT_BY_POS, MODE_TRADES)) continue;    if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;    if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); p--; }    if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); p--; }  }      error = 1;      }             //-------------------------------------------------------------------------                             if (error==-1)      {         Print("OrderSend Error ",GetLastError()," Lot ",lot);         Sleep(1000);      }      else return(1);      nn++;      if (nn>10) return(0);   }   return(1);}//------------------------------------------------------------------- 
[свернуть]

Последний раз редактировалось chocolate; 07.03.2016 в 12:05.
serega20024 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.03.2016, 11:04   #4653 (permalink)
Новичок форума
 
Аватар для seronn
 
Регистрация: 26.02.2014
Сообщений: 49
Репутация: 17
seronn
Сказал(а) спасибо: 16
Поблагодарили 16 раз(а) в 8 сообщениях
Поинты: 56
Народ, кто знает, подскажите как в советнике на MQL 4 присвоить переменной значение при появлении стрелочки и не менять значение до появления следующей стрелочки? В промежутках между появлениями стрелки буфер = 0 для обоих, при появлении один буфер 0 другой больше нуля.
seronn на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 07.03.2016, 11:58   #4654 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1962
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 347
Поблагодарили 1,891 раз(а) в 1,068 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от seronn Посмотреть сообщение
Народ, кто знает, подскажите как в советнике на MQL 4 присвоить переменной значение при появлении стрелочки и не менять значение до появления следующей стрелочки? В промежутках между появлениями стрелки буфер = 0 для обоих, при появлении один буфер 0 другой больше нуля.
static char Signal;
if(bufer1>0)Signal=1;
if(bufer2>0)Signal=-1;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
seronn (07.03.2016)
Старый 07.03.2016, 12:09   #4655 (permalink)
Интересующийся
 
Аватар для serega20024
 
Регистрация: 26.11.2015
Сообщений: 3
Репутация: 1
serega20024
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 10

Скрытый текст

int start()
{

oz_up=iCustom(Symbol(), 0, "OZ_M5", 3, 1);
oz_dw=iCustom(Symbol(), 0, "OZ_M5", 2, 1);
lag=iCustom(Symbol(), 0, "LAG_M5", 0, 1);



if (Close[1]>oz_up && lag>0.5 && b==0)
{
b=2;
s=0;
if ( oz_up + MAX*Point >= Close[1])
{
SendOrder(OP_BUY, Lot, "UP");
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);

}
else
{
OrderSend(Symbol(),OP_BUYLIMIT,Lot,NormalizeDouble(oz_up + OTS*Point ,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);
SendOrder(OP_BUY, Lot, "UP");
}
}

else
{

if (Close[1]<oz_dw && lag<0.5 && s==0)
{
s=2;
b=0;
if ( oz_dw - MAX*Point <= Close[1])
{
SendOrder(OP_SELL, Lot, "DW");
OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Red);

}
else
{
OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(oz_dw - OTS*Point ,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Blue);
SendOrder(OP_SELL, Lot, "DW");
}
}

}





return(0);
}
//-------------------------------------------------------------------------
bool SendOrder(int tip, double lot, string com)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if (OrderComment()==com) return(0);
}
}
}
int error,nn;
while(true)
{
RefreshRates();



//-------------------------------------------------------------------------
if (tip==OP_BUY)
{
for(int n=0;n<OrdersTotal();n++)
{
if (!OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); n--; }
if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); n--; }
}
error = 1;
}




//-------------------------------------------------------------------------
if (tip==OP_SELL)
{
for(int p=0;p<OrdersTotal();p++)
{
if (!OrderSelect(p, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); p--; }
if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); p--; }
}
error = 1;
}


//-------------------------------------------------------------------------



if (error==-1)
{
Print("OrderSend Error ",GetLastError()," Lot ",lot);
Sleep(1000);
}
else return(1);
nn++;
if (nn>10) return(0);
}
return(1);
}
//-------------------------------------------------------------------
[свернуть]
serega20024 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.03.2016, 22:18   #4656 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Сообщение от serega20024 Посмотреть сообщение

Скрытый текст

int start()
{

oz_up=iCustom(Symbol(), 0, "OZ_M5", 3, 1);
oz_dw=iCustom(Symbol(), 0, "OZ_M5", 2, 1);
lag=iCustom(Symbol(), 0, "LAG_M5", 0, 1);



if (Close[1]>oz_up && lag>0.5 && b==0)
{
b=2;
s=0;
if ( oz_up + MAX*Point >= Close[1])
{
SendOrder(OP_BUY, Lot, "UP");
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);

}
else
{
OrderSend(Symbol(),OP_BUYLIMIT,Lot,NormalizeDouble(oz_up + OTS*Point ,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);
SendOrder(OP_BUY, Lot, "UP");
}
}

else
{

if (Close[1]<oz_dw && lag<0.5 && s==0)
{
s=2;
b=0;
if ( oz_dw - MAX*Point <= Close[1])
{
SendOrder(OP_SELL, Lot, "DW");
OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Red);

}
else
{
OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(oz_dw - OTS*Point ,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Blue);
SendOrder(OP_SELL, Lot, "DW");
}
}

}





return(0);
}
//-------------------------------------------------------------------------
bool SendOrder(int tip, double lot, string com)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if (OrderComment()==com) return(0);
}
}
}
int error,nn;
while(true)
{
RefreshRates();



//-------------------------------------------------------------------------
if (tip==OP_BUY)
{
for(int n=0;n<OrdersTotal();n++)
{
if (!OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); n--; }
if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); n--; }
}
error = 1;
}




//-------------------------------------------------------------------------
if (tip==OP_SELL)
{
for(int p=0;p<OrdersTotal();p++)
{
if (!OrderSelect(p, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); p--; }
if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); p--; }
}
error = 1;
}


//-------------------------------------------------------------------------



if (error==-1)
{
Print("OrderSend Error ",GetLastError()," Lot ",lot);
Sleep(1000);
}
else return(1);
nn++;
if (nn>10) return(0);
}
return(1);
}
//-------------------------------------------------------------------
[свернуть]
Для начала делайте код читаемым в сообщении:

Скрытый текст

Код:
int start()
{
	oz_up=iCustom(Symbol(), 0, "OZ_M5", 3, 1);
	oz_dw=iCustom(Symbol(), 0, "OZ_M5", 2, 1);
	lag=iCustom(Symbol(), 0, "LAG_M5", 0, 1);
	
	if (Close[1]>oz_up && lag>0.5 && b==0) 
	{
		b=2;
		s=0;
		if (oz_up + MAX*Point >= Close[1])
		{
			SendOrder(OP_BUY, Lot, "UP");
			OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue);
		}
		else
		{
			OrderSend(Symbol(),OP_BUYLIMIT,Lot,NormalizeDouble(oz_up + OTS*Point ,Digits),slippage,0,Ask+Takeprofit*Point,0,Magic,0,Blue); 
			SendOrder(OP_BUY, Lot, "UP");
		}
	}
	else
	{		
		if (Close[1]<oz_dw && lag<0.5 && s==0)
		{
			s=2;
			b=0; 
			if (oz_dw - MAX*Point <= Close[1])
			{
				SendOrder(OP_SELL, Lot, "DW");
				OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Red);
			}
			else
			{
				OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(oz_dw - OTS*Point ,Digits),slippage,0,Bid-Takeprofit*Point,0,Magic,0,Blue); 
				SendOrder(OP_SELL, Lot, "DW");
			}
		}
	
	}
	
	return(0);
}
//-------------------------------------------------------------------------
bool SendOrder(int tip, double lot, string com)
{
	for (int i=0; i<OrdersTotal(); i++) 
	{ 
		if (OrderSelect(i, SELECT_BY_POS))
			if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
				if (OrderComment()==com) return(0);
	}
	int error,nn;
	while(true)
	{
		RefreshRates();
		//------------------------------------------------------------------------- 
		if (tip==OP_BUY) 
		{
		for(int n=0;n<OrdersTotal();n++)
		{
		if (!OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) continue;
		if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
		
		if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); n--; }
		if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); n--; }
		}
		error = 1; 
		}
		
		//------------------------------------------------------------------------- 
		if (tip==OP_SELL) 
		{
			for(int p=0;p<OrdersTotal();p++)
			{
				if (!OrderSelect(p, SELECT_BY_POS, MODE_TRADES)) continue;
				if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
				
				if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Yellow); p--; }
				if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Yellow); p--; }
			}
			error = 1;
		}
	
		//------------------------------------------------------------------------- 
		if (error==-1)
		{
			Print("OrderSend Error ",GetLastError()," Lot ",lot);
			Sleep(1000);
		}
		else return(1);
		nn++;
		if (nn>10) return(0);
	}
	return(1);
}
//-------------------------------------------------------------------
[свернуть]

Есть такая кнопка - #

В коде ставите вывод сообщений в журнал и смотрите где и что не так работает.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.03.2016, 07:47   #4657 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Всем доброго дня.
Ребят, помогите доделать функцию. Нужна индексация.

Сейчас, Функция используется только для одного значения,
и поэтому для каждого значения, приходится создавать дополнительную функцию.(типо: STORY1,STORY2,STORY3, и т.д.)

Можно ли добавить индексацию к параметрам.

Спасибо.
PHP код:
//| Описание : Возвращает  предыдущее значение.                                |
//+----------------------------------------------------------------------------+
//| Параметры: znachenie - подставляемое значение                              |
//+----------------------------------------------------------------------------+
double vernul=0;                                                             //|
//+----------------------------------------------------------------------------+
double STORY(double znachenie){
               
int  count =0;
     static 
double  PROSHLOE 0;
            
double  NASTOIASHEE znachenie;

                 if(
NASTOIASHEE != PROSHLOE )count++;  
                  if(
count >0)vernul PROSHLOE
                     
PROSHLOE NASTOIASHEE;      
   return(
vernul);
  }
//+----------------------------------------------------------------------------+ 
//+---------------------------------------------------+//
PHP код:
  // Сейчас так.
  
    
Comment("\n"
             "настоящее       значение   "
,(string)Buff_MA[1],"\n"                                        
             "прошлое         значение   "
,(string)STORY(Buff_MA[1]),"\n"                                  
             "позапрошлое     значение   "
,(string)STORY2(STORY(Buff_MA[1])) ,"\n"                          
             "позапозапрошлое значение   "
,(string)STORY3(STORY2(STORY(Buff_MA[1]))) ,"\n"  
            
);
   
//+---------------------------------------------------+//
   // Хотелось бы,  как то,  так.       (использовать одну функцию, а не несколько)
   
       
Comment("\n"
             "настоящее       значение   "
,(string)Buff_MA[1],"\n"                                        
             "прошлое         значение   "
,(string)STORY(1,Buff_MA[1]),"\n"                                  
             "позапрошлое     значение   "
,(string)STORY(2,Buff_MA[1]) ,"\n"                          
             "позапозапрошлое значение   "
,(string)STORY(3,Buff_MA[1]) ,"\n"  
            
); 

Последний раз редактировалось egorr007; 09.03.2016 в 07:54.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.03.2016, 10:09   #4658 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Ещё вопрос. Я всё, о том же. Проконсультируйте пожалуйста.
Сделал счётчик, вывел его в ретурн, возвращает все предыдущие counts как надо.

Теперь можно ли как то так сделать, если так делается?
Сделать двумерный массив, в одной ячейке индекс, в другой значение. И вывести всё это дело в ретурн.

вернуть = Mass[index][znachenie]; ? или как?
в общем по индексу, возвращать предыдущее значение.(znachenie) если оно есть.

Очень надо! Спасибо.

PHP код:
//| Описание : Возвращает  предыдущее значение.                                |
//+----------------------------------------------------------------------------+
//| Параметры: index     - индекс значения                                     |
//|            znachenie - подставляемое значение                              |
//+----------------------------------------------------------------------------+
int kount =0;
double vernul=0;                                                             //|
//+----------------------------------------------------------------------------+
double STORY(int index ,double znachenie){
            
int  counts   =0;
  static 
double  PROSHLOE 0;
         
double  NASTOIASHEE znachenie;
                if(
NASTOIASHEE != PROSHLOE )kount++; 
                 
                  if(
kount-index != counts )counts = (kount-index);

                     if(
counts >=0)  vernul counts
                    
//  if(counts >=0)  vernul = PROSHLOE; 

                         
PROSHLOE NASTOIASHEE;      
   return(
vernul);
  }
//+----------------------------------------------------------------------------+ 
(счётчик предполагается как индекс, т.к. при изменении значения , меняется и счётчик).

Последний раз редактировалось egorr007; 11.03.2016 в 10:37.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.03.2016, 10:27   #4659 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от egorr007 Посмотреть сообщение
Ещё вопрос. Я всё, о том же. Проконсультируйте пожалуйста.
Сделал счётчик, вывел его в ретурн, возвращает все предыдущие counts как надо.(счётчик предполагается как индекс).

Теперь можно ли как то так сделать, если так делается?
Сделать двумерный массив, в одной ячейке индекс, в другой значение. И вывести всё это в ретурн.

вернуть = Mass[index][znachenie];
в общем по индексу, возвращать предыдущее значение.(znachenie) если оно есть.

PHP код:
//| Описание : Возвращает  предыдущее значение.                                |//+----------------------------------------------------------------------------+//| Параметры: index     - индекс значения                                     |//|            znachenie - подставляемое значение                              |//+----------------------------------------------------------------------------+int kount =0;double vernul=0;                                                             //|//+----------------------------------------------------------------------------+double STORY(int index ,double znachenie){            int  counts   =0;  static double  PROSHLOE = 0;         double  NASTOIASHEE = znachenie;                if(NASTOIASHEE != PROSHLOE )kount++;                                    if(kount-index != counts )counts = (kount-index);                     if(counts >=0)  vernul = counts;                     //  if(counts >=0)  vernul = PROSHLOE;                       //   PROSHLOE = NASTOIASHEE;         return(vernul);  }//+----------------------------------------------------------------------------+ 
Можно в функцию передать заранее объявленный массив по ссылке и ничего не надо возвращать.
double STORY(double & Mass[])
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 11.03.2016, 13:24   #4660 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Сообщение от AlexeyVik Посмотреть сообщение
Можно в функцию передать заранее объявленный массив по ссылке и ничего не надо возвращать.
double STORY(double & Mass[])
А пример, будьте добры, если не затруднит.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 08:14. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO