Ответ
 
Опции темы
Старый 14.01.2013, 05:59   #841 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от hoz Посмотреть сообщение
Я не это имел ввиду. Разница в том, что так открытые ордера не перебирают:

PHP код:
 for (int i OrdersTotal(); >= 0--) 
Перебирают так:

PHP код:
 for (int i OrdersTotal() - 1>= 0--) 
А закрытые почему-то так не перебирают:

PHP код:
for (int i 0OrdersHistoryTotal() - 1++) 
А перебирают так:

PHP код:
for (int i 0OrdersHistoryTotal(); ++) 
Ты не там ищешь разницу...
OrdersTotal() возвращает к-во открытых и отложенных ордеров. Но нумерация начинается с нуля. Потому и получается, что 2 открытых ордера имеют индекс 0 и 1 т.е. OrdersTotal()-1
OrdersHistoryTotal() работает так-же, только возвращает к-во ордеров из вкладки "История Счёта" согласно настройкам этой вкладки. Если настроить чтобы показывались ордера только за сегодня то будет количество закрытых сегодня.
И раз уж начали об этом... Если ордер закрыт в 23:59 и не попадает в список истории счёта, то он остаётся недоступным. А юзер существо непредсказуемое, может сделать так, что и в голову тебе прийти не может (из личного опыта), поэтому при поиске ордера из истории надо такой вариант надо учитывать.
Так, вот OrdersTotal()-1 и OrdersHistoryTotal()-1 будет пограмотней, но и лишняя итерация цикла занимает времени < 1 миллисекунды. Многие это считают не критичным и не минусуют 1 из к-ва ордеров.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (14.01.2013)
Старый 14.01.2013, 08:05   #842 (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™
Сообщение от hoz Посмотреть сообщение
Я не это имел ввиду. Разница в том, что так открытые ордера не перебирают:

PHP код:
 for (int i OrdersTotal(); >= 0--) 

Перебирают так:

PHP код:
 for (int i OrdersTotal() - 1>= 0--) 

А закрытые почему-то так не перебирают:

PHP код:
for (int i 0OrdersHistoryTotal() - 1++) 

А перебирают так:

PHP код:
for (int i 0OrdersHistoryTotal(); ++) 
Я понял про что ты спрашиваешь.
Всё дело в знаке =
Посмотри. Между эими вариантами нету разницы.
PHP код:
for (int i 0OrdersHistoryTotal(); ++) 
PHP код:
for (int i 0<= OrdersHistoryTotal()-1++) 
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (14.01.2013), hoz (14.01.2013)
Старый 14.01.2013, 09:40   #843 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от eevviill Посмотреть сообщение
Я понял про что ты спрашиваешь.
Всё дело в знаке =
Посмотри. Между эими вариантами нету разницы.
PHP код:
for (int i 0OrdersHistoryTotal(); ++) 
PHP код:
for (int i 0<= OrdersHistoryTotal()-1++) 

Точно. Вот я на ровном месте споткнулся На таком просто моменте
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 10:57   #844 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
И раз уж начали об этом... Если ордер закрыт в 23:59 и не попадает в список истории счёта, то он остаётся недоступным.

Как он не попадёт в список истории, если он уже закрыт? Цикл то не по времени, а по ордерам..
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 11:44   #845 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от hoz Посмотреть сообщение
Как он не попадёт в список истории, если он уже закрыт? Цикл то не по времени, а по ордерам..
Я не думал, что надо расписывать досконально...
Открой вкладку "История счёта", клик пкм (правой кнопкой мыши), в контекстном меню лкм "Выбрать период", в появившемся окне выбрать "Сегодня", лкм "ок" Посчитай сколько осталось ордеров...
Потом в какой либо код добавь Comment(OrdersHistoryTotal());
Если после этого, в таком состоянии вкладки "История Счёта" сможешь программно найти ордер который был закрыт вчера...
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (14.01.2013)
Старый 14.01.2013, 11:59   #846 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от eevviill Посмотреть сообщение
Сообщение от hoz Посмотреть сообщение
Я не это имел ввиду. Разница в том, что так открытые ордера не перебирают:

PHP код:
 for (int i OrdersTotal(); >= 0--) 
Перебирают так:

PHP код:
 for (int i OrdersTotal() - 1>= 0--) 
А закрытые почему-то так не перебирают:

PHP код:
for (int i 0OrdersHistoryTotal() - 1++) 
А перебирают так:

PHP код:
for (int i 0OrdersHistoryTotal(); ++) 
Я понял про что ты спрашиваешь.
Всё дело в знаке =
Посмотри. Между эими вариантами нету разницы.
PHP код:
for (int i 0OrdersHistoryTotal(); ++) 
PHP код:
for (int i 0<= OrdersHistoryTotal()-1++) 
Василий, а где ты нашёл <= в коде hoz'a?... Я вижу только >= 0
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (14.01.2013)
Старый 14.01.2013, 12:03   #847 (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™
Сообщение от AlexeyVik Посмотреть сообщение
Василий, а где ты нашёл <= в коде hoz'a?... Я вижу только >= 0
Не нашел, но догадался что так должно было быть.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 12:32   #848 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Я не думал, что надо расписывать досконально...
Открой вкладку "История счёта", клик пкм (правой кнопкой мыши), в контекстном меню лкм "Выбрать период", в появившемся окне выбрать "Сегодня", лкм "ок" Посчитай сколько осталось ордеров...
Потом в какой либо код добавь Comment(OrdersHistoryTotal());
Если после этого, в таком состоянии вкладки "История Счёта" сможешь программно найти ордер который был закрыт вчера...

Смысл в том, что я же не спрашивал как посмотреть историю за какой-то срок.. Странно, что советник ищет только в том периоде, как я понял, какой выбран пользователем в пользовательском интерфейсе. По сути, одно не должно мешать другому. Абсурдно как-то..
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 12:36   #849 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от eevviill Посмотреть сообщение
Не нашел, но догадался что так должно было быть.

По ходу нужно и закрытые ордера перебирать от последнего закрытого к первому, а не иначе.. Т.к. те которые закрыты раньше, имеют же не тот " вес ", а нам важнее последние, в принципе. Буду корректировать этот момент.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 12:48   #850 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от hoz Посмотреть сообщение
Абсурдно как-то..
Я-бы не сказал, что это абсурдно... Прикинь сколько ордеров может набраться за 3-4 года... И сколько времени понадобится для перебора всего списка. А если есть желание то поэкспериментируй с направлением сортировки списка. Какой ордер будет иметь какой индекс.
Я это не экспериментировал, мне хватило того, что OrderSelect(0, SELECT_BY_POS, MODE_HISTORY) выбирал не тот ордер который мне был нужен. Я сразу от такого подхода отказался.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (14.01.2013), hoz (14.01.2013)
Старый 14.01.2013, 13:57   #851 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Я-бы не сказал, что это абсурдно... Прикинь сколько ордеров может набраться за 3-4 года... И сколько времени понадобится для перебора всего списка. А если есть желание то поэкспериментируй с направлением сортировки списка. Какой ордер будет иметь какой индекс.
Я это не экспериментировал, мне хватило того, что OrderSelect(0, SELECT_BY_POS, MODE_HISTORY) выбирал не тот ордер который мне был нужен. Я сразу от такого подхода отказался.

Тоже верно. Хотя 0 (нуль) как индекс это уж слишком.


Я написал код, чтоб закрывать частично, на разных уровнях ценовых позицию дробя лот. Что-то странно работает. Некоторые ордера как-будто пропускает и они висят мёртвым грузом. Что тут не так? Вроде как всё чётко.

Скрытый текст

