Ответить
11.10.2013, 17:37
Аватар для gzh
gzh gzh вне форума Интересующийся
Регистрация: 11.12.2012 / Сообщений: 47
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Слушай, ты че постоянно меня критикуешь! это не так сделал, то не так сделал, тут не красиво написал. Если реально не хочешь помочь, проходи мимо. Какие у меня названия переменных, чем они тебе не нравятся ??? Нормальные названия! Просьба у меня была элементарная, помочь с простейшей функцией, тут делов на 5минут для опытного прогера, просто видать лень кому-то заниматься этим, в лом! Если реально есть че сказать по коду, ты говори, а если нет, то пропусти мое сообщение и все.
11.10.2013, 18:01
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Ты зря пылишь, замечание по поводу переменных правильное. Может только не в стиле хоза, вот и не очень ему понравилось или не правильно он выразил свою мысль. Так часто бывает.
Не смотря на твою вспыльчивость по поводу замечаний о переменных я тоже сделаю замечание. Не следует менять значения переменным 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 отдельной строкой.
Ну и пока без обработки ошибок открытия ордера.
11.10.2013, 18:54
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Слушай, ты че постоянно меня критикуешь! это не так сделал, то не так сделал, тут не красиво написал. Если реально не хочешь помочь, проходи мимо. Какие у меня названия переменных, чем они тебе не нравятся ??? Нормальные названия! Просьба у меня была элементарная, помочь с простейшей функцией, тут делов на 5минут для опытного прогера, просто видать лень кому-то заниматься этим, в лом! Если реально есть че сказать по коду, ты говори, а если нет, то пропусти мое сообщение и все.
То что ты злишся это понятно. У меня раньше была схожая ситуация. Я понимаю, что "очередной грааль" хочется написать быстрее, и желание бывает такое, что ждать ой как не хочется. Но я, в том момент, однажды, чутка приостановился и подумал,после того как написал уже не один эксперт.. вот тогда я понял, что не знал ничего по сути. И было очень грустно это осознавать Вот тогда я начал въезжать и вникать, чуть ли не с нуля, хотя за плечами уже были написаны эксперты.
Я хочу сказать, что не нужно кричать, что мол тебя тут так вот критикуют, а понять причину..
Кстати, я не в курсе, почему ты решил, что я на тебя гоню, т.к. мне это вообще не интересно.
Если есть эксперт, покажи принты..
Как сказал, Алексей, не нужно переменные extern менять. Так же советовать можно, зная логику. Что у тебя на уме я не в курсе. Нужно чтоб лот увеличивался при условии что профит ордера меньше переменной Profit. Нужно сверять последний ордер, или какой? Если да, то раздели задачу на 2 функции хотя бы.
1. Найди последний закрытый ордер.
2. Увеличивай лот при необходимости.
12.10.2013, 12:57
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 601
Поблагодарили 708 раз(а) / Репутация: 711

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

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

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 ШАГА (Лао Цзы)
12.10.2013, 13:22
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
вопрос как написать код, чтобы работал выключатель части кода, например выключить условие с переменной В

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???
Я не понял общей картины. Напиши лучше словами и по пунктам что требуется реализовать, а там и подумаем как...
12.10.2013, 13:42
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

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

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), а то мало ли чего
12.10.2013, 13:42
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
вопрос как написать код, чтобы работал выключатель части кода, например выключить условие с переменной В

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

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();}
15.10.2013, 16:01
Аватар для expforex
expforex expforex вне форума Программиров
Регистрация: 11.01.2009 / Сообщений: 2,136
Поблагодарили 2,103 раз(а) / Репутация: 2161
Уважаемые программисты!
Объединил два советника (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
Говорим Спасибо
17.10.2013, 19:22
Аватар для Leonup
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.
17.10.2013, 20:02
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

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

Решил разобраться в следующей ситуации.
Допустим:
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.
18.10.2013, 05:29
Аватар для Leonup
Leonup Leonup вне форума Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5
Ой, тьфу.
Просто отнимаешь Hp - Dist
Спасибо. Все верно. Ступил .
18.10.2013, 13:18
Аватар для Andy200577
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 и более? Помогите пожалуйста разобраться.
18.10.2013, 14:23
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
День добрый!
Хочу спросить у знающих людей такой момент.
Есть функции MQL4, использующие отдельные массивы данных, например, iMAOnArray или iBandsOnArray. Так вот, если я хочу предположим наложить МА на Стохастик (как пример), то для этого я перетаскиваю МА в окно Стохастика и выбираю в пункте "Применить к:" - First Indicator's Data в итоге МА рисуется прямо в окне на Стохастике. И я бы хотел получить данные этой МАшки в коде MQL4.
Насколько я понял, это делается как раз с помощью функции iMAOnArray , но вот непонятно - какой при этом массив использует МА, ведь у Стохастика как известно 2 буфера и соответственно 2 массива данных?? Не понял пока какой в данном случает массив нужно использовать для iMAOnArray, если подставлять один и другой массивы (MODE_MAIN или MODE_SIGNAL), то значения МА не совпадают с тем, что на рисунке в окне стохастика. Если один буфер вывода (как например у CCI), тогда всё понятно, но что делать, если буферов вывода 2 и более? Помогите пожалуйста разобраться.
Встроенные индикаторы, позволяющие "Применить к:" применяются к нулевому буферу, независимо от сколько их там всего.
iMAOnArray использует ваш массив. Чем вы его заполните, то и будет сглажено. Судя по тому, что про заполнение этого массива нет ни слова, вероятно тут и проблема. Покажите, как у вас вызывается iMAOnArray() и как инициализируются ее параметры.
18.10.2013, 14:45
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Встроенные индикаторы, позволяющие "Применить к:" применяются к нулевому буферу, независимо от сколько их там всего.
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.
Я так это понимаю.
18.10.2013, 15:49
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Заполняю массив предположим вот такой строчкой:
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);
}
18.10.2013, 16:30
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Заинтриговался, но воспроизвести не смог. Код ниже отрабатывает все как положено. Может вас смущает, что у машки и у стохастика разные шкалы? В 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. Вот мне и непонятно какой именно массив нужно использовать, чтобы добиться полного совпадения.
18.10.2013, 16:46
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Так в том и дело, что в связи с расхождением с Data Windows у меня и возник этот вопрос. Считать то он считает, но не сходится с показаниями МА в окне Data Windows. Вот мне и непонятно какой именно массив нужно использовать, чтобы добиться полного совпадения.
Я не совсем понял, мой код на вопрос ваш про массив ответил? В нем все сходится, и цифры в Data Window, и графики друг на друга точно ложатся, если сделать им одинаковую шкалу.
18.10.2013, 17:03
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Вот элементарный тестовый советник и картинка с его работой - _http://yadi.sk/d/cbMVHSmlBBV9f
он просто выводит на Print значение MA на каком-то баре, а данном случае [1]. Почему значения не совпадают, где ошибка?

Последний раз редактировалось NSerega; 18.10.2013 в 19:01.
18.10.2013, 18:13
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,968 раз(а) / Репутация: 2045
Вот элементарный тестовый советник и картинка с его работой - _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.
19.10.2013, 05:38
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Про направление индексации массива забыл?
bool ArraySetAsSeries( double&array[], bool set)В справочнике даже пример есть.
Спасибо! Наверное это ответ - ArraySetAsSeries - Документация на MQL4 .
В понедельник проверю.
Ответить

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


Опции темы

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

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



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


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