Ответить
13.09.2018, 14:31
Аватар для eevviill2
eevviill2 eevviill2 на форуме Местный знаток
Регистрация: 13.08.2016 / Адрес: Бандерівці / Сообщений: 816
Поблагодарили 679 раз(а) / Репутация: 635
Сообщение от: блондинка
Добрый день всем!)
Подскажите пожалуйста как в код вставить ещё и секунды?
Заранее благодарю!)
PHP код:
extern string Time_Start          "12:35";           //Начало подачи сигналов  
extern string Time_End            "15:50";           //Конец  подачи сигналов 

//----

for(1<= limiti++) 
   {  
     
string Time_S=TimeToStr(StrToTime(Time_Start),TIME_MINUTES); 
     
string Time_E=TimeToStr(StrToTime(Time_End),TIME_MINUTES);
     
string Time_i=TimeToStr(Time[i],TIME_MINUTES); 
PHP код:
"12:35:00" 
Подсказка.
В mql4 можно сравнивать string.
PHP код:
 string Time_S=TimeToStr(StrToTime(Time_Start),TIME_MINUTES); 
     
string Time_E=TimeToStr(StrToTime(Time_End),TIME_MINUTES); 
этого не надо
13.09.2018, 18:10
Аватар для блондинка
блондинка блондинка вне форума Почётный гражданин
Регистрация: 21.11.2012 / Адрес: Санкт-Петербург / Сообщений: 282
Поблагодарили 411 раз(а) / Репутация: 412
PHP код:
"12:35:00" 
Подсказка.
В mql4 можно сравнивать string.
PHP код:
 string Time_S=TimeToStr(StrToTime(Time_Start),TIME_MINUTES); 
     
string Time_E=TimeToStr(StrToTime(Time_End),TIME_MINUTES); 
этого не надо
Спасибо что откликнулись)
Там рабочая строчка сравнения выглядит так:
PHP код:
 if (Time_S Time_E && Time_i >= Time_S && Time_i <= Time_E
Если по другому написать (по вашему предложению)то не работает.
Вроде все варианты испробовала.
Пожалуйста напишите эту строчку следуя вашей рекомендации.
Happiness is a choice.And it is free.Play on.
_____________________-Roy H.WiIIiams.
13.09.2018, 19:43
Аватар для блондинка
блондинка блондинка вне форума Почётный гражданин
Регистрация: 21.11.2012 / Адрес: Санкт-Петербург / Сообщений: 282
Поблагодарили 411 раз(а) / Репутация: 412
eevviill2,спасибо!
у меня получилось совсем по другому сделать)
работает)
Happiness is a choice.And it is free.Play on.
_____________________-Roy H.WiIIiams.
15.09.2018, 02:48
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
Здрасти!Подскажите почему селлы только работают,а бай не хочет,вообще не открываются ордера.Но если убрать LastOpenPriceBay >Ask,то открываются,но не так как хотелось бы.
PHP код:
   int start()
   {  
  if (
TimeBar==Time[0])  return(0);

     
double FF10=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,1,1);
     
double FF11=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,1,2);
     
double FF20=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,2,1);
     
double FF21=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,2,2);
      
 
double SL,TP;
  
double LastOpenPriceBay 0.0;
    
double LastOpenPriceSell 0.0
     
      for(
int i=OrdersTotal()-1;i>=0;i--)
        {
         if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true
          if(
OrderSymbol()==Symbol())
           if(
OrderType() == OP_BUY)
         {
           
LastOpenPriceBay OrderOpenPrice();
           break;
         } 
          if(
OrderType() == OP_SELL)
         {
           
LastOpenPriceSell OrderOpenPrice();
           break;
         } 
    }       
         
      if (
LastOpenPriceBay >Ask&&FF20<FF21)
      {
       
TimeBar=Time[0];                            
      if (
takeprofit!=0TP  NormalizeDouble(Ask takeprofit*Point,Digits); else TP 0
      if (
stoploss!=0)   SL  NormalizeDouble(Bid stoploss*Point,Digits); else SL 0;
      
bay =OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,SL,TP,"o",123,3);     
     }
     
     if (
LastOpenPriceSell<Bid && FF10<FF11
    { 
      
TimeBar=Time[0];                           
      if (
takeprofit!=0TP NormalizeDouble(Bid takeprofit*Point,Digits); else TP 0
      if (
stoploss!=0)   SL NormalizeDouble(Ask stoploss*Point,Digits); else SL 0;
      
sell=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,SL,TP,"o",321,3); 
     }  
     
     return(
0);
     } 
