Ответ
 
Опции темы
Старый 14.07.2014, 09:20   #2881 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32

Вопрос ошибка '{' - function definition unexpected


Всем привет! Начинаю писать свой первый скрипт, и первая проблема - метаэдитор ругается на запятые при перечислении выражений"," в операторе IF
Кто знает, в чем проблема?
#property strict уже убрал - без результатов.
Заранее благодарен за помощь

В мануале написано, что перечислять можно через запятую. Или я что-то не так понял?
Не хочется писать несколько операторов "If" для каждого выражения, если все можно написать в одном..

На данной стадии код выглядит так:

extern int MaxRisk=2; // максимальный риск в % от депозита
extern int TP=90; // TakeProfit
extern int SL=35; // StopLoss
extern int TS=35; //
bool ordersell=false; // разрешение на открытие ордера на продажу
bool orderbuy=false; // разрешение на открытие ордера на покупку
double Lot=0; // Рассчитанное значение размера открытия позиции

void OnTick(void)
{
if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят

double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
Lot =MathFloor(Free*MaxRisk/100/One_Lot/Step)*Step;
if(Lot>Max_Lot) Lot=Max_Lot;// размер лота не превышает максимально разрешенный
if(Lot<Min_Lot) orderbuy=false, ordersell=false, Alert("Не достаточно средств для совершения операции согласно заданным условиям риска");
return;
}

Последний раз редактировалось Александр_Стручков; 14.07.2014 в 10:07.
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.07.2014, 10:23   #2882 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Цитата:
В мануале написано, что перечислять можно через запятую. Или я что-то не так понял?
Это где такое написано?
Выражения разделяются точкой с запятой ;
Простой запятой разделяются аргументы функций, не считая еще кое-какой экзотики.
Ваш фрагмент должен выглядеть примерно так:
Код:
if(Lot<Min_Lot) {orderbuy=false; ordersell=false; Alert("Не достаточно средств для совершения операции согласно заданным условиям риска");}
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Старый 14.07.2014, 20:36   #2883 (permalink)
Новичок форума
 
Аватар для ctmcn
 
Регистрация: 02.04.2011
Сообщений: 35
Репутация: 7
ctmcn
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 6 сообщениях
Поинты: 36
AlexeyVik
Подскажите, если не трудно, почему на некоторых валютных парах наблюдается не полное заполнение гистограмой индикатора своего окна. Должно быть мин.0-1макс. полностью, а, например, на USDCHF - 0-0,95. Чтобы не изменять вручную границу максимума, какой параметр в коде за это отвечает ?
P.S. Индикатор прикреплял выше "Bollinger Band Stop..."
С уважением.
ctmcn вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.07.2014, 06:23   #2884 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от ctmcn Посмотреть сообщение
AlexeyVik
Подскажите, если не трудно, почему на некоторых валютных парах наблюдается не полное заполнение гистограмой индикатора своего окна. Должно быть мин.0-1макс. полностью, а, например, на USDCHF - 0-0,95. Чтобы не изменять вручную границу максимума, какой параметр в коде за это отвечает ?
P.S. Индикатор прикреплял выше "Bollinger Band Stop..."
С уважением.
Посмотри indicator_maximum http://docs.mql4.com/ru/basis/preprosessor/compilation
Если не то что надо я посмотрю позже повнимательней.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ctmcn (15.07.2014)
Старый 15.07.2014, 07:34   #2885 (permalink)
Новичок форума
 
Аватар для ctmcn
 
