Ответ
 
Опции темы
Старый 04.07.2012, 17:15   #301 (permalink)
Почётный гражданин
 
Аватар для kamilkz
 
Регистрация: 10.03.2010
Сообщений: 278
Репутация: 326
kamilkz kamilkz kamilkz kamilkz
Сказал(а) спасибо: 1,707
Поблагодарили 325 раз(а) в 124 сообщениях
Поинты: 18
Подскажите почему K_Lot высвечивается в Alert с 4-мя знаками?
NormalizeDouble(K_Lot,2);
Alert (K_Lot);

Что не так?
kamilkz на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.07.2012, 17:47   #302 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для 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   #303 (permalink)
Почётный гражданин
 
Аватар для kamilkz
 
Регистрация: 10.03.2010
Сообщений: 278
Репутация: 326
kamilkz kamilkz kamilkz kamilkz
Сказал(а) спасибо: 1,707
Поблагодарили 325 раз(а) в 124 сообщениях
Поинты: 18
Сообщение от eevviill Посмотреть сообщение
Думаю так надо.
PHP код:
double Nor_K_Lot NormalizeDouble(K_Lot,2);
  
Alert (Nor_K_Lot); 
Все нормально, спасибо
kamilkz на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 07.07.2012, 09:55   #304 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для 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   #305 (permalink)
Интересующийся
 
Аватар для admtw
 
Регистрация: 22.11.2011
Сообщений: 3
Репутация: 1
admtw
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0
ребята, помогите пожалуйста, имеется код;
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   #306 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
как правильно прописать сигнал чтоб при каждом тике только раз выдало если такой же уже сообщался?...
- а то пиликает постоянно
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 18.07.2012, 10:01   #307 (permalink)
Активный участник
 
Аватар для Nata_FX
 
Регистрация: 12.10.2011
Сообщений: 50
Репутация: 36
Nata_FX
Сказал(а) спасибо: 10
Поблагодарили 35 раз(а) в 23 сообщениях
Поинты: 4
Сообщение от 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   #308 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
а можно сделать если например был сигнал на покупку евро
- 1 раз пиликнуло и больше не пикало до смены другой пары...
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 18.07.2012, 10:55   #309 (permalink)
Активный участник
 
Аватар для Nata_FX
 
Регистрация: 12.10.2011
Сообщений: 50
Репутация: 36
Nata_FX
Сказал(а) спасибо: 10
Поблагодарили 35 раз(а) в 23 сообщениях
Поинты: 4
Сделать можно. но что-то конкретное сложно посоветовать, без описания логики работы.
Nata_FX на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.07.2012, 11:02   #310 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
ну например:

PHP код:
//-------------------------------------------------
if  
   
MA EURUSD  100>1
{           Alert("Sell EURUSD!");           }
//-------------------------------------------------
if
   
MA GBPUSD 100>1
{           Alert("Sell GBPSD!");           }
//------------------------------------------------- 
оно щас у меня пиликает то одно постоянно, или все сразу - если совпали параметры... и получается в хате дискотека
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 18.07.2012, 12:05   #311 (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
Сообщение от 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   #312 (permalink)
Активный участник
 
Аватар для gorrec41
 
Регистрация: 07.04.2009
Сообщений: 15
Репутация: 1
gorrec41
Сказал(а) спасибо: 8
Поблагодарили 1 раз в 1 сообщении
Поинты: 0
подскажит пожайлуста а как сделать чтоб ордера не закрывались на етой же свече на которой открылись

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
любой слив за ваши деньги
gorrec41 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.07.2012, 20:33   #313 (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
Сообщение от gorrec41 Посмотреть сообщение
подскажит пожайлуста а как сделать чтоб ордера не закрывались на етой же свече на которой открылись
Сравни время открытия текущего бара и время открытия ордера. Если время открытия ордера больше или равно времени открытия текущего бара, то запрети закрытие ордера.

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
любой слив за ваши деньги
gorrec41 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.07.2012, 17:29   #315 (permalink)
Интересующийся
 
Аватар для hiks
 
Регистрация: 07.07.2011
Сообщений: 35
Репутация: 2
hiks
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
Поинты: 17
Подскажите как написать "Если есть открытый ордер, то..." и "Если нет открытого ордера , то ..."
hiks вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.07.2012, 17:48   #316 (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
Сообщение от hiks Посмотреть сообщение
Подскажите как написать "Если есть открытый ордер, то..." и "Если нет открытого ордера , то ..."
if(OrdersTotal()==0)
{
//Если есть открытый ордер
}
else
{
//Если нет открытого ордера
}

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

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

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

Что то типа

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

А точно так, что-то тестер игнорирует...
hiks вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.07.2012, 11:32   #320 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для 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 Выкл.



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


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