Ответить
03.03.2016, 15:11
Аватар для слава1122
слава1122 слава1122 на форуме Новичок форума
Регистрация: 02.06.2015 / Сообщений: 34
Поблагодарили 10 раз(а) / Репутация: 11
Ребята всем привет, скажите пожалуйста что может быть с мт4, частенько вылетает звук алерта, а сигнала не от кокого индюка нет, убераю все индюки с графика все равно появляется звук, без окна алерта
03.03.2016, 19:23
Регистрация: 13.03.2009 / Сообщений: 2,361
Поблагодарили 1,966 раз(а) / Репутация: 2043
Сообщение от: слава1122
Ребята всем привет, скажите пожалуйста что может быть с мт4, частенько вылетает звук алерта, а сигнала не от кокого индюка нет, убераю все индюки с графика все равно появляется звук, без окна алерта
Алерт может быть и не программный, можно в терминале вручную его назначить на событие (окно терминала, вкладка Алерты). Но и не факт что это алерт. В терминале много поводов для звука. В настройках терминала, на вкладке события, назначаются звуки.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
04.03.2016, 00:18
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
Сообщение от: слава1122
Ребята всем привет, скажите пожалуйста что может быть с мт4, частенько вылетает звук алерта, а сигнала не от кокого индюка нет, убераю все индюки с графика все равно появляется звук, без окна алерта
Таки у Вас там, может, ещё и советники остались? Например на других графиках.
А в советнике может быть , что угодно запрограммировано.

Если Вы не любите звук, выключите его.
Или посмотрите параметры советника, обычно там
отписывают включение/выключение разных параметров, может там Вы и выключите звук.
04.03.2016, 12:55
Аватар для mnem0n1k
mnem0n1k mnem0n1k вне форума Местный житель
Регистрация: 20.02.2010 / Сообщений: 460
Поблагодарили 217 раз(а) / Репутация: 221
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
04.03.2016, 14:14
Аватар для RoboMaks
RoboMaks RoboMaks вне форума Элитный участник
Регистрация: 19.08.2012 / Адрес: Баку, Азербайджан / Сообщений: 651
Поблагодарили 1,121 раз(а) / Репутация: 1131
  • Отправить сообщение для RoboMaks с помощью Skype™
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
Кратко - в этом вложении. Полностью - на форуме MQL от начала создания 600+
04.03.2016, 14:21
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
А чем не нравится описание в документации?
04.03.2016, 16:28
Аватар для mnem0n1k
mnem0n1k mnem0n1k вне форума Местный житель
Регистрация: 20.02.2010 / Сообщений: 460
Поблагодарили 217 раз(а) / Репутация: 221
Кратко - в этом вложении. Полностью - на форуме MQL от начала создания 600+
Спасибо. Примерно такое и хотел посмотреть: "было" - "стало".

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

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);
}
//------------------конец Коунт селл------------------
Заранее большущее спасибо за помощь. Аж стыдно просить вроде всё просто но ничего не работает.
05.03.2016, 08:11
Аватар для Cemen4yk1
Cemen4yk1 Cemen4yk1 на форуме Местный житель
Регистрация: 18.09.2014 / Сообщений: 231
Поблагодарили 251 раз(а) / Репутация: 252

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

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

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
06.03.2016, 12:33
Аватар для derzerack
derzerack derzerack вне форума Новичок форума
Регистрация: 30.11.2012 / Сообщений: 12
Поблагодарили 1 раз в 1 сообщении / Репутация: 7
и ещё такой вопросик. не пойму что происходит когда при открытии лока хочу указать ТП для покупки и для продажи, возникает ошибка 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 ;
Предыдущий урок по обнулению статуса выучил. И Как всегда спасибо за помощь.
06.03.2016, 18:14
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
Не подскажете, где можно посмотреть основные изменения в mql4 старого вида и нового? Пытаюсь что-то написать(простейшее, практически копию с учебника по мкл4), а выдает такие ошибки, как будто я на французском пишу, а не на мкл4.
По поводу "какие то ошибки", то есть какие то комментарии по этим ошибкам, пусть даже на английском.

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

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

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

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

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

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

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

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


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

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.
07.03.2016, 11:04
Аватар для seronn
seronn seronn вне форума Новичок форума
Регистрация: 26.02.2014 / Сообщений: 55
Поблагодарили 16 раз(а) / Репутация: 17
Народ, кто знает, подскажите как в советнике на MQL 4 присвоить переменной значение при появлении стрелочки и не менять значение до появления следующей стрелочки? В промежутках между появлениями стрелки буфер = 0 для обоих, при появлении один буфер 0 другой больше нуля.
07.03.2016, 11:58
Регистрация: 13.03.2009 / Сообщений: 2,361
Поблагодарили 1,966 раз(а) / Репутация: 2043
Народ, кто знает, подскажите как в советнике на MQL 4 присвоить переменной значение при появлении стрелочки и не менять значение до появления следующей стрелочки? В промежутках между появлениями стрелки буфер = 0 для обоих, при появлении один буфер 0 другой больше нуля.
static char Signal;
if(bufer1>0)Signal=1;
if(bufer2>0)Signal=-1;
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
seronn 
07.03.2016, 12:09
Аватар для serega20024
serega20024 serega20024 вне форума Интересующийся
Регистрация: 26.11.2015 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 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);
}
//-------------------------------------------------------------------
[свернуть]
08.03.2016, 22:18
Аватар для matro3
matro3 matro3 вне форума Почётный гражданин
Регистрация: 18.07.2013 / Сообщений: 349
Поблагодарили 340 раз(а) / Репутация: 344

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

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);
}
//-------------------------------------------------------------------
[свернуть]

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

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

Сейчас, Функция используется только для одного значения,
и поэтому для каждого значения, приходится создавать дополнительную функцию.(типо: 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.
11.03.2016, 10:09
Аватар для egorr007
egorr007 egorr007 вне форума Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Ещё вопрос. Я всё, о том же. Проконсультируйте пожалуйста.
Сделал счётчик, вывел его в ретурн, возвращает все предыдущие 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.
11.03.2016, 10:27
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Ещё вопрос. Я всё, о том же. Проконсультируйте пожалуйста.
Сделал счётчик, вывел его в ретурн, возвращает все предыдущие 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[])
11.03.2016, 13:24
Аватар для egorr007
egorr007 egorr007 вне форума Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Можно в функцию передать заранее объявленный массив по ссылке и ничего не надо возвращать.
double STORY(double & Mass[])
А пример, будьте добры, если не затруднит.
Ответить

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


Опции темы

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

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



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


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