Регистрация: 02.04.2011
Сообщений: 35
Репутация: 7
ctmcn
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 6 сообщениях
Поинты: 36
Сообщение от AlexeyVik Посмотреть сообщение
Посмотри indicator_maximum http://docs.mql4.com/ru/basis/preprosessor/compilation
Если не то что надо я посмотрю позже повнимательней.
Я сейчас вручную ставлю 0.1 и 0.9 для мин. и макс.
Прописать в коде эти значения - не совсем правильно будет. Надо найти причину.
А что значат значения в коде:
int start()
{
int shift,trend;
double smax[25000],smin[25000],bsmax[25000],bsmin[25000];
P.S. Я под себя правлю индикаторы - значения, цвета, уровни, выбросить лишнее и т.п. Со временем много стало понятным, но не все...
ctmcn вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.07.2014, 11:58   #2886 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от ctmcn Посмотреть сообщение
Я сейчас вручную ставлю 0.1 и 0.9 для мин. и макс.
Прописать в коде эти значения - не совсем правильно будет. Надо найти причину.
А что значат значения в коде:
int start()
{
int shift,trend;
double smax[25000],smin[25000],bsmax[25000],bsmin[25000];
P.S. Я под себя правлю индикаторы - значения, цвета, уровни, выбросить лишнее и т.п. Со временем много стало понятным, но не все...
Это объявлены переменные и 4 пользовательских массива, правда для чего они я так и не понял вполне можно было обойтись без них.
Вот подправил как понял тебя.
Вложения:
Тип файла: mq4 Bollinger Bands_Stop_v1.mq4 (6.4 Кб, 8 просмотров)
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ctmcn (15.07.2014)
Старый 15.07.2014, 15:39   #2887 (permalink)
Новичок форума
 
Аватар для ctmcn
 
Регистрация: 02.04.2011
Сообщений: 35
Репутация: 7
ctmcn
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 6 сообщениях
Поинты: 36
Сообщение от AlexeyVik Посмотреть сообщение
Это объявлены переменные и 4 пользовательских массива, правда для чего они я так и не понял вполне можно было обойтись без них.
Вот подправил как понял тебя.
Спс.
То, что надо.
ctmcn вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.07.2014, 20:16   #2888 (permalink)
Новичок форума
 
Аватар для Bob5
 
Регистрация: 12.01.2011
Сообщений: 77
Репутация: 26
Bob5
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 12 сообщениях
Поинты: 38
Здравствуйте. Если кто то знает, как обозначить
последнию точку соприкосновения линии
индикатора MA (Moving Average ) - с ценой,
так сказать MA == Bid, чтоб от нее начинать
отсчет. Просьба подсказать.
Bob5 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.07.2014, 20:54   #2889 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Bob5 Посмотреть сообщение
Здравствуйте. Если кто то знает, как обозначить
последнию точку соприкосновения линии
индикатора MA (Moving Average ) - с ценой,
так сказать MA == Bid, чтоб от нее начинать
отсчет. Просьба подсказать.
1. Нельзя сравнивать МА и цену на ==. Значение МА чаще всего будет между пунктами. Значит цена почти всегда пробивает МА.
2. Нельзя сравнивать double переменные на ==. Из за погрешностей будет работать нестабильно.
Честно говоря, из описания, я не понял для каких целей надо, нет подробностей.
В общем, если надо фиксировать в реальном времени, нужно сравнивать МА с ценой на последних тиках. Пробой сверху вниз на прошлом тике цена была больше МА, на текущем тике меньше или равно. Пробой снизу вверх наоборот.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Bob5 (15.07.2014)
Старый 15.07.2014, 23:33   #2890 (permalink)
Новичок форума
 
Аватар для Bob5
 
Регистрация: 12.01.2011
Сообщений: 77
Репутация: 26
Bob5
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 12 сообщениях
Поинты: 38
Спасибо Ugar за разъяснение, вроде понятно.
Bob5 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.07.2014, 10:45   #2891 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32

По умолчанию В чем различие?


Всем доброго времени! Не сочтите за глупого, я еще только учусь
На этом сайте нашел скрипт на закрытие всех открытых ордеров. Его код мне показался слишком громоздким и, конечно же, не понятным, т.к. я только начинаю изучать данный язык.

Написал свой код более простой. Проверил - работает. Прошу опытных людей ответить, в чем разница, если оба скрипта в итоге просто закрывают все открытые ордеры? Заранее спасибо за ответ.

Код моего скрипта
PHP код:
#property copyright
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
int i=OrdersTotal();
 for(
i--;i>=0;i--)
   {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
   if (
OrderType()==OP_SELLOrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),3,CLR_NONE);
   if (
OrderType()==OP_BUYOrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,CLR_NONE);
   
Sleep(100);
   }
  }
//+------------------------------------------------------------------+ 

Скрипт с этого сайта

