Ответ
 
Опции темы
Старый 30.11.2013, 16:02   #2021 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Телочка Посмотреть сообщение
Вот что получилось. Супер!
Молодец, цвета подобраны толково.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2013, 11:13   #2022 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Подскажите пж, код расчета лота.
Кто каким пользуется?
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2013, 13:30   #2023 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
MarketInfo(Symbol(),MODE_MARGINREQUIRED)
MODE_MARGINREQUIRED 32 Размер свободных средств, необходимых для открытия 1 лота на покупку
Если средства поделить на это дело, то узнаешь, на сколько лотов хватит бабла
Или что интересует-то?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (01.12.2013), matro3 (01.12.2013)
Старый 01.12.2013, 13:32   #2024 (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™
Сообщение от matro3 Посмотреть сообщение
Подскажите пж, код расчета лота.
Кто каким пользуется?
PHP код:
extern double Lot 0.1;
extern bool use_percent_of_deposit false;
extern double Risk 1;
int nor_lot=2;

//////////////////////////////////////////////////////////////
void init()
{  
if(
MarketInfo(Symbol(),MODE_LOTSTEP)==0.1nor_lot=1;
}

//////////////////////////////////////////////////////////////
void start()
{  
if(
MarketInfo(Symbol(),MODE_LOTSTEP)==0.1nor_lot=1;
//расчёт лота от % депозита
 
if(use_percent_of_depositLot=GetLot();
}

///////////////////////////////
double GetLot()
{
 
double Free    =AccountFreeMargin();
 
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
 
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
 
double Step    =MarketInfo(Symbol(),MODE_LOTSTEP);
 
double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
 if(
Lot<Min_LotLot=Min_Lot;
 if(
Lot>Max_LotLot=Max_Lot;
 if(
Lot*One_Lot>Free) return(0.0);
 
return(
NormalizeDouble(Lot,nor_lot));

eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
matro3 (01.12.2013)
Старый 01.12.2013, 15:15   #2025 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Сообщение от eevviill Посмотреть сообщение
PHP код:
 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;

В этой строке в скобках делим на Step а потом умножаем на него.
Конечно идет округление, но они же сократятся (согласно тому что мы проходим в школе на математике).
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2013, 18:05   #2026 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от matro3 Посмотреть сообщение
В этой строке в скобках делим на Step а потом умножаем на него.
Конечно идет округление, но они же сократятся (согласно тому что мы проходим в школе на математике).
В старших классах вам расскажут, что аргументы нелинейной функции не сокращаются с ее множителями.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (01.12.2013)
Старый 01.12.2013, 19:56   #2027 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
)))
Спасибо. А теперь волнующий вопрос:
Нужно вычислить профит ордера за минусом комиссии, спреда, свопа.

PHP код:
OrderProfit()-OrderCommission()-OrderSwap()-MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_TICKVALUE)*OrderLots(); 
Чую что как-то так, но не уверен.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2013, 20:35   #2028 (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
Сообщение от matro3 Посмотреть сообщение
)))
Спасибо. А теперь волнующий вопрос:
Нужно вычислить профит ордера за минусом комиссии, спреда, свопа.

PHP код:
OrderProfit()-OrderCommission()-OrderSwap()-MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_TICKVALUE)*OrderLots(); 
Чую что как-то так, но не уверен.
Прибыль ордера в валюте
OrderProfit()+OrderCommission()+OrderSwap()

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (01.12.2013)
Старый 01.12.2013, 21:15   #2029 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Да, верно. Комиссия ведь отрицательна.
А как учесть спред?
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2013, 22:58   #2030 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Вот спрэд в валюте котировки.
PHP код:
MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (02.12.2013)
Старый 02.12.2013, 05:04   #2031 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от matro3 Посмотреть сообщение
Да, верно. Комиссия ведь отрицательна.
А как учесть спред?
Спред уже учтен в OrderProfit().
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (02.12.2013)
Старый 02.12.2013, 05:08   #2032 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от matro3 Посмотреть сообщение
Да, верно. Комиссия ведь отрицательна.
А как учесть спред?
При открытии ордера ордерпрофит равен минус спреду, т.е. ордер профит показывает реальный профит с учетом спреда, ничего отдельно считать не надо
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (02.12.2013)
Старый 03.12.2013, 23:04   #2033 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Вопрос ПРОГГЕРАМ?)


уважаемые коллеги, не пинайте меня сильно, я начинающий проггер
вопрос на тему "Условного оператора" if-else, в справке MQL4 написана форма записи такая:
if (выражение)
оператор1
else
оператор2

нахожу запись в других разделах справки такого вида:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderClose(order_id,1,Ask,3,Red);
return(0);
}
и вроде все было ясно, до тех пор, пока не увидел такую запись
if(IsOptimization()) return(0);

