Ответ
 
Опции темы
11.10.2013, 17:37
Аватар для gzh
gzh Интересующийся
Регистрация: 11.12.2012 / Сообщений: 47
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Слушай, ты че постоянно меня критикуешь! это не так сделал, то не так сделал, тут не красиво написал. Если реально не хочешь помочь, проходи мимо. Какие у меня названия переменных, чем они тебе не нравятся ??? Нормальные названия! Просьба у меня была элементарная, помочь с простейшей функцией, тут делов на 5минут для опытного прогера, просто видать лень кому-то заниматься этим, в лом! Если реально есть че сказать по коду, ты говори, а если нет, то пропусти мое сообщение и все.
gzh вне форума Ответить с цитированиемОтветить с цитированием  
11.10.2013, 18:01
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,710 раз(а) / Репутация: 3706
Ты зря пылишь, замечание по поводу переменных правильное. Может только не в стиле хоза, вот и не очень ему понравилось или не правильно он выразил свою мысль. Так часто бывает.
Не смотря на твою вспыльчивость по поводу замечаний о переменных я тоже сделаю замечание. Не следует менять значения переменным extern. Лучше присвоить это значение другой переменной и с ней работать.
extern lot = 1;
А в функции lots = lot; и после этого условие if(...) lots = lots*2; Это просто пример
Что касается избавления от цикла:
На глобальном уровне объяви переменные
int TicketBuy, TicletSell;
Открывая ордер присваиваешь переменной тикет ордера.
TicketBuy = OrderSend(.............);
Потом проверку
if(OrderSelect(TicketBuy, SELECT_BY_TICKET) && OrderCloseTime() > 0 && OrderProfit() >= profit) lots = OrderLots() +...;

Это как увеличить лот после удачной сделки. А как его оставить без изменений вариантов несколько, свой навязывать не буду. И соответственно проверку ордера Sell отдельной строкой.
Ну и пока без обработки ошибок открытия ордера.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (11.10.2013)
11.10.2013, 18:54
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Сообщение от gzh Посмотреть сообщение
Слушай, ты че постоянно меня критикуешь! это не так сделал, то не так сделал, тут не красиво написал. Если реально не хочешь помочь, проходи мимо. Какие у меня названия переменных, чем они тебе не нравятся ??? Нормальные названия! Просьба у меня была элементарная, помочь с простейшей функцией, тут делов на 5минут для опытного прогера, просто видать лень кому-то заниматься этим, в лом! Если реально есть че сказать по коду, ты говори, а если нет, то пропусти мое сообщение и все.
То что ты злишся это понятно. У меня раньше была схожая ситуация. Я понимаю, что "очередной грааль" хочется написать быстрее, и желание бывает такое, что ждать ой как не хочется. Но я, в том момент, однажды, чутка приостановился и подумал,после того как написал уже не один эксперт.. вот тогда я понял, что не знал ничего по сути. И было очень грустно это осознавать Вот тогда я начал въезжать и вникать, чуть ли не с нуля, хотя за плечами уже были написаны эксперты.
Я хочу сказать, что не нужно кричать, что мол тебя тут так вот критикуют, а понять причину..
Кстати, я не в курсе, почему ты решил, что я на тебя гоню, т.к. мне это вообще не интересно.
Если есть эксперт, покажи принты..
Как сказал, Алексей, не нужно переменные extern менять. Так же советовать можно, зная логику. Что у тебя на уме я не в курсе. Нужно чтоб лот увеличивался при условии что профит ордера меньше переменной Profit. Нужно сверять последний ордер, или какой? Если да, то раздели задачу на 2 функции хотя бы.
1. Найди последний закрытый ордер.
2. Увеличивай лот при необходимости.
hoz вне форума Ответить с цитированиемОтветить с цитированием  
12.10.2013, 12:57
Аватар для Milord
Milord Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 702 раз(а) / Репутация: 705

По умолчанию Как сделать выключатель???


