Ответ
 
Опции темы
04.07.2012, 17:15
Аватар для kamilkz
kamilkz Почётный гражданин
Регистрация: 10.03.2010 / Сообщений: 286
Поблагодарили 333 раз(а) / Репутация: 334
Подскажите почему K_Lot высвечивается в Alert с 4-мя знаками?
NormalizeDouble(K_Lot,2);
Alert (K_Lot);

Что не так?
kamilkz вне форума Ответить с цитированиемОтветить с цитированием  
04.07.2012, 17:47
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от kamilkz Посмотреть сообщение
Подскажите почему K_Lot высвечивается в Alert с 4-мя знаками?
NormalizeDouble(K_Lot,2);
Alert (K_Lot);

Что не так?
Думаю так надо.
PHP код:
double Nor_K_Lot NormalizeDouble(K_Lot,2);
  
Alert (Nor_K_Lot); 
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
kamilkz (04.07.2012)
04.07.2012, 18:06
Аватар для kamilkz
kamilkz Почётный гражданин
Регистрация: 10.03.2010 / Сообщений: 286
Поблагодарили 333 раз(а) / Репутация: 334
Сообщение от eevviill Посмотреть сообщение
Думаю так надо.
PHP код:
double Nor_K_Lot NormalizeDouble(K_Lot,2);
  
Alert (Nor_K_Lot); 
Все нормально, спасибо
kamilkz вне форума Ответить с цитированиемОтветить с цитированием  
07.07.2012, 09:55
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию массивы


PHP код:
double WPR_al1[2];
double MA_al1[2];


WPR_al1[1]=(iWPR(Symbol(),Period(),WPR_Period,1)+50.0)*2.0;
 
ArraySetAsSeries(MA_al1,true);
MA_al1[1]=iMAOnArray(WPR_al1,0,MA_Period,0,MA_Mode,1);

