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

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

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

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

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,034 раз(а) / Репутация: 9034
  • Отправить сообщение для 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?
12.07.2012, 02:20
Аватар для admtw
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 пунктов от цены)
18.07.2012, 09:50
Аватар для vetallic
vetallic vetallic вне форума Местный знаток
Регистрация: 31.08.2010 / Сообщений: 352
Поблагодарили 509 раз(а) / Репутация: 511
как правильно прописать сигнал чтоб при каждом тике только раз выдало если такой же уже сообщался?...
- а то пиликает постоянно
18.07.2012, 10:01
Аватар для Nata_FX
Nata_FX Nata_FX вне форума Активный участник
Регистрация: 12.10.2011 / Сообщений: 50
Поблагодарили 35 раз(а) / Репутация: 36
как правильно прописать сигнал чтоб при каждом тике только раз выдало если такой же уже сообщался?...
- а то пиликает постоянно
Мне нравится такой способ. Пиликать на каждом баре 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. Причина: Ошиблась в коде
18.07.2012, 10:21
Аватар для vetallic
vetallic vetallic вне форума Местный знаток
Регистрация: 31.08.2010 / Сообщений: 352
Поблагодарили 509 раз(а) / Репутация: 511
а можно сделать если например был сигнал на покупку евро
- 1 раз пиликнуло и больше не пикало до смены другой пары...
18.07.2012, 10:55
Аватар для Nata_FX
Nata_FX Nata_FX вне форума Активный участник
Регистрация: 12.10.2011 / Сообщений: 50
Поблагодарили 35 раз(а) / Репутация: 36
Сделать можно. но что-то конкретное сложно посоветовать, без описания логики работы.
18.07.2012, 11:02
Аватар для vetallic
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!");           }
//------------------------------------------------- 
оно щас у меня пиликает то одно постоянно, или все сразу - если совпали параметры... и получается в хате дискотека
18.07.2012, 12:05
Регистрация: 13.03.2009 / Сообщений: 2,394
Поблагодарили 1,974 раз(а) / Репутация: 2051
ну например:

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
Чужие программы не переделываю!
19.07.2012, 20:23
Аватар для gorrec41
gorrec41 gorrec41 вне форума Активный участник
Регистрация: 07.04.2009 / Сообщений: 16
Поблагодарили 1 раз в 1 сообщении / Репутация: 1
подскажит пожайлуста а как сделать чтоб ордера не закрывались на етой же свече на которой открылись
любой слив за ваши деньги
19.07.2012, 20:33
Регистрация: 13.03.2009 / Сообщений: 2,394
Поблагодарили 1,974 раз(а) / Репутация: 2051
подскажит пожайлуста а как сделать чтоб ордера не закрывались на етой же свече на которой открылись
Сравни время открытия текущего бара и время открытия ордера. Если время открытия ордера больше или равно времени открытия текущего бара, то запрети закрытие ордера.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
20.07.2012, 06:14
Аватар для gorrec41
gorrec41 gorrec41 вне форума Активный участник
Регистрация: 07.04.2009 / Сообщений: 16
Поблагодарили 1 раз в 1 сообщении / Репутация: 1
спасибо
любой слив за ваши деньги
24.07.2012, 17:29
Аватар для hiks
hiks hiks вне форума Интересующийся
Регистрация: 07.07.2011 / Сообщений: 35
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Подскажите как написать "Если есть открытый ордер, то..." и "Если нет открытого ордера , то ..."
24.07.2012, 17:48
Регистрация: 13.03.2009 / Сообщений: 2,394
Поблагодарили 1,974 раз(а) / Репутация: 2051
Подскажите как написать "Если есть открытый ордер, то..." и "Если нет открытого ордера , то ..."
if(OrdersTotal()==0)
{
//Если есть открытый ордер
}
else
{
//Если нет открытого ордера
}
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
hiks 
24.07.2012, 18:02
Аватар для hiks
hiks hiks вне форума Интересующийся
Регистрация: 07.07.2011 / Сообщений: 35
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Спасибо!
24.07.2012, 19:17
Регистрация: 13.03.2009 / Сообщений: 2,394
Поблагодарили 1,974 раз(а) / Репутация: 2051
Спасибо!
Упс, малость перепутал. Всё наоборот.
if(OrdersTotal()==0)
{
//Если нет открытого ордера
}
else
{
//Если есть открытый ордер
}
Кстати, этот способ хорош своей простотой. Он вполне подходит для тестера. Но для работы мало пригоден так как нет фильтрации ордеров по маджику и символу.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

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

Что то типа

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

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

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


Опции темы

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

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



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


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