Ответить
24.10.2015, 10:34
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
Здравствуйте ув. форумчане. Помогите разобраться.

PHP код:
void OnTick()  {//---      double Pr=Bid;    if (OrdersTotal()<1)   {         double TP=Bid-TPr*Point;     double SL=Bid+SLr*Point;     int ticc=OrderSend(Symbol(),OP_SELL,0.01,Pr,3,SL,TP,"",0,0,CLR_NONE);     if(ticc<0) Print("Ошибка открытия ордера: ",GetLastError());                  }     bool o=OrderSelect(ticc,SELECT_BY_TICKET);      if ((OrderStopLoss()-Bid)>120*Point && OrdersTotal() )     {     double TP1=Bid-TPr*Point;     double SL1=Bid+100*Point;     bool res=OrderModify(OrderTicket(),OrderOpenPrice(),SL1,TP1,0,Blue);               if(!res)               Print("Ошибка модификации ордера. Код ошибки=",GetLastError());               else               Print("Цена Stop Loss ордера успешно модифицирована.");             }       } 
вот простой код для открытия ордера и его модифицирования в последущем. т.е как только цена уходит от стоплосса более чем на 120 пунктов , стоп перемещается на 100 пунктов вниз.
все это только начал писать, да по сути..почти с каждым тиком будет перемещать стоп, да и вообще это так..только начало...но это все потом доделаю. сейчас вопрос вот в чем...
выдает ошибку 'ticc' - undeclared identifier;
Но ведь она объявлена!!
Пробовал объявить переменную ticc в самом начале void OnTick(). ошибка исчезает.НО. программа срабатывает один раз! выставляет ордер , тут же его меняет и все...при следующем тике ticc уже равна 0 и бполее ордер не модифицируется. Почему так? Почему ticc превращается в 0!?
Попробуй так: static int ticc...., тогда на следующей котировке ticc будет иметь значение с предыдущего цикла расчёта, и про очистку ticc позаботься.
24.10.2015, 12:39
Аватар для paylesss
paylesss paylesss вне форума Интересующийся
Регистрация: 22.09.2015 / Сообщений: 7
Поблагодарили 0 раз(а) / Репутация: 1
спасибо! уже , в принципе, решил проблему, путем использования глобальной переменной.
25.10.2015, 18:20
Аватар для paylesss
paylesss paylesss вне форума Интересующийся
Регистрация: 22.09.2015 / Сообщений: 7
Поблагодарили 0 раз(а) / Репутация: 1
еще вопросик...по функции copyopen. нет ни у кого ссылочки на пример ее использования. а то у меня в массив какае-то фигня залетает. некоторые элементы массива 0, вы где нибудь видели бар с ценой открытия 0? или такое значение как 3.0587348578348457859- это цена открытия бара индекса ртс)). вот например
double Openprice[30];
copyiopen(Symbol(),PERIOD_M15,0,30,Openprice)
массив с переменными типа дабл. я правильно понимаю, что цены туда сами должны загнаться(в массив) или надо цикл создавать и заполнять массив?
это написано в mql 5 но и в 4-ке она есть. поэтому тут и спрашиваю.
26.10.2015, 14:32
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
еще вопросик...по функции copyopen. нет ни у кого ссылочки на пример ее использования. а то у меня в массив какае-то фигня залетает. некоторые элементы массива 0, вы где нибудь видели бар с ценой открытия 0? или такое значение как 3.0587348578348457859- это цена открытия бара индекса ртс)). вот например
double Openprice[30];
copyiopen(Symbol(),PERIOD_M15,0,30,Openprice)
массив с переменными типа дабл. я правильно понимаю, что цены туда сами должны загнаться(в массив) или надо цикл создавать и заполнять массив?
это написано в mql 5 но и в 4-ке она есть. поэтому тут и спрашиваю.
Свой массив, перед загрузкой в него данных, обнули, скопируй в него цены открытия, как хотел, но не забудь нормализовать.
РАСПЕЧАТАЙ то что получилось, и прими решение, но кой оно тебе надо? Если, это не то, что тебе надо.
27.10.2015, 20:43
Аватар для kostik83
kostik83 kostik83 вне форума Новичок форума
Регистрация: 19.09.2011 / Сообщений: 11
Поблагодарили 18 раз(а) / Репутация: 19
Здравствуйте, проверите пожалуйста где ошибка? необходимо определить low последних 10 баров
PHP код:
int bar=10;
   
double min=0.0;
   
   for(
int i=0;i<bar;i++){
      if(
iLow(NULL,0,i)<min)min=Low[i];
      }
      