15.09.2018, 16:56
Аватар для vladradon
vladradon vladradon на форуме Почётный гражданин
Регистрация: 12.02.2015 / Сообщений: 684
Поблагодарили 338 раз(а) / Репутация: 345
Здрасти!Подскажите почему селлы только работают,а бай не хочет,вообще не открываются ордера.Но если убрать LastOpenPriceBay >Ask,то открываются,но не так как хотелось бы.
Для начала нужно добавить еще 2 кривые скобки:
PHP код:
     for(int i=OrdersTotal()-1;i>=0;i--) 
        { 
         if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)  
          if(
OrderSymbol()==Symbol())
            { 
             if(
OrderType() == OP_BUY
              { 
               
LastOpenPriceBay OrderOpenPrice(); 
               break; 
              }  
            if(
OrderType() == OP_SELL
             { 
              
LastOpenPriceSell OrderOpenPrice(); 
              break; 
             }
           }  
        } 
А при проверке последнего прайса добавить проверку на его ненулевое значение:
PHP код:
     if (LastOpenPriceBay>0.0 && LastOpenPriceBay >Ask && FF20<FF21
      { 
       
TimeBar=Time[0];                             
      if (
takeprofit!=0TP  NormalizeDouble(Ask takeprofit*Point,Digits); else TP 0;  
      if (
stoploss!=0)   SL  NormalizeDouble(Bid stoploss*Point,Digits); else SL 0
      
bay =OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,SL,TP,"o",123,3);     
     } 
      
     if (
LastOpenPriceSell>&& LastOpenPriceSell<Bid && FF10<FF11)  
    {  
      
TimeBar=Time[0];                            
      if (
takeprofit!=0TP NormalizeDouble(Bid takeprofit*Point,Digits); else TP 0;  
      if (
stoploss!=0)   SL NormalizeDouble(Ask stoploss*Point,Digits); else SL 0
      
sell=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,SL,TP,"o",321,3);  
     } 
Для баевского открытия может и не повлияет, а вот для селла - если даже прайс будет 0 (не расчитан ранее) LastOpenPriceSell<Bid сработает, чего быть не должно.
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...

Последний раз редактировалось vladradon; 15.09.2018 в 17:03.
16.09.2018, 02:07
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
vladradon,Все равно не открываются,только теперь и селы не работают так же как и баи вообще не открываются.
16.09.2018, 08:10
Аватар для vladradon
vladradon vladradon на форуме Почётный гражданин
Регистрация: 12.02.2015 / Сообщений: 684
Поблагодарили 338 раз(а) / Репутация: 345
Здрасти!Подскажите почему селлы только работают,а бай не хочет,вообще не открываются ордера.Но если убрать LastOpenPriceBay >Ask,то открываются,но не так как хотелось бы.
Получилось что-нибудь?
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...
16.09.2018, 08:54
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
Владрадон скобки кривые поставил,открываются также только селлы.Баи не хотят.Добавил прайсы >0 в условия,перестают открываться и бай и сел.
16.09.2018, 19:46
Аватар для vladradon
vladradon vladradon на форуме Почётный гражданин
Регистрация: 12.02.2015 / Сообщений: 684
Поблагодарили 338 раз(а) / Репутация: 345
Владрадон скобки кривые поставил,открываются также только селлы.Баи не хотят.Добавил прайсы >0 в условия,перестают открываться и бай и сел.
Скинь мне код в личку или в скайп. Из того, что ты предоставил в плане кода - все должно работать. Может есть косяки еще где-то в твоем коде помимо этого...))
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...
22.09.2018, 12:26
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
vladradon,Вот весь код(точнее шапка кода того),ничего там нет вроде.С другим индюком таже проблема.(В командировке был,извеняюсь за столь долгий ответ).
PHP код:
   extern int     MA_1           =10;
   
extern int     MA_Mode_1      =3;
   
extern int     Price_Type_1   =6;
   
extern int     Band_MA_1      =20;
   
extern int     SD_1           =1;

   
extern int     takeprofit     0;  
   
extern int     stoploss       0;
 
   
extern int slip               3;
   
extern double  Lots           0.1;     

   
int bay=0,sell=0,Magic=1234567890;
   
datetime TimeBar
22.09.2018, 13:02
Аватар для eevviill2
eevviill2 eevviill2 на форуме Местный знаток
Регистрация: 13.08.2016 / Адрес: Бандерівці / Сообщений: 816
Поблагодарили 679 раз(а) / Репутация: 635

PHP код:
double LastOpenPriceBay 0.0
    