PHP код:
//+------------------------------------------------------------------+
//|                                               CloseAllOrders.mq4 |
//|                       Copyright © 2008, PRMQuotes Software Corp. |
//|                                           Jedimedic77@gmail.com  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, PRMQuotes Software Corp."
#property link      ""
//+------------------------------------------------------------------+
//| EX4 imports                                                      |
//+------------------------------------------------------------------+
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| global variables to program:                                     |
//+------------------------------------------------------------------+
double Price[2];
int    giSlippage;
bool   CloseOpenOrders true;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start() {
  
int iOrders=OrdersTotal()-1i;
  
  if(
CloseOpenOrders) {
    for(
i=iOrdersi>=0i--) {
      if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=OP_SELL) && GetMarketInfo() && !OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],giSlippage)) Print(OrderError());
    }
  }
}
//+------------------------------------------------------------------+
//| Function..: OrderError                                           |
//+------------------------------------------------------------------+
string OrderError() {
  
int iError=GetLastError();
  return(
StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError)));
}
//+------------------------------------------------------------------+
//| Function..: GetMarketInfo                                        |
//+------------------------------------------------------------------+
bool GetMarketInfo() {
  
RefreshRates();
  
Price[0]=MarketInfo(OrderSymbol(),MODE_ASK);
  
Price[1]=MarketInfo(OrderSymbol(),MODE_BID);
  
double dPoint=MarketInfo(OrderSymbol(),MODE_POINT);
  if(
dPoint==0) return(false);
  
giSlippage=(Price[0]-Price[1])/dPoint;
  return(
Price[0]>0.0 && Price[1]>0.0);
}
//+------------------------------------------------------------------+ 
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.07.2014, 15:03   #2892 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Александр_Стручков Посмотреть сообщение
Написал свой код более простой. Проверил - работает. Прошу опытных людей ответить, в чем разница, если оба скрипта в итоге просто закрывают все открытые ордеры? Заранее спасибо за ответ.
Нет особой разницы. Точно такой же новичок тренировался код писать, только он себе задачу не ставил сделать кратко, а хотел проскальзывание спредом ограничить. Это не образец правильного кода, таких тут на сайте море.
Смотрите стиль кодирования индикаторов и советников из комплекта к терминалу. Там во всяком случае профи писали, если и не идеально, то без больших глупостей.

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

PS Большие простыни кода сворачивайте тегами SPOILER
[свернуть]

Последний раз редактировалось qqmber; 16.07.2014 в 15:06.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Старый 16.07.2014, 15:34   #2893 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32
qqmber, спасибо за очередной ответ!

Начинаю понимать, что в программировании - как в разговоре - главное выразить мысль, а как выразить - дело второстепенное. И стиль разговора у всех разный..
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2014, 04:37   #2894 (permalink)
Активный участник
 
Аватар для tatianati
 