Alert("min " min); 
28.10.2015, 00:13
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
Здравствуйте, проверите пожалуйста где ошибка? необходимо определить low последних 10 баров
PHP код:
int bar=10;   double min=0.0;      for(int i=0;i<bar;i++){      if(iLow(NULL,0,i)<min)min=Low[i];      }      Alert("min " min); 
Условие ни разу не выполняется. вставь принты или запусти в дебагере.
min у тебя 0, а цена как не крути больше.
Поэтому целесообразно искать среди цен значений интервала.
Извини глубоко не вникал.

Последний раз редактировалось _SERG_; 28.10.2015 в 00:16.
28.10.2015, 03:00
Аватар для vlad_123
vlad_123 vlad_123 на форуме Местный знаток
Регистрация: 29.01.2013 / Сообщений: 457
Поблагодарили 930 раз(а) / Репутация: 934
Здравствуйте, проверите пожалуйста где ошибка? необходимо определить low последних 10 баров
PHP код:
int bar=10;
   
double min=0.0;
   
   for(
int i=0;i<bar;i++){
      if(
iLow(NULL,0,i)<min)min=Low[i];
      }
      
Alert("min " min); 
_http://docs.mql4.com/ru/series/ilowest

На заказ не программирую.
28.10.2015, 07:41
Аватар для DomovenokBrest
DomovenokBrest DomovenokBrest на форуме ♔♕♖♗♘♙
Регистрация: 27.10.2012 / Адрес: Белоруссия, Брест / Сообщений: 2,563
Поблагодарили 11,193 раз(а) / Репутация: 11214
Здравствуйте, проверите пожалуйста где ошибка? необходимо определить low последних 10 баров
PHP код:
int bar=10;
   
double min=0.0;
   
   for(
int i=0;i<bar;i++){
      if(
iLow(NULL,0,i)<min)min=Low[i];
      }
      
Alert("min " min); 
как то так...

PHP код:
int bar=10;
   
int index_min=0;
   
double min=10000000.0;
   
   for(
int i=0;i<=bar;i++)
      {
      if(
min>Low[i]) 
       {
       
min=Low[i];
       
index_min=i;
       }
      }
      
Alert(min+""+"на"+" "+index_min+" "+"баре"); 

"Можно всю жизнь проклинать темноту, а можно зажечь маленькую свечку." ~Конфуций~
28.10.2015, 13:18
Аватар для kostik83
kostik83 kostik83 вне форума Новичок форума
Регистрация: 19.09.2011 / Сообщений: 11
Поблагодарили 18 раз(а) / Репутация: 19
СПАСИБО!!!
29.10.2015, 07:51
Аватар для aleksergy
aleksergy aleksergy вне форума Местный житель
Регистрация: 04.12.2012 / Сообщений: 115
Поблагодарили 166 раз(а) / Репутация: 164
Здравствуйте!Подскажите пожалуйста. Если поставить советник например на тф м1 а затем переключить на тф м15 он на каком тф будет работать? Спасибо.
29.10.2015, 08:18
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,072
Поблагодарили 897 раз(а) / Репутация: 883
Господа! В чем смысл следующего выражёвывания?