double LastOpenPriceSell 0.0;  
      
      for(
int i=OrdersTotal()-1;i>=0;i--) 
        { 
         if(!
OrderSelect(i,SELECT_BY_POS,MODE_TRADES))  continue;
          if(
OrderSymbol()!=Symbol()) continue;

           if(
OrderType() == OP_BUY && LastOpenPriceBay==0LastOpenPriceBay OrderOpenPrice(); 
 
          if(
OrderType() == OP_SELL && LastOpenPriceSell==0LastOpenPriceSell OrderOpenPrice(); 

      if(
LastOpenPriceBay!=&& LastOpenPriceSell!=0) break;
    } 
22.09.2018, 13:29
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
vladradon,Сделал так (ниже) все заработало на EURUSD и бай и селл.(Изначально тестил,только на EURUSD).Сейчас тестируя на USDCHF тоже все работает.Но,меняю double LOPB =1; на EURUSD баи снова не работают;а на USDCHF при этом все работает.Вообщем беда для меня.
PHP код:
 int start() 
   {   
  if (
TimeBar==Time[0])  return(0); 

     
double FF10=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,1,1);
     
double FF11=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,1,2);
     
double FF20=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,2,1);
     
double FF21=iCustom(Symbol(),0,"new\\FEN 1",MA_1,MA_Mode_1,Price_Type_1,Band_MA_1,SD_1,2,2);
       
 
double SL,TP
 
      if (
LastOpenPriceBay() >Ask&&FF20<FF21
      { 
       
TimeBar=Time[0];                             
      if (
takeprofit!=0TP  NormalizeDouble(Ask takeprofit*Point,Digits); else TP 0;  
      if (
stoploss!=0)   SL  NormalizeDouble(Bid stoploss*Point,Digits); else SL 0
      
bay =OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,SL,TP,"o",123,3);     
     } 
      
     if (
LastOpenPriceSell()<Bid && FF10<FF11)  
    {  
      
TimeBar=Time[0];                            
      if (
takeprofit!=0TP NormalizeDouble(Bid takeprofit*Point,Digits); else TP 0;  
      if (
stoploss!=0)   SL NormalizeDouble(Ask stoploss*Point,Digits); else SL 0
      
sell=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,SL,TP,"o",321,3);  
     }   
      
     return(
0); 
     }  
     
 
double LastOpenPriceBay()
  {
     
double  LOPB =2
   
   for(
int i=OrdersTotal()-1;i>=0;i--) 
        { 
         if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)== true)  
          if(
OrderSymbol()==Symbol()&& OrderMagicNumber()==123)
          {         
            if(
OrderType() == OP_BUY
             { 
              
LOPB OrderOpenPrice(); 
              break;
             }
           }
         }
return(
LOPB);
}

 
double LastOpenPriceSell()
  {
     
double  LOPS =0
   
   for(
int i=OrdersTotal()-1;i>=0;i--) 
        { 
         if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)== true)  
          if(
OrderSymbol()==Symbol()&& OrderMagicNumber()==321)
          {         
            if(
OrderType() == OP_SELL
             { 
              
LOPS OrderOpenPrice(); 
              break;
             }
           }
         }
return(
LOPS);