Регистрация: 10.01.2013
Сообщений: 20
Репутация: 40
tatianati
Сказал(а) спасибо: 12
Поблагодарили 39 раз(а) в 6 сообщениях
Поинты: 24
Здравствуйте.
Помогите.
Переставляю сетку разнонаправленных лимитных ордеров вслед за изменением показаний индикатора по low/high.
Подскажите, как проверку написать, чтобы если один лимитный ордер стал рыночным, остальные ордера того – же направления не переставлялись вслед за индикатором.
Вот так переставляю – переношу ордер на новый уровень.
PHP код:
for(i=OrdersTotal()-1i>=0i--) 
    {
      if(
OrderSelect(iSELECT_BY_POSMODE_TRADES));
    {
       if(
OrderMagicNumber()!=magic) continue; 
          if(
OrderSymbol()!=Symbol())continue;    
        
//пересчитываю количество ордеров:
        
if(OrderType()==OP_BUY)      {op_b++; }  
        if(
OrderType()==OP_SELL)     {op_s++; }  
        if(
OrderType()==OP_BUYLIMIT
           {
b_lm++; 
            if(
low>0.2 && OrderOpenPrice()!=low// какую проверку нужно?
              
{//переношу лимитник на новый уровень
               
modify_limit_order(OP_BUYLIMITlow);
                
//Sleep(1000*10);              }
           
}
        if(
OrderType()==OP_SELLLIMIT
           {
s_lm++; 
            if(
high>0.2 && OrderOpenPrice()!=high)
              {
//переношу лимитник на новый уровень
               
modify_limit_order(OP_SELLLIMIThigh);
                
//Sleep(1000*10);           
          
}
       }
    }        
  } 

Последний раз редактировалось tatianati; 17.07.2014 в 04:48.
tatianati вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2014, 08:40   #2895 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от tatianati Посмотреть сообщение
Здравствуйте.
Помогите.
Переставляю сетку разнонаправленных лимитных ордеров вслед за изменением показаний индикатора по low/high.
Подскажите, как проверку написать, чтобы если один лимитный ордер стал рыночным, остальные ордера того – же направления не переставлялись вслед за индикатором.
Вот так переставляю – переношу ордер на новый уровень.
PHP код:
for(i=OrdersTotal()-1i>=0i--) 
    {
      if(
OrderSelect(iSELECT_BY_POSMODE_TRADES));
    {
       if(
OrderMagicNumber()!=magic) continue; 
          if(
OrderSymbol()!=Symbol())continue;    
        
//пересчитываю количество ордеров:
        
if(OrderType()==OP_BUY)      {op_b++; }  
        if(
OrderType()==OP_SELL)     {op_s++; }  
        if(
OrderType()==OP_BUYLIMIT
           {
b_lm++; 
            if(
low>0.2 && OrderOpenPrice()!=low// какую проверку нужно?
              
{//переношу лимитник на новый уровень
               
modify_limit_order(OP_BUYLIMITlow);
                
//Sleep(1000*10);              }
           
}
        if(
OrderType()==OP_SELLLIMIT
           {
s_lm++; 
            if(
high>0.2 && OrderOpenPrice()!=high)
              {
//переношу лимитник на новый уровень
               
modify_limit_order(OP_SELLLIMIThigh);
                
//Sleep(1000*10);           
          
}
       }
    }        
  } 
Перед этим циклом с модификацией отложек надо написать ещё один цикл с обнаружением сработавших. Если сработавшие есть, цикл с модификацией можно не выполнять.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
tatianati (18.07.2014)
Старый 17.07.2014, 08:49   #2896 (permalink)
Новичок форума
 
Аватар для Red13
 
Регистрация: 13.08.2013
Сообщений: 92
Репутация: 24
Red13
Сказал(а) спасибо: 24
Поблагодарили 22 раз(а) в 13 сообщениях
Поинты: 89
Здравствуйте, помогите пожалуйста выбрать максимум, минимум из 3х элементов не используя массивы.
Конкретнее самую длинную свечу из 3х последних.

Последний раз редактировалось Red13; 17.07.2014 в 08:56.
Red13 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2014, 09:08   #2897 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Red13 Посмотреть сообщение
Здравствуйте, помогите пожалуйста выбрать максимум, минимум из 3х элементов не используя массивы.
Код:
MAX(a,b,c)=a<b?b<c?c:b:c<a?a:c;
MIN(a,b,c)=a>b?b>c?c:b:c>a?a:c;
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2014, 09:46   #2898 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32
Доброго времени всем! Пишу аналог трейлинг-стопа. Проблема такая: нужно узнать, было ли изменение стоп-лосса у открытого ордера. Как правильно описать условие проверки?

Описал функцию поочередного перебирания открытых ордеров и т.д.
Далее проверяем, изменялся ли стоп-лосс (SL-значение стоплосса в пунктах, которое мы устанавливаем каждому ордеру по стратегии):

Код:
if (OrderStopLoss()==OrderOpenPrice()+SL*Point)
И каждый раз условие срабатывает как не верное, не пойму почему..

Есть предположение, что нужно учитывать спред.. Но как его учтешь, если он плавающий?

Последний раз редактировалось Александр_Стручков; 17.07.2014 в 10:08.
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2014, 09:52   #2899 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Red13 Посмотреть сообщение
Здравствуйте, помогите пожалуйста выбрать максимум, минимум из 3х элементов не используя массивы.
Конкретнее самую длинную свечу из 3х последних.
Простой способ:
Код:
double b=0;
uchar a, n=0;
for(a=0; a<3; a++)
{
if(b<High[a]-Low[a])
{
n=a;
b=High[a]-Low[a];
}}
В n будет номер самого длинного бара.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Red13 (17.07.2014)
Старый 17.07.2014, 10:23   #2900 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Александр_Стручков Посмотреть сообщение

Код:
if (OrderStopLoss()==OrderOpenPrice()+SL*Point)
Величины с плавающей точкой нельзя сравнивать на равенство, поскольку они хранятся округленными до ближайшей степени двойки. Попробуйте так
Код:
if (MathAbs(OrderStopLoss() - OrderOpenPrice()+SL*Point) < Point)
В stdlib есть функция CompareDoubles, можно ее использовать.

Последний раз редактировалось qqmber; 17.07.2014 в 10:26.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Ответ

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


Опции темы

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

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



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


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