вопрос как написать код, чтобы работал выключатель части кода, например выключить условие с переменной В

PHP код:
extern int n=0;// включение 1,выключение 0

.
.
int start()
{
  if(
Bid>A)
   {
    if(
Bid>B)
     {
      
OrderSend(.....);
     }
   }

return(
0);

то есть тут показано положение выключателя n=1;
а ниже логика кода при n=0;
PHP код:
int start()
{
  if(
Bid>A)
   {
    
OrderSend(.....);
   }

return(
0);

подскажите плиз, как сделать чтобы работал выключатель n???

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума Ответить с цитированиемОтветить с цитированием  
12.10.2013, 13:22
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Сообщение от Milord Посмотреть сообщение
вопрос как написать код, чтобы работал выключатель части кода, например выключить условие с переменной В

PHP код:
extern int n=0;// включение 1,выключение 0

.
.
int start()
{
  if(
Bid>A)
   {
    if(
Bid>B)
     {
      
OrderSend(.....);
     }
   }

return(
0);

то есть тут показано положение выключателя n=1;
а ниже логика кода при n=0;
PHP код:
int start()
{
  if(
Bid>A)
   {
    
OrderSend(.....);
   }

return(
0);

подскажите плиз, как сделать чтобы работал выключатель n???
Я не понял общей картины. Напиши лучше словами и по пунктам что требуется реализовать, а там и подумаем как...
hoz вне форума Ответить с цитированиемОтветить с цитированием  
12.10.2013, 13:42
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от Milord Посмотреть сообщение
вопрос как написать код, чтобы работал выключатель части кода, например выключить условие с переменной В

PHP код:
extern int n=0;// включение 1,выключение 0

.
.
int start()
{
  if(
Bid>A)
   {
    if(
Bid>B)
     {
      
OrderSend(.....);
     }
   }

return(
0);

то есть тут показано положение выключателя n=1;
а ниже логика кода при n=0;
PHP код:
int start()
{
  if(
Bid>A)
   {
    
OrderSend(.....);
   }

return(
0);

подскажите плиз, как сделать чтобы работал выключатель n???
PHP код:
extern int n=0;// включение 1,выключение 0 



int start() 

  if(
Bid>A
   { 
    if(
Bid>|| !n
     { 
      
OrderSend(.....); 
     } 
   } 

return(
0); 

При n=0 условие Bid>B не играет роли, все равно 1 и ордерсенд сработает
При n=1 будет зависимость от "Bid>B"
Так надо или я че-то не понял?
Лучше бы n сделать тип bool со значениями TRUE (1) и FALSE (0), а то мало ли чего
ansol на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (12.10.2013)
12.10.2013, 13:42
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от Milord Посмотреть сообщение
вопрос как написать код, чтобы работал выключатель части кода, например выключить условие с переменной В

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

PHP код:
extern int n=0;// включение 1,выключение 0

.
.
int start()
{
  if(
Bid>A)
   {
    if(
Bid>B)
     {
      
OrderSend(.....);
     }
   }

return(
0);

то есть тут показано положение выключателя n=1;
а ниже логика кода при n=0;
PHP код:
int start()
{
  if(
Bid>A)
   {
    
OrderSend(.....);
   }

return(
0);

[свернуть]

подскажите плиз, как сделать чтобы работал выключатель n???
Ваше сиятельство, я не понял в чем трудность.
if(n==0 || Bid>B) {OrderSend();}
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (12.10.2013)
15.10.2013, 16:01
Аватар для expforex
expforex Программиров
Регистрация: 11.01.2009 / Сообщений: 2,134
Поблагодарили 2,092 раз(а) / Репутация: 2150
Сообщение от kamilkz Посмотреть сообщение
Уважаемые программисты!
Объединил два советника (OM_2WAY_v3.6_INFO и MO 27,04,13_edu) в один (OM_2WAY_v3.6+Razrulivatel), скомпелировал, вроде все нормально без ошибок, но вот беда – полученный новый советник (OM_2WAY_v3.6+Razrulivatel) всегда открывает первый ордер размером 1 лот, независимо от того какое значение имеет StartLot или UseAutoLot (false или true), хотя (OM_2WAY_v3.6_INFO), без изменений работает нормально и ставит ордера в зависимости от переменных StartLot или UseAutoLot. Подскажите, в чем проблема?
код открытия лота 1 :
Цитата:
int init_Razrulivatel(){
if (Digits == 3 || Digits == 5) {
мин_шаг_усредняющих = 10 * мин_шаг_усредняющих;
мин_прибыль = 10 * мин_прибыль;
}
gd_148 = MarketInfo(Symbol(), MODE_MINLOT);
gd_140 = MarketInfo(Symbol(), MODE_MAXLOT);
gi_220 = MarketInfo(Symbol(), MODE_STOPLEVEL);
gs_212 = " " + AccountCurrency();
//gi_224 = AccountNumber();
if (IsTesting()) f0_2(OP_BUY, 1, NormalizeDouble(Ask, Digits));
убери
if (IsTesting()) f0_2(OP_BUY, 1, NormalizeDouble(Ask, Digits));

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Советники на заказ! admin@expforex.com
Говорим Спасибо
expforex вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (15.10.2013)
17.10.2013, 19:22
Аватар для Leonup
Leonup Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5

По умолчанию Помогите разобраться!


Здравствуйте!

Решил разобраться в следующей ситуации.
Допустим:
Hp – это высота свечи в пунктах, вычисленная как разница между High и Low: Hp = (High - Low)/Point;
Dist – это внешняя переменная, задаваемая в пунктах.
И решил найти разницу: Hp – Dist.
Все это сделал отдельным "советником", через Print.
Print("Hp - Dist= ", (Hp - Dist)/Point);
И в логах вижу, что Hp и Dist отображаются правильно, а вот разница Hp – Dist отображается неверно.
Hp = 741 пункт,
Dist =100 пунктов,
Hp – Dist = 64100000.
Как такое может быть?
Где у меня ошибка?

Хотел для наглядности загрузить файл log, но что-то не получается.
Файл, видно, что загружается, а где он - неизвестно.

Последний раз редактировалось Leonup; 17.10.2013 в 19:30.
Leonup вне форума Ответить с цитированиемОтветить с цитированием  
17.10.2013, 20:02
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от Leonup Посмотреть сообщение
Здравствуйте!

Решил разобраться в следующей ситуации.
Допустим:
Hp – это высота свечи в пунктах, вычисленная как разница между High и Low: Hp = (High - Low)/Point;
Dist – это внешняя переменная, задаваемая в пунктах.
И решил найти разницу: Hp – Dist.
Все это сделал отдельным "советником", через Print.
Print("Hp - Dist= ", (Hp - Dist)/Point);
И в логах вижу, что Hp и Dist отображаются правильно, а вот разница Hp – Dist отображается неверно.
Hp = 741 пункт,
Dist =100 пунктов,
Hp – Dist = 64100000.
Как такое может быть?
Где у меня ошибка?

Хотел для наглядности загрузить файл log, но что-то не получается.
Файл, видно, что загружается, а где он - неизвестно.
Ой, тьфу.
Просто отнимаешь Hp - Dist

Последний раз редактировалось eevviill; 17.10.2013 в 20:09.
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
alexshell (17.10.2013), Leonup (18.10.2013)
18.10.2013, 05:29
Аватар для Leonup
Leonup Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5
Сообщение от eevviill Посмотреть сообщение
Ой, тьфу.
Просто отнимаешь Hp - Dist
Спасибо. Все верно. Ступил .
Leonup вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.10.2013)
18.10.2013, 13:18
Аватар для Andy200577
Andy200577 Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
День добрый!
Хочу спросить у знающих людей такой момент.
Есть функции MQL4, использующие отдельные массивы данных, например, iMAOnArray или iBandsOnArray. Так вот, если я хочу предположим наложить МА на Стохастик (как пример), то для этого я перетаскиваю МА в окно Стохастика и выбираю в пункте "Применить к:" - First Indicator's Data в итоге МА рисуется прямо в окне на Стохастике. И я бы хотел получить данные этой МАшки в коде MQL4.
Насколько я понял, это делается как раз с помощью функции iMAOnArray , но вот непонятно - какой при этом массив использует МА, ведь у Стохастика как известно 2 буфера и соответственно 2 массива данных?? Не понял пока какой в данном случает массив нужно использовать для iMAOnArray, если подставлять один и другой массивы (MODE_MAIN или MODE_SIGNAL), то значения МА не совпадают с тем, что на рисунке в окне стохастика. Если один буфер вывода (как например у CCI), тогда всё понятно, но что делать, если буферов вывода 2 и более? Помогите пожалуйста разобраться.
Andy200577 вне форума Ответить с цитированиемОтветить с цитированием  
18.10.2013, 14:23
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от Andy200577 Посмотреть сообщение
День добрый!
Хочу спросить у знающих людей такой момент.
Есть функции MQL4, использующие отдельные массивы данных, например, iMAOnArray или iBandsOnArray. Так вот, если я хочу предположим наложить МА на Стохастик (как пример), то для этого я перетаскиваю МА в окно Стохастика и выбираю в пункте "Применить к:" - First Indicator's Data в итоге МА рисуется прямо в окне на Стохастике. И я бы хотел получить данные этой МАшки в коде MQL4.
Насколько я понял, это делается как раз с помощью функции iMAOnArray , но вот непонятно - какой при этом массив использует МА, ведь у Стохастика как известно 2 буфера и соответственно 2 массива данных?? Не понял пока какой в данном случает массив нужно использовать для iMAOnArray, если подставлять один и другой массивы (MODE_MAIN или MODE_SIGNAL), то значения МА не совпадают с тем, что на рисунке в окне стохастика. Если один буфер вывода (как например у CCI), тогда всё понятно, но что делать, если буферов вывода 2 и более? Помогите пожалуйста разобраться.
Встроенные индикаторы, позволяющие "Применить к:" применяются к нулевому буферу, независимо от сколько их там всего.
iMAOnArray использует ваш массив. Чем вы его заполните, то и будет сглажено. Судя по тому, что про заполнение этого массива нет ни слова, вероятно тут и проблема. Покажите, как у вас вызывается iMAOnArray() и как инициализируются ее параметры.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
18.10.2013, 14:45
Аватар для Andy200577
Andy200577 Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от qqmber Посмотреть сообщение
Встроенные индикаторы, позволяющие "Применить к:" применяются к нулевому буферу, независимо от сколько их там всего.
iMAOnArray использует ваш массив. Чем вы его заполните, то и будет сглажено. Судя по тому, что про заполнение этого массива нет ни слова, вероятно тут и проблема. Покажите, как у вас вызывается iMAOnArray() и как инициализируются ее параметры.
Заполняю массив предположим вот такой строчкой:
for(int bar=0; bar<1000; bar++) Stoh[bar] = iStochastic(Symbol(),0,Kfast,Dfast,Zfast,MODE_SMA, 0,MODE_MAIN,bar);

где, Kfast,Dfast,Zfast - переменные стохастика. Ну и соответственно массив Stoh[1000] должен быть входным массивом для iMAOnArray.
Я так это понимаю.
Andy200577 вне форума Ответить с цитированиемОтветить с цитированием  
18.10.2013, 15:49
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от Andy200577 Посмотреть сообщение
Заполняю массив предположим вот такой строчкой:
for(int bar=0; bar<1000; bar++) Stoh[bar] = iStochastic(Symbol(),0,Kfast,Dfast,Zfast,MODE_SMA, 0,MODE_MAIN,bar);

где, Kfast,Dfast,Zfast - переменные стохастика. Ну и соответственно массив Stoh[1000] должен быть входным массивом для iMAOnArray.
Я так это понимаю.
Заинтриговался, но воспроизвести не смог. Код ниже отрабатывает все как положено. Может вас смущает, что у машки и у стохастика разные шкалы? В Data Window расхождение есть?
Код:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern int K=5,D=3,Z=3,M=0;
extern int P=3;

double ma[],st[] ;

int init() {
   IndicatorBuffers(2);
   SetIndexBuffer(0,ma);
   SetIndexBuffer(1,st);
}
int start() {
int i;
int limit=Bars-IndicatorCounted();
   for(i=0; i<limit; i++) st[i]=iStochastic(NULL,0,K,D,Z,0,0,M,i);
   for(i=0; i<limit; i++) ma[i]=iMAOnArray(st,0,P,0,0,i);
}
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.10.2013)
18.10.2013, 16:30
Аватар для Andy200577
Andy200577 Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от qqmber Посмотреть сообщение
Заинтриговался, но воспроизвести не смог. Код ниже отрабатывает все как положено. Может вас смущает, что у машки и у стохастика разные шкалы? В Data Window расхождение есть?
Код:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern int K=5,D=3,Z=3,M=0;
extern int P=3;

double ma[],st[] ;

int init() {
   IndicatorBuffers(2);
   SetIndexBuffer(0,ma);
   SetIndexBuffer(1,st);
}
int start() {
int i;
int limit=Bars-IndicatorCounted();
   for(i=0; i<limit; i++) st[i]=iStochastic(NULL,0,K,D,Z,0,0,M,i);
   for(i=0; i<limit; i++) ma[i]=iMAOnArray(st,0,P,0,0,i);
}
Так в том и дело, что в связи с расхождением с Data Windows у меня и возник этот вопрос. Считать то он считает, но не сходится с показаниями МА в окне Data Windows. Вот мне и непонятно какой именно массив нужно использовать, чтобы добиться полного совпадения.
Andy200577 вне форума Ответить с цитированиемОтветить с цитированием  
18.10.2013, 16:46
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от Andy200577 Посмотреть сообщение
Так в том и дело, что в связи с расхождением с Data Windows у меня и возник этот вопрос. Считать то он считает, но не сходится с показаниями МА в окне Data Windows. Вот мне и непонятно какой именно массив нужно использовать, чтобы добиться полного совпадения.
Я не совсем понял, мой код на вопрос ваш про массив ответил? В нем все сходится, и цифры в Data Window, и графики друг на друга точно ложатся, если сделать им одинаковую шкалу.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.10.2013)
18.10.2013, 17:03
Аватар для Andy200577
Andy200577 Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Вот элементарный тестовый советник и картинка с его работой - _http://yadi.sk/d/cbMVHSmlBBV9f
он просто выводит на Print значение MA на каком-то баре, а данном случае [1]. Почему значения не совпадают, где ошибка?

Последний раз редактировалось NSerega; 18.10.2013 в 19:01.
Andy200577 вне форума Ответить с цитированиемОтветить с цитированием  
18.10.2013, 18:13
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Andy200577 Посмотреть сообщение
Вот элементарный тестовый советник и картинка с его работой - _http://yadi.sk/d/cbMVHSmlBBV9f
, он просто выводит на Print значение MA на каком-то баре, а данном случае [1]. Почему значения не совпадают, где ошибка?
Про направление индексации массива забыл?
bool ArraySetAsSeries( double&array[], bool set)В справочнике даже пример есть.

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

Последний раз редактировалось NSerega; 18.10.2013 в 20:32.
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Andy200577 (19.10.2013), eevviill (19.10.2013)
19.10.2013, 05:38
Аватар для Andy200577
Andy200577 Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от Ugar Посмотреть сообщение
Про направление индексации массива забыл?
bool ArraySetAsSeries( double&array[], bool set)В справочнике даже пример есть.
Спасибо! Наверное это ответ - ArraySetAsSeries - Документация на MQL4 .
В понедельник проверю.
Andy200577 вне форума Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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