Ответ
 
Опции темы
Старый 02.07.2014, 06:55   #2841 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Подскажите как избавиться от
return value of 'OrderSend' should be checked
return value of 'OrderModify' should be checked
return value of 'OrderClose' should be checked
в блоке открытия ордера

Цитата:
if (MoneyManagement == true) firstlot = GetFirstLot();
else firstlot = Lots;
OrderSend (Symbol(), OP_BUYSTOP, firstlot, Ask+delta*Point, Slippage, 0, 0, "Innos Buy", Magic, exp, Blue);
ticket = GetLastOrderTicket (OP_BUYSTOP);
if (ticket>0)
{
GridBuySL = NormalizeDouble (OrderOpenPrice()-StopLoss*Point, Digits);
if (GridBuySL < OrderOpenPrice())
{
OrderModify (ticket, OrderOpenPrice(), GridBuySL, 0, exp);
Errors = 0;
lastbuylot = OrderLots();
}
else
{
OrderClose (ticket, OrderLots(), OrderOpenPrice(), Slippage);
Errors++;
}
}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.07.2014, 06:57   #2842 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
int number = OrderSend(...
Результат ордерсенд - целое число, номер ордера или -1 при ошибке
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ksardas (02.07.2014)
Старый 02.07.2014, 07:02   #2843 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Сообщение от ansol Посмотреть сообщение
int number = OrderSend(...
Результат ордерсенд - целое число, номер ордера или -1 при ошибке
Как-то так?
PHP код:
if (MoneyManagement == truefirstlot GetFirstLot();
         else 
firstlot Lots;
         
int number =OrderSend (Symbol(), OP_BUYSTOPfirstlotAsk+delta*PointSlippage00"Innos Buy"MagicexpBlue);
         
ticket GetLastOrderTicket (OP_BUYSTOP);
           if (
ticket>0)
         {
            
GridBuySL NormalizeDouble (OrderOpenPrice()-StopLoss*PointDigits);
            if (
GridBuySL OrderOpenPrice()) 
            {
               
int namber =OrderModify (ticketOrderOpenPrice(), GridBuySL0exp);
               
Errors 0;
               
lastbuylot OrderLots();
            }
            else 
            { 
               
int nomber =OrderClose (ticketOrderLots(), OrderOpenPrice(), Slippage);
               
Errors++;
            }
         } 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.07.2014, 07:05   #2844 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Ну, типа, да. Компилируй, увидишь, что таких ошибок не стало
Только
PHP код:
         int number =OrderSend (Symbol(), OP_BUYSTOPfirstlotAsk+delta*PointSlippage00"Innos Buy"MagicexpBlue); 
         
ticket GetLastOrderTicket (OP_BUYSTOP); 
У тебя ticket и number должны быть равны, по идее или это чтоб уж совсем-совсем точно было?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ksardas (02.07.2014)
Старый 02.07.2014, 07:33   #2845 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Спасибо, понятно))
а если вместо
PHP код:
int namber =OrderModify (ticketOrderOpenPrice(), GridBuySL0exp); 
сделать так
PHP код:
if(!OrderModify (ticketOrderOpenPrice(), GridBuySL0exp)break; 
правильней будут??
в обоих случаях ошибки проверки нет

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.07.2014, 07:36   #2846 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Это ж целое число, а не булева переменная, надо if(OrderSend(...) > -1)
потому как !OrderSend будет только в случае нуля, а -1 сработает также как и +1
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ksardas (02.07.2014)
Старый 02.07.2014, 07:51   #2847 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475

Да-да, я так и подумал

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.07.2014, 08:50   #2848 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 178
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
Привет всем.
Если надо чтоб индикатор работал с 9.00 до 20.00 я вставил в начале старта услувие
PHP код:
if(Hour() < 9   || Hour() > 20)return(0); 
,
но он все равно рисует за все сутки.
Где моя ошибка ?

PHP код:
int OnCalculate(const int rates_total,
                const 
int prev_calculated,
                const 
datetime &time[],
                const 
double &open[],
                const 
double &high[],
                const 
double &low[],
                const 
double &close[],
                const 
long &tick_volume[],
                const 
long &volume[],
                const 
int &spread[])
  {
//---
      
if(Hour() < 9   || Hour() > 20)return(0); 
      
      
int Counted_bars;                       // Количество просчитанных баров 
      
Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
      
int i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
      
if (i>History-1)                 // Если много баров то ..      
      
i=History-1;                     // ..рассчитывать заданное колич.
      
while(i>=0)                      // Цикл по непосчит
     
....................................................
..............................................................
      
i--;      
      }
//--- return value of prev_calculated for next call
   
return(rates_total); 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас
gince вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.07.2014, 08:53   #2849 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Цитата:
Если надо чтоб индикатор работал с 9.00 до 20.00 я вставил в начале старта услувие
Надо не возвращать ноль, а в буфер индикатора в это время запихивать ноль, а так он у вас просто не считает с 20 до 9, зато в остальное время (с 9 до 20) всё пересчитывает полностью.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gince (02.07.2014)
Старый 02.07.2014, 09:10   #2850 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 178
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
Понял, но несделал.
PHP код:
int OnCalculate(const int rates_total,
                const 
int prev_calculated,
                const 
datetime &time[],
                const 
double &open[],
                const 
double &high[],
                const 
double &low[],
                const 
double &close[],
                const 
long &tick_volume[],
                const 
long &volume[],
                const 
int &spread[])
  {
//---
     
      
      
int Counted_bars;                       // Количество просчитанных баров 
      
Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
      
int i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
      
if (i>History-1)                 // Если много баров то ..      
      
i=History-1;                     // ..рассчитывать заданное колич.
      
while(i>=0)                      // Цикл по непосчитанным барам     
      
{    
         
double MA_l_0 iMA(NULL,0,perMA_1,0,modeMA_1,PRICE_CLOSE,i);
         
double MA_l_1 iMA(NULL,0,perMA_1,0,modeMA_1,PRICE_CLOSE,i+1);
         
         
double MA_g_0 iMA(NULL,0,perMA_2,0,modeMA_2,PRICE_CLOSE,i);
         
double MA_g_1 iMA(NULL,0,perMA_2,0,modeMA_2,PRICE_CLOSE,i+1);
         
         
double STD_0 iStdDev(NULL,0,perSTD,0,modeSTD,PRICE_CLOSE,i);
         
double STD_1 iStdDev(NULL,0,perSTD,0,modeSTD,PRICE_CLOSE,i+1);
         
         
//double ELR_1=((High[i]+Low[i])/2)-iMA(NULL,0,perELR,0,1,PRICE_CLOSE,i);  
         //double ELR_2=((High[i]+Low[i])/2)-iMA(NULL,0,perELR,0,1,PRICE_CLOSE,i+1);
         
         //Buy
         
if(MA_l_0 MA_l_1 && 
            
MA_g_0 MA_g_1 && 
            
STD_0 STD_1)
            
            if(
Hour() < 9   || Hour() > 20UPBuffer[i] = 0;
            else 
UPBuffer[i] = Low[i];
        else
         
//Sell   
         
if(MA_l_0 MA_l_1 && 
            
MA_g_0 MA_g_1 && 
            
STD_0 STD_1 )
            
            if(
Hour() < 9   || Hour() > 20DNBuffer[i] = 0;
            else 
DNBuffer[i] = High[i];   
      
i--;
      
      }
//--- return value of prev_calculated for next call
   
return(rates_total);
  } 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас

Последний раз редактировалось gince; 02.07.2014 в 09:17.
gince вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.07.2014, 12:08   #2851 (permalink)
Прохожий
 
Аватар для QCKPPS
 
Регистрация: 25.10.2013
Сообщений: 1
Репутация: 1
QCKPPS
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0
Could someone post an example of a working solution for MT4 named pipes? Communicated between two terminals. Or any other solution how to make two MT4 terminals communicated with each other?
QCKPPS вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.07.2014, 14:18   #2852 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от QCKPPS Посмотреть сообщение
Could someone post an example of a working solution for MT4 named pipes? Communicated between two terminals. Or any other solution how to make two MT4 terminals communicated with each other?
Например, здесь:
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 14
Размер:	73.5 Кб
ID:	171020  
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 08.07.2014, 20:48   #2853 (permalink)
Интересующийся
 
Аватар для platonov3000
 
Регистрация: 19.11.2010
Сообщений: 2
Репутация: 1
platonov3000
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Ребята! Может кто с этим явлением сталкивался? Месяц бьюсь...

В советнике не работает вызванный индикатор, в частности не работают периоды у функции iCustom!
пример:


double Volna = iCustom(NULL,PERIOD_M5,"Awesome",0,0);

у этого индикатора нет входных параметров, но есть 3 буфера. С данным периодом, тестер не видит индикатор, при тестировании на ТФ М1. Работает только "0 или PERIOD_CURRENT" (текущий период). !!!!!!! Это происходит с любым вызванным индикатором, история тестируемого участка на всех ТФ есть.Проверяю так... (по быстрому). Включаю старт тестирования с периодом М1, потом стоп, если тестер не видит индикатор, то тот не отображается на графике. Если меняю период на простой "0" в советнике, то индикатор прекрасно отображается на графике после тестирования.
Программирование только начинаю изучать, но хоть убей, не могу понять поведение данной функции, она и работает и не работает....
Может хоть у кого нибудь зацепка есть, узнать причину?

Последний раз редактировалось platonov3000; 08.07.2014 в 20:52.
platonov3000 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.07.2014, 07:00   #2854 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от platonov3000 Посмотреть сообщение
Проверяю так... (по быстрому). Включаю старт тестирования с периодом М1, потом стоп, если тестер не видит индикатор, то тот не отображается на графике. Если меняю период на простой "0" в советнике, то индикатор прекрасно отображается на графике после тестирования.
Вы чего-то странного желаете - увидеть индикатор с периодом М5 на графике М1. Не будет он отображаться, и не должен, но это совершенно не мешает использовать в коде его значения.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
abuuuuuu (09.07.2014), ksardas (09.07.2014)
Старый 09.07.2014, 14:32   #2855 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Нужна помощь!!!!
не понимаю, что возвращать внутри void
PHP код:
void TrailingByMA(int iTicket=0,int iMATmFrme=-1)
{
   
// проверяем переданные значения
   
if ((iTicket==0) || (!OrderSelect(iTicket,SELECT_BY_TICKET)) || (iMATmFrme==-1) )
   {
      
Alert("Трейлинг функцией TrailingByMA() невозможен из-за некорректности значений переданных ей аргументов.");
    
// если условия не походят нужно выйти 
      
return(0);
...
далее сам тралл
   

return(0) не правильно, что-же ставить на возврат????

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.07.2014, 14:58   #2856 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от ksardas Посмотреть сообщение
Нужна помощь!!!!
не понимаю, что возвращать внутри void
PHP код:
void TrailingByMA(int iTicket=0,int iMATmFrme=-1)
{
   
// проверяем переданные значения
   
if ((iTicket==0) || (!OrderSelect(iTicket,SELECT_BY_TICKET)) || (iMATmFrme==-1) )
   {
      
Alert("Трейлинг функцией TrailingByMA() невозможен из-за некорректности значений переданных ей аргументов.");
    
// если условия не походят нужно выйти 
      
return(0);
...
далее сам тралл
   

return(0) не правильно, что-же ставить на возврат????
void функция ничего не возвращает.
Можно убрать return(0); в конце функции. А если нужно выйти из функции return;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ksardas (09.07.2014)
Старый 09.07.2014, 15:08   #2857 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Сообщение от Ugar Посмотреть сообщение
void функция ничего не возвращает.
Можно убрать return(0); в конце функции. А если нужно выйти из функции return;
Помню что void функция ничего не возвращает, просто поставить return(без аргументов) для выхода затупил, в других местах наоборот добавлял аргументы(0) . Благодарю за помощь!!!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.07.2014, 20:30   #2858 (permalink)
Интересующийся
 
Аватар для platonov3000
 
Регистрация: 19.11.2010
Сообщений: 2
Репутация: 1
platonov3000
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Сообщение от qqmber Посмотреть сообщение
Вы чего-то странного желаете - увидеть индикатор с периодом М5 на графике М1. Не будет он отображаться, и не должен, но это совершенно не мешает использовать в коде его значения.
Спасибо друг, поправил меня! Я этого не знал.
platonov3000 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.07.2014, 09:14   #2859 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Каким образом в тестере может возникнуть ошибка 138 при
PHP код:
fClose OrderClose(OrderTicket(), OrderLots(), dPriceiPipsclrNONE); 
где iPips = 10 на 5знаке(ноль тоже пробовал) и dPrice = Ask при типе ордера BUY и Bid при SELL
Начал переделывать свой же советник и содрал эту функцию с него, а оно мне фигу такую в логах пишет:
Код:
2014.07.11 14:10:59.238	2014.06.13 06:21  ZZScalp EURUSD,M5: OrderClose error 138
2014.07.11 14:10:59.238	2014.06.13 06:21  ZZScalp EURUSD,M5: error(138): requote #1 ZigZag-27
При этом старая версия работает прекрасно здесь же
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 11.07.2014, 10:05   #2860 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от ansol Посмотреть сообщение
dPrice = Ask при типе ордера BUY и Bid при SELL
Для начала неплохо было бы закрывать BUY по Bid, SELL по Ask.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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