PHP код:
 if (iMA(NULLPERIOD_H4138MODE_SMMAPRICE_MEDIAN0) < Close[0] && Close[2] > Close[1] && 1
Это декомпил.
Декомпилятор такую фигню выдает или автор что-то вумное имел в виду?

(кто не въехал с ходу - "&& 1" - вот это)
29.10.2015, 08:19
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,647
Поблагодарили 3,773 раз(а) / Репутация: 3765
Здравствуйте!Подскажите пожалуйста. Если поставить советник например на тф м1 а затем переключить на тф м15 он на каком тф будет работать? Спасибо.
Зависит от того как написан советник.
29.10.2015, 22:03
Аватар для iii237
iii237 iii237 вне форума Активный участник
Регистрация: 03.04.2013 / Адрес: Тольятти / Сообщений: 79
Поблагодарили 93 раз(а) / Репутация: 94
Здравствуйте, проверите пожалуйста где ошибка? необходимо определить low последних 10 баров
PHP код:
int bar=10;
   
double min=0.0;
   
   for(
int i=0;i<bar;i++){
      if(
iLow(NULL,0,i)<min)min=Low[i];
      }
      
Alert("min " min); 
Самый простой вариант взять мин заведомо больше цены, например мин = 100000;
29.10.2015, 22:25
Аватар для iii237
iii237 iii237 вне форума Активный участник
Регистрация: 03.04.2013 / Адрес: Тольятти / Сообщений: 79
Поблагодарили 93 раз(а) / Репутация: 94
Здравствуйте!Подскажите пожалуйста. Если поставить советник например на тф м1 а затем переключить на тф м15 он на каком тф будет работать? Спасибо.
Будет работать на том ТФ, на котором в данный момент находится.
Однако здесь много вариантов:
1. Сов может работать независимо от ТФ,
2. Сов может быть рассчитан на конкретный ТФ,
3. Может ваще не работать на конкретном ТФ.

Короче, истина в сове.
30.10.2015, 02:58
Аватар для vlad_123
vlad_123 vlad_123 на форуме Местный знаток
Регистрация: 29.01.2013 / Сообщений: 457
Поблагодарили 930 раз(а) / Репутация: 934
Самый простой вариант взять мин заведомо больше цены, например мин = 100000;

Хватит уже изобретать велосипед!
Я же уже давал ссылку на функцию iLowest, которая делает именно то что нужно.

На заказ не программирую.
30.10.2015, 10:35
Аватар для Def Leppard
Def Leppard Def Leppard на форуме Активный участник
Регистрация: 03.10.2010 / Сообщений: 106
Поблагодарили 62 раз(а) / Репутация: 60
Всем привет!
Большая просьба, кто знает как вставить советник, индикатор, скрипт в мобильную версию MT-4 на Андроиде? За большое спасибо.
30.10.2015, 16:50
Аватар для iii237
iii237 iii237 вне форума Активный участник
Регистрация: 03.04.2013 / Адрес: Тольятти / Сообщений: 79
Поблагодарили 93 раз(а) / Репутация: 94

Хватит уже изобретать велосипед!
Я же уже давал ссылку на функцию iLowest, которая делает именно то что нужно.
Да, конечно, Ваш вариант будет работать так же, как и мой. Но в моем меньше переделок. Хотя это конечно мелочи в данном случае.

А ваще, что Вам не понравилось? Чем больше вариантов, тем прекрасней. И велосипеды разные бывают...
30.10.2015, 16:56
Аватар для iii237
iii237 iii237 вне форума Активный участник
Регистрация: 03.04.2013 / Адрес: Тольятти / Сообщений: 79
Поблагодарили 93 раз(а) / Репутация: 94
Господа! В чем смысл следующего выражёвывания?

PHP код:
 if (iMA(NULLPERIOD_H4138MODE_SMMAPRICE_MEDIAN0) < Close[0] && Close[2] > Close[1] && 1
Это декомпил.
Декомпилятор такую фигню выдает или автор что-то вумное имел в виду?

(кто не въехал с ходу - "&& 1" - вот это)
Это автор, скорее всего непричесаный вариант. Можете просто выкинуть "&& 1", на коде не отразится.
30.10.2015, 17:10
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,072
Поблагодарили 897 раз(а) / Репутация: 883
Это автор, скорее всего непричесаный вариант. Можете просто выкинуть "&& 1", на коде не отразится.
То, что это можно выкинуть, я почти догадался
Но вот зачем такое вставлять/оставлять никак не пойму. Автор сам-то не додумался просто удалить? В смысле, там что-то было, условие какое-то, потом оно не понадобилось и вместо него автор воткнул единицу?
Чужая душа - потёмки!
30.10.2015, 19:42
Аватар для vlad_123
vlad_123 vlad_123 на форуме Местный знаток
Регистрация: 29.01.2013 / Сообщений: 457
Поблагодарили 930 раз(а) / Репутация: 934
Но в моем меньше переделок.

Меньше переделок - это по сравнению со стандартной функцией MQL4?
Ну-ну
__________________________________________________
Паходу - я тут раздумывал, как можно побольше пипсов насобирать, закрывая одни и те же позиции...
Сподвигло меня на это изменение требований MyFxBook'а к AutoTrade провайдерам, а именно - если раньше они требовали >10пипов на профитную сделку, то теперь Avg пипов на трейд - не менее 3. И если раньше мой сов подходил, то теперь нет.
Ну, в общем-то, и решение - закрывать убыточные сделки по возможности меньшим количеством операция (я раньше закрывал по 0.01 лота), а вот профитные - наоборот, закрывать по возможности наименьшими лотами.
Ну, и как результат - сегодня +6400 пипов

На заказ не программирую.

Последний раз редактировалось vlad_123; 30.10.2015 в 19:54.
Ответить

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


Опции темы

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

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



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


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