22.09.2018, 14:58
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
eevviill2,попытался не помогает
22.09.2018, 15:06
Аватар для оn220
оn220 оn220 вне форума Интересующийся
Регистрация: 15.09.2018 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
А может быть такое что я не с ярлыка снимаю для загрузки терминала.А из папки левой.Хотя врядли пароль то тотже как и номер счета.
22.09.2018, 19:14
Аватар для yarik19
yarik19 yarik19 вне форума Новичок форума
Регистрация: 10.03.2015 / Сообщений: 8
Поблагодарили 4 раз(а) / Репутация: 5
Сообщение от: блондинка
Спасибо что откликнулись)
Там рабочая строчка сравнения выглядит так:
PHP код:
 if (Time_S Time_E && Time_i >= Time_S && Time_i <= Time_E
Если по другому написать (по вашему предложению)то не работает.
Вроде все варианты испробовала.
Пожалуйста напишите эту строчку следуя вашей рекомендации.

А что вы хотите сделать? Объясните на словах.
22.09.2018, 19:58
Аватар для блондинка
блондинка блондинка вне форума Почётный гражданин
Регистрация: 21.11.2012 / Адрес: Санкт-Петербург / Сообщений: 282
Поблагодарили 411 раз(а) / Репутация: 412
А что вы хотите сделать? Объясните на словах.
Спасибо,код уже нашла.
а задача стояла установить интервал времени появления сигнала от индикатора включая не только часы и минуты но и секунды.
Happiness is a choice.And it is free.Play on.
_____________________-Roy H.WiIIiams.
23.09.2018, 13:53
Аватар для vladradon
vladradon vladradon на форуме Почётный гражданин
Регистрация: 12.02.2015 / Сообщений: 684
Поблагодарили 338 раз(а) / Репутация: 345
блондинка,
Сообщение от: блондинка
Спасибо,код уже нашла.
а задача стояла установить интервал времени появления сигнала от индикатора включая не только часы и минуты но и секунды.
Проблема частенько заключается не в том, что спецы не могут помочь, а в том, что либо не правильно формируется задача, либо не понятно, в чем состоит в итоге достигаемый результат. Все тонкости достигаются точной математикой, которая уже достигается опытом и наработками прогера. Каждый вопрос можно по-разному решить, но вариации могут быть совсем разные - все зависит от от того, какой в итоге нужен расчет. Я не гружу полемикой - все зависит от задачи и если в тех задании нет идеально точных параметров, то и результаты могут координально отличаться от предполагаемых.
Можно получить результат 2 делением 4 на 2 или корнем квадратным из 144-х, деленным на 6
Это я имея ввиду то, что для каждого случая есть свой расчет.
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...

Последний раз редактировалось vladradon; 23.09.2018 в 14:08.
26.09.2018, 00:18
Аватар для nurfirdaus
nurfirdaus nurfirdaus вне форума Новичок форума
Регистрация: 13.09.2014 / Сообщений: 50
Поблагодарили 13 раз(а) / Репутация: 14
кто-то может помочь мне привести примеры кодов, которые могут запомнить последний крест сигнала, например, последний стохастический сигнал является перекрестным, а текущий сигнал - ничем.

это использование для советника.
27.09.2018, 13:13
Аватар для nurfirdaus
nurfirdaus nurfirdaus вне форума Новичок форума
Регистрация: 13.09.2014 / Сообщений: 50
Поблагодарили 13 раз(а) / Репутация: 14
пожалуйста, помогите мне, как сохранить последний скрещенный сигнал.

PHP код:
   macdNow  iMACD(NULLtimeframefast_ema_periodslow_ema_periodsignal_periodapplied_priceMODE_MAINshift);
    
macdPre2 iMACD(NULLtimeframefast_ema_periodslow_ema_periodsignal_periodapplied_priceMODE_MAINshift+1);
    
signNow  iMACD(NULLtimeframefast_ema_periodslow_ema_periodsignal_periodapplied_priceMODE_SIGNALshift);
    
signPre2 iMACD(NULLtimeframefast_ema_periodslow_ema_periodsignal_periodapplied_priceMODE_SIGNALshift+1);
// ------------------------------------------------------------------------------------------------
//
// ------------------------------------------------------------------------------------------------
int Crossed() {
    
int direction 0;

    if(
macdNow < -0.004) {
        
direction 1//up
    
}
    else if (
macdNow 0.004) {
        
direction = -1//down
    
}
    else if (
macdNow 0.001) {
       
direction 0// none
    
}
    else if (
macdNow > -0.001) {
       
direction 0// none
    
}
    return (
direction);
}
// ------------------------------------------------------------------------------------------------
//
// ------------------------------------------------------------------------------------------------
datetime LastCrossed() {
    static 
datetime last_Crossed 0;

    if(
Crossed() == 1) {
        
last_Crossed 1//up 
    
}
    else if (
Crossed() == -1) {
        
last_Crossed = -1//down
    
}
    else if (
Crossed() == 0) {
        
last_Crossed 0//none
    
}
    return (
last_Crossed);
}
// ------------------------------------------------------------------------------------------------
//
// ------------------------------------------------------------------------------------------------
int GetSignal() {
    
int Signal 0;

    if(
macdNow signNow && macdPre2 signPre2 && LastCrossed() > && macdPre2 0) {
        
Signal 1// buy
    
}

    if(
macdNow signNow && macdPre2 signPre2 && LastCrossed() < && macdPre2 0) {
        
Signal = -1// sell
    
}

    return(
Signal);


Последний раз редактировалось nurfirdaus; 27.09.2018 в 13:49.
27.09.2018, 14:57
Аватар для eevviill2
eevviill2 eevviill2 на форуме Местный знаток
Регистрация: 13.08.2016 / Адрес: Бандерівці / Сообщений: 816
Поблагодарили 679 раз(а) / Репутация: 635
пожалуйста, помогите мне, как сохранить последний скрещенный сигнал.

...
PHP код:
int cou=0;
int bar=0;

for(
int i=0;i<Bars-20;i++)
{
if(
crossed) {bar=i;cou++;}
if(
cou>=2) break;

Ответить

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


Опции темы

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

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



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


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