Alert(MA_al1[1]); 
Почему алерт выдёт 0?
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
12.07.2012, 02:20
Аватар для admtw
admtw Интересующийся
Регистрация: 22.11.2011 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1
ребята, помогите пожалуйста, имеется код;
PHP код:
void SetOrders() {
if( 
Close[0]==Open[0] && High[0]==Low[0] && Volume[0]<0)

double Price,ldStop=0ldTake=0;
double pBid=Open[0]-DistanceSet*Point;

if (!
ExistOrder(2)){ 
    if (
StopLoss!=0ldStop=pBid+StopLoss*Point;
    if (
TakeProfit!=0ldTake=pBid-TakeProfit*Point;
  
    
SetOrder(OP_SELLSTOPpBid,  ldStopldTake,   2);
  } 
суть в том , что ордер выставляется у меня отложенный селл стоп на расстоянии от цены открытии свечи, значение DistanceSet выставлено на "- 15", и при откате выставляется отложенный ордер на расстоянии 15 пунктов, проблема в том, что ордер выставляется слишком близко от текушей цены и успевает срабатывать, как мне реализовать так чтобы ордер срабатывал по цене открытия свечи и чтобы текущая цена была тоже на расстоянии пунктов на 20 от отложенного?( т.е должно срабатывать отложенный ордер когда цена достигнет по суте 35 пунктов от цены открытия свечи, но так чтобы было расстояние установленного ордера 15 пунктов от цены)
admtw вне форума Ответить с цитированиемОтветить с цитированием  
18.07.2012, 09:50
Аватар для vetallic
vetallic Местный знаток
Регистрация: 31.08.2010 / Сообщений: 352
Поблагодарили 509 раз(а) / Репутация: 511
как правильно прописать сигнал чтоб при каждом тике только раз выдало если такой же уже сообщался?...
- а то пиликает постоянно
vetallic вне форума Ответить с цитированиемОтветить с цитированием  
18.07.2012, 10:01
Аватар для Nata_FX
Nata_FX Активный участник
Регистрация: 12.10.2011 / Сообщений: 50
Поблагодарили 35 раз(а) / Репутация: 36
Сообщение от vetallic Посмотреть сообщение
как правильно прописать сигнал чтоб при каждом тике только раз выдало если такой же уже сообщался?...
- а то пиликает постоянно
Мне нравится такой способ. Пиликать на каждом баре 1 раз.

PHP код:
int lastTime 0;
int start()  {
if (
lastTime == 0lastTime Time[0];
 if (
Time[0] != lastTime && Условие сигнала == true) {
    
Alarm();
    
lastTime Time[0];
 }


Последний раз редактировалось Nata_FX; 18.07.2012 в 10:45. Причина: Ошиблась в коде
Nata_FX вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
vetallic (18.07.2012)
18.07.2012, 10:21
Аватар для vetallic
vetallic Местный знаток
Регистрация: 31.08.2010 / Сообщений: 352
Поблагодарили 509 раз(а) / Репутация: 511
а можно сделать если например был сигнал на покупку евро
- 1 раз пиликнуло и больше не пикало до смены другой пары...
vetallic вне форума Ответить с цитированиемОтветить с цитированием  
18.07.2012, 10:55
Аватар для Nata_FX
Nata_FX Активный участник
Регистрация: 12.10.2011 / Сообщений: 50
Поблагодарили 35 раз(а) / Репутация: 36
Сделать можно. но что-то конкретное сложно посоветовать, без описания логики работы.
Nata_FX вне форума Ответить с цитированиемОтветить с цитированием  
18.07.2012, 11:02
Аватар для vetallic
vetallic Местный знаток
Регистрация: 31.08.2010 / Сообщений: 352
Поблагодарили 509 раз(а) / Репутация: 511
ну например:

PHP код:
//-------------------------------------------------
if  
   
MA EURUSD  100>1
{           Alert("Sell EURUSD!");           }
//-------------------------------------------------
if
   
MA GBPUSD 100>1
{           Alert("Sell GBPSD!");           }
//------------------------------------------------- 
оно щас у меня пиликает то одно постоянно, или все сразу - если совпали параметры... и получается в хате дискотека
vetallic вне форума Ответить с цитированиемОтветить с цитированием  
18.07.2012, 12:05
Регистрация: 13.03.2009 / Сообщений: 2,322
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от vetallic Посмотреть сообщение
ну например:

PHP код:
//-------------------------------------------------
if  
   
MA EURUSD  100>1
{           Alert("Sell EURUSD!");           }
//-------------------------------------------------
if
   
MA GBPUSD 100>1
{           Alert("Sell GBPSD!");           }
//------------------------------------------------- 
оно щас у меня пиликает то одно постоянно, или все сразу - если совпали параметры... и получается в хате дискотека
Что бы пиликнуло один раз при получении условия и в следующий раз пиликнуло только после изменения состояния условия можно организовать триггер при помощи статическихи и локальных флагов.
bool falg=false;
static bool statflag=false;
if(условие для сигнала)flag=true;
if(statflag!=flag)Alert("текст алерта");
statflag=flag;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
3 пользователя(ей) сказали cпасибо:
chocolate (24.07.2012), eevviill (18.07.2012), vetallic (18.07.2012)
19.07.2012, 20:23
Аватар для gorrec41
gorrec41 Активный участник
Регистрация: 07.04.2009 / Сообщений: 16
Поблагодарили 1 раз в 1 сообщении / Репутация: 1
подскажит пожайлуста а как сделать чтоб ордера не закрывались на етой же свече на которой открылись

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
любой слив за ваши деньги
gorrec41 вне форума Ответить с цитированиемОтветить с цитированием  
19.07.2012, 20:33
Регистрация: 13.03.2009 / Сообщений: 2,322
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от gorrec41 Посмотреть сообщение
подскажит пожайлуста а как сделать чтоб ордера не закрывались на етой же свече на которой открылись
Сравни время открытия текущего бара и время открытия ордера. Если время открытия ордера больше или равно времени открытия текущего бара, то запрети закрытие ордера.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gorrec41 (20.07.2012)
20.07.2012, 06:14
Аватар для gorrec41
gorrec41 Активный участник
Регистрация: 07.04.2009 / Сообщений: 16
Поблагодарили 1 раз в 1 сообщении / Репутация: 1
спасибо

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
любой слив за ваши деньги
gorrec41 вне форума Ответить с цитированиемОтветить с цитированием  
24.07.2012, 17:29
Аватар для hiks
hiks Интересующийся
Регистрация: 07.07.2011 / Сообщений: 35
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Подскажите как написать "Если есть открытый ордер, то..." и "Если нет открытого ордера , то ..."
hiks вне форума Ответить с цитированиемОтветить с цитированием  
24.07.2012, 17:48
Регистрация: 13.03.2009 / Сообщений: 2,322
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от hiks Посмотреть сообщение
Подскажите как написать "Если есть открытый ордер, то..." и "Если нет открытого ордера , то ..."
if(OrdersTotal()==0)
{
//Если есть открытый ордер
}
else
{
//Если нет открытого ордера
}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
hiks (24.07.2012)
24.07.2012, 18:02
Аватар для hiks
hiks Интересующийся
Регистрация: 07.07.2011 / Сообщений: 35
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Спасибо!
hiks вне форума Ответить с цитированиемОтветить с цитированием  
24.07.2012, 19:17
Регистрация: 13.03.2009 / Сообщений: 2,322
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от hiks Посмотреть сообщение
Спасибо!
Упс, малость перепутал. Всё наоборот.
if(OrdersTotal()==0)
{
//Если нет открытого ордера
}
else
{
//Если есть открытый ордер
}
Кстати, этот способ хорош своей простотой. Он вполне подходит для тестера. Но для работы мало пригоден так как нет фильтрации ордеров по маджику и символу.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 24.07.2012 в 19:21.
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
25.07.2012, 15:54
Аватар для hiks
hiks Интересующийся
Регистрация: 07.07.2011 / Сообщений: 35
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Цитата:
Сообщение от hiks
Подскажите как в коде написать:
Если последний ордер закрылся по стоплоссу то ....
Если последний ордер закрылся по тейкпрофиту то ....

Что то типа

PHP код:
OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
if(OrderTakeProfit()==OrderClosePrice()) ....

А точно так, что-то тестер игнорирует...
hiks вне форума Ответить с цитированиемОтветить с цитированием  
26.07.2012, 11:32
Аватар для Lender
Lender Активный участник
Регистрация: 19.07.2011 / Сообщений: 56
Поблагодарили 74 раз(а) / Репутация: 75
  • Отправить сообщение для Lender с помощью Skype™
Сообщение от hiks Посмотреть сообщение
А точно так, что-то тестер игнорирует...
тупо сравнивать переменные с плавающей запетой не есть хорошо... , если будут различия например в 10-м знаке == уже не прокатит

Код:
void MooFoo()
{
   static int last_ticket = EMPTY; 
   datetime time = 0;
   int ticket = EMPTY;
   
   for( int i = OrdersHistoryTotal()-1 ; i >= 0 ; i--) 
     if( OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ) 
       if( OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC ) 
         if( OrderOpenTime() > time )
         {
           time = OrderOpenTime();
           ticket = OrderTicket();
         }
       
  if( ticket != EMPTY && last_ticket != ticket ) 
    if( OrderSelect(ticket, SELECT_BY_TICKET ) )
    {
      if( NormalizeDouble(OrderClosePrice(), Digits) == NormalizeDouble(OrderStopLoss(), Digits) ) // в некоотрых слочаях можна использовать if( OrderProfit() < 0.0 ) как аналог
      {
        // закрылись по стоп лосу  (или в убыток если использовали if( OrderProfit() < 0.0 ) )
      }
      
      if( NormalizeDouble(OrderClosePrice(), Digits) == NormalizeDouble(OrderTakeProfit(), Digits) ) // if( OrderProfit() > 0.0 )
      {
        // закрылись по тейку  (или в профит если использовали if( OrderProfit() > 0.0 ) )
      }
    }
              
 last_ticket = ticket;
}
код не тестировал, могут быть ошибки

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программит, инфа в профиле

Последний раз редактировалось Lender; 26.07.2012 в 11:35.
Lender вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
hiks (26.07.2012)
Ответ

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


Опции темы

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

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



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


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