PHP код:
//+-------------------------------------------------------------------------------------+
//|TakeProfitLots                                                                       |
//+-------------------------------------------------------------------------------------+
double TakeProfitLots(double lotPrimaryint approach)
{
  
double lotDealToClose;                                       // лот для закрытия на данном уровне тейк-профита
  
if (approach == 1)
      
lotDealToClose lotPrimary i_tp1Percent 100;
        return (
LotRound(lotDealToClose));
  if (
approach == 2)
      
lotDealToClose lotPrimary i_tp2Percent 100;
        return (
LotRound(lotDealToClose));
  if (
approach == 3)
      
lotDealToClose lotPrimary i_tp3Percent 100;
        return (
LotRound(lotDealToClose));
}
//+-------------------------------------------------------------------------------------+
//| Проверка объема на корректность и округление                                        |
//+-------------------------------------------------------------------------------------+
double LotRound(double L)
{
  return(
MathRound(MathMin(MathMax(LminLot), maxLot)/lotStep)*lotStep);
}
//+-------------------------------------------------------------------------------------+
//| Определяем количество закрытий ордеров                                              |
//+-------------------------------------------------------------------------------------+
int OrderCloseCount(double ordOpPricedatetime ordOpTime)
{
  
int count 0;
  
  for (
int i OrdersHistoryTotal() - 1>= i--)
  {
    if (!
OrderSelect(iSELECT_BY_POSMODE_HISTORY)) continue;
      if (
OrderSymbol() != Symbol()) continue;
          if (
OrderOpenPrice() == ordOpPrice && OrderOpenTime() == ordOpTime)
              
count++;
  }
  
   return (
count);
}
//+-------------------------------------------------------------------------------------+
//| Определяем тейк-профиты                                                             |
//+-------------------------------------------------------------------------------------+
void TakeProfits()
{
  
int type;
  
double OOP;
  
datetime OOT;
  
int ticket;
  
int counterOfCloses;
  
  for (
int i OrdersTotal() - 1>= 0i--)
  {  
    if (!
OrderSelect(iSELECT_BY_POSMODE_TRADES)) continue;
      if (
OrderSymbol() != Symbol()) continue;
          
type OrderType();
          
OOP OrderOpenPrice();
          
OOT OrderOpenTime();
          
i_lot OrderLots();
          
ticket OrderTicket();
          
counterOfCloses OrderCloseCount(OOPOOT);
          
          
RefreshRates();
          
          if (
type == OP_SELL)
          {
           if (
i_takeProfit1 0)
               if (
Ask <= OOP i_takeProfit1 pt && counterOfCloses == 0)
                   
OrderClose(ticketTakeProfitLots(i_lot1), Aski_slippageBlack);
           if (
i_takeProfit2 0)
               if (
Ask <= OOP i_takeProfit2 pt && counterOfCloses == 1)
                   
OrderClose(ticketTakeProfitLots(i_lot2), Aski_slippageBlack);
           if (
i_takeProfit3 0)
               if (
Ask <= OOP i_takeProfit3 pt && counterOfCloses == 2)
                  
OrderClose(ticketTakeProfitLots(i_lot3), Aski_slippageBlack);
          }
          
          if (
type == OP_BUY)
          {
           if (
i_takeProfit1 0)
               if (
Bid >= OOP i_takeProfit1 pt && counterOfCloses == 0)
                   
OrderClose(ticketTakeProfitLots(i_lot1), Bidi_slippageBlack);
           if (
i_takeProfit2 0)
               if (
Bid >= OOP i_takeProfit2 pt && counterOfCloses == 1)
                   
OrderClose(ticketTakeProfitLots(i_lot2), Bidi_slippageBlack);
           if (
i_takeProfit3 0)
               if (
Bid >= OOP i_takeProfit3 pt && counterOfCloses == 2)
                   
OrderClose(ticketTakeProfitLots(i_lot3), Bidi_slippageBlack);
          }
  }

Касательно переменных объявленных на глобальном уровне, которых тут не видно вот что нужно:

PHP код:
extern int i_takeProfit1 10;                           // Величина 1-ого тейк-профита
extern int i_takeProfit2 20;                           // Величина 2-го тейк-профита
extern int i_takeProfit3 25;                            // Величина 3-го тейк-профита
extern int i_tp1Percent 50;                            // Процент от основного лота для закрытия 1-го тейк- профита
extern int i_tp2Percent 30;                            // Процент от основного лота для закрытия 2-го тейк-профита
extern int i_tp3Percent 20;                             // Процент от основного лота для закрытия 3-го тейк-профита
extern int i_slippage 2;
extern double i_lot 0.1;
#define SIGNAL_BUY                        0                          // Сигнал на покупку
#define SIGNAL_SELL                       1                          // Сигнал на продажу
#define SIGNAL_NO                        -1                          // Сигнала нет 
Это в init:

PHP код:
minLot MarketInfo(Symbol(), MODE_MINLOT);
    
maxLot MarketInfo(Symbol(), MODE_MAXLOT);
    
lotStep MarketInfo(Symbol(), MODE_LOTSTEP); 
[свернуть]

Последний раз редактировалось chocolate; 19.01.2013 в 13:23.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 14:43   #852 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от hoz Посмотреть сообщение
Тоже верно. Хотя 0 (нуль) как индекс это уж слишком.
Почему?
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 15:01   #853 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Почему?
Ну ты первый закрытый хотел узнать? Смысла не вижу.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 15:46   #854 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от hoz Посмотреть сообщение
Ну ты первый закрытый хотел узнать? Смысла не вижу.
Я же тебе предложил поэкспериментировать. Возьми хоть 0 хоть OrdersHistoryTotal()-1 всё равно не всегда получишь нужный результат.
Только не спеши с выводами. Даже если получишь 9 правильных из 10ти это уже не приемлемо. В какой момент будет ошибка я знаю. Теперь узнай ты.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 15:51   #855 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Ну попутно поэкспериментирую. Сейчас ломаю голову над тем кодом, что выше привёл. Абы что происходит вообще.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.01.2013, 22:10   #856 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
В общем-то, вопрос с дроблением лота снимаю. Я, всё-таки осилил это дело.

Появился вопрос.

Вот функция для открытия шортовых ордеров. На вид не обращайте внимания, ф-ция написано для отладки..

PHP код:
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
bool OpenSell()
{
  
int ticket = -1;
  
string myNote "Сов шортанул";
  
//int SL = OrderOpenPrice() + i_sl * pt;
  
  
while (IsTradeAllowed() == falseSleep(1000);
  
RefreshRates();
  
ticket OrderSend(Symbol(),OP_SELL,i_lot,Bid,3,0,0,myNote,i_myMagic,0,Red);
  if (
ticket && OrderSelect(ticket,SELECT_BY_TICKET) == true)
  {
    
IsBuyNow 0;
    if (
i_sl && OrderStopLoss() == 0)
    {
      if (!
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice() + i_sl pt,Digits),0,0))
       {
        Print (
"Ошибка установки первичного стопа для шортов "OrderType(), " - "GetLastError());
        Print(
"Ask = "Ask);
        Print(
"Bid = "Bid);
        Print(
"OrderOpenPrice() + i_sl * pt = "OrderOpenPrice() + i_sl pt);
       }
    }
  }
  return(
true);


Хочется сделать код красивее. В функцию модификации ордера вместо:

PHP код:
NormalizeDouble(OrderOpenPrice() + i_sl pt,Digits
Чтоб было тока переменная типа:

PHP код:
NormalizeDouble(SL,Digits
Ну а SL где-то выше присвоить значение OrderOpenPrice() + i_sl * pt

Если это сделать вверху, то там значения цены открытия ордера ещё нет, и на выходе будет ерунда. Как тогда поступить?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.01.2013, 03:39   #857 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 917
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от hoz Посмотреть сообщение
В общем-то, вопрос с дроблением лота снимаю. Я, всё-таки осилил это дело.

Появился вопрос.

Вот функция для открытия шортовых ордеров. На вид не обращайте внимания, ф-ция написано для отладки..




Хочется сделать код красивее. В функцию модификации ордера вместо:

PHP код:
NormalizeDouble(OrderOpenPrice() + i_sl pt,Digits
Чтоб было тока переменная типа:

PHP код:
NormalizeDouble(SL,Digits
Ну а SL где-то выше присвоить значение OrderOpenPrice() + i_sl * pt

Если это сделать вверху, то там значения цены открытия ордера ещё нет, и на выходе будет ерунда. Как тогда поступить?
Вот так:
PHP код:
  if (i_sl && OrderStopLoss() == 0)
    {
double SL=OrderOpenPrice() + i_sl pt;
      if (!
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SL,Digits),0,0))
       {
        Print (
"Ошибка установки первичного стопа для шортов "OrderType(), " - "GetLastError());
        Print(
"Ask = "Ask);
        Print(
"Bid = "Bid);
        Print(
"OrderOpenPrice() + i_sl * pt = "OrderOpenPrice() + i_sl pt);
       }
    } 
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
hoz (15.01.2013)
Старый 15.01.2013, 05:24   #858 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Или вынеси NormalizeDouble во внешнюю функцию
double ND(double X) {return(NormalizeDouble(X, Digits));}
Тогда это будет выглядеть так
ND(OrderOpenPrice() + i_sl * pt)

А если объединишь 2 совета вместе то получится ND(SL)
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (15.01.2013), hoz (15.01.2013)
Старый 16.01.2013, 15:09   #859 (permalink)
Интересующийся
 
Аватар для Allis Amazing
 
Регистрация: 22.07.2012
Сообщений: 19
Репутация: 2
Allis Amazing
Сказал(а) спасибо: 33
Поблагодарили 1 раз в 1 сообщении
Поинты: 22
Приветствую всех! Подскажите, ежели кто знает, как может называться функция модификации открытых ордеров, и главное как её отобрать у Совы, что бы не нарушить весь дальнейший ход событий?)
Allis Amazing вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.01.2013, 16:31   #860 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от Allis Amazing Посмотреть сообщение
Приветствую всех! Подскажите, ежели кто знает, как может называться функция модификации открытых ордеров, и главное как её отобрать у Совы, что бы не нарушить весь дальнейший ход событий?)
Ты может быть не представляешь сколько вариантов понимания слова "отобрать"?
Если по нашему... "лишить чего-либо, то-есть, отнять у вас и приумножить у нас"... то просто надо найти все строки содержащие OrderModify и их удалить или закомментировать...
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Allis Amazing (16.01.2013), eevviill (16.01.2013)
Ответ

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


Опции темы

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

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



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


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