помогите плиз, понять логику работы этой строчки, и почему не пишется знаки <>+-=
ЗАРАНЕЕ СПАСИБО!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 03.12.2013 в 23:07.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.12.2013, 04:04   #2034 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Выражение для if должно возвращать TRUE или FALSE, как, например, результат сравнения. IsOptimisаtion() возвращает TRUE, если идет оптимизация и FALSE, если не идет, т.е. вся строка выполняет возврат из подпрограммы в случае работы в режиме оптимизации.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (04.12.2013), Milord (04.12.2013)
Старый 04.12.2013, 16:30   #2035 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от ansol Посмотреть сообщение
Выражение для if должно возвращать TRUE или FALSE, как, например, результат сравнения. IsOptimisаtion() возвращает TRUE, если идет оптимизация и FALSE, если не идет, т.е. вся строка выполняет возврат из подпрограммы в случае работы в режиме оптимизации.
то есть данная строка эквивалентна записи:
if(IsOptimization()==TRUE)
{
return(0);
}
но почему так и не записать???

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.12.2013, 16:36   #2036 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Milord Посмотреть сообщение
то есть данная строка эквивалентна записи:
if(IsOptimization()==TRUE)
{
return(0);
}
но почему так и не записать???
Да ради бога!
А зачем?
Кстати, если Х равно 0, то if(X) не выполнится или if(!X) наоборот, выполнится, т.е. 0 - это FALSE, а не 0 - TRUE
Очень удобно!
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (05.12.2013)
Старый 05.12.2013, 07:38   #2037 (permalink)
Новичок форума
 
Аватар для Maxsims
 
Регистрация: 25.11.2013
Сообщений: 24
Репутация: 6
Maxsims
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 3 сообщениях
Поинты: 34
Здравствуйте. Прошу помочь в одном вопросе. Как добавить функция в советник, чтобы после получения стоп-лосса, сов не спешил открывать сделки, а ждал какое-нибудь заданное время. А то часто бывает стоп получен и тут же сов ставит снова ордер и снова стоп получает, и так раза по 3-4 подряд, когда сильная коррекция идет.
Maxsims вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 05.12.2013, 08:13   #2038 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Maxsims Посмотреть сообщение
Здравствуйте. Прошу помочь в одном вопросе. Как добавить функция в советник, чтобы после получения стоп-лосса, сов не спешил открывать сделки, а ждал какое-нибудь заданное время. А то часто бывает стоп получен и тут же сов ставит снова ордер и снова стоп получает, и так раза по 3-4 подряд, когда сильная коррекция идет.
1. Можно пропускать пипсы, т.е. подождать пока цена отползет на N*Point
2. Можно пропускать тики, т.е. подождать, пока пройдет N тиков по значению Volume()
3. можно просто "заморозить" сову на несколько (милли)секунд Sleep()

Ммм?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (05.12.2013)
Старый 05.12.2013, 14:05   #2039 (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™
Как такое может быть?
FirstVisibleBar() нету функции, а компилятор не ругается.

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

PHP код:
//+------------------------------------------------------------------+
//|                                                  ChartScroll.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
//#include <WinUser32.mqh>

 //dobavleno
//#import "user32.dll"
    //int RegisterWindowMessageA (string param);
//#import
 //konec dobavki


int      MT4InternalMsg=0;
datetime first_pos;
int      periods[5]={ PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1 };
int      handles[5];


int init()
  {
//----
   //MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
   
Print("Registered message ",MT4InternalMsg);
   
first_pos=Time[FirstVisibleBar()];
//----
   
for(int i=0i<5i++)
     {
      if(
periods[i]!=Period())
        {
         
handles[i]=WindowHandle(Symbol(),periods[i]);
         if(
handles[i]==NULL) Print(Symbol(),",",periods[i]," not found");
        }
      else 
handles[i]=NULL;
     }
//----
   
return(0);
  }

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   
datetime pos;
//----
   
while(!IsStopped())
     {
      
pos=Time[FirstVisibleBar()];
      if(
first_pos!=pos)
        {
         
first_pos=pos;
         for(
int i=0i<5i++)
           {
            
//if(handles[i]!=NULL) PostMessageA(handles[i],MT4InternalMsg,55,first_pos+periods[i]*60);
           
}
        }
      
Sleep(100);
     }
//----
   
return(0);
  }
//+------------------------------------------------------------------+ 
[свернуть]
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 05.12.2013, 14:14   #2040 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от eevviill Посмотреть сообщение
Как такое может быть?
FirstVisibleBar() нету функции, а компилятор не ругается.
Это устаревшая функция, в 200 билде ее переименовали в WindowFirstVisibleBar().
Компилятор, тем не менее, про нее помнит и будет корректно обрабатывать.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ansol (05.12.2013), eevviill (05.12.2013)
Ответ

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


Опции темы

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

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



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


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