Ответ
 
Опции темы
06.11.2015, 16:09
Аватар для Viko2000
Viko2000 Почётный гражданин
Регистрация: 22.02.2012 / Сообщений: 437
Поблагодарили 446 раз(а) / Репутация: 447
Сообщение от gush Посмотреть сообщение
одинаковых???? Просто в одной сове все настройки умножь на 2
А ты по пробуй сам так сделать. Будет красотища.)))
Я уже писал это целая наука. На пальцах не объяснить. ))) Будет код, будет результат. И все в итоге увидят, как это можно сделать. А не будет кода. Можно дальше придумывать теории мироздания.))
Viko2000 на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gush (06.11.2015)
06.11.2015, 18:13
Аватар для gush
gush бродяга
Регистрация: 24.01.2011 / Сообщений: 2,520
Поблагодарили 5,290 раз(а) / Репутация: 5506
я так с одной совой запарился..
подскажите как лучше сделать..
сова страховщик, сама не торгуют, а следит за открываемыми позами и если таковые появляются, - выставляет к ним страховку в виде отложек..

как лучше заставить ее торговать? Открывать ордера, чтобы начать торговлю..
Хотелось чтобы была проверка на открытые ордера, если они есть, то ничего не открывать, а ставить только страховки..
добавить открытие бай и селл одновременно..
вот блок кода по открытию страховок:

PHP код:
//+-------------------------------------------------------------------------------------------------------------------+
//|    функция открытия ордеров   

void open_positions(int signaldouble lotdouble price=0.0string symb="NONE"string comm="NONE") {
  
//signal=0 -> сигнал на открытие покупки
  //signal=1 -> сигнал на открытие продажи
  /* extern */ 
int Count_Of_Trade_Try=5Pause_Of_Trade_Try=5;

  
int    i 0//переменная для счётчика цикла

  
symb=Symbol();
  if(
signal==0)
    
price=MarketInfo(symb,MODE_ASK); //цена открытия для покупок
  
if(signal==1)
    
price=MarketInfo(symb,MODE_BID); //цена открытия для продаж

  
while(i<=Count_Of_Trade_Try) {
    
//сама функия открытия ордера (встроенная). Для удобства восприятия параметры разнесены на разные строки:
    
int ticket OrderSend(Symbol(),      //символ
                           
signal,        //тип ордера
                           
lot,           //объем
                           
price,         //цена открытия
                           
Slipage,       //уровень допустимого реквота
                           
sl(SL,signal,symb,price), //величина Stop Loss
                           
tp(TP,signal,symb,price), //величина Take Profit
                           
comm//комментарий ордера
                           
Magic_Number,  //магическое число
                           
0,             //срок истечения (используется при отложенных ордерах)
                           
CLR_NONE);     //цвет отображаемой стрелки на графике (CLR_NONE - стрелка не рисуется)
    
if(ticket!=-1//если открытие произошло успешно, наносим графический объект и выходим из цикла
      
break;
    
int err=GetLastError(); 
    if(
err!=0) Print("Ошибка: "+Market_Err_To_Str(err));
    
i++;
    
Sleep(Pause_Of_Trade_Try*100); //в случае ошибки делаем паузу перед новой попыткой
  
//end while(i<=count)
//end void open_positions(int signal, double lot, double price=0.0, string symb="NONE")
//|                                              функция открытия ордеров                                             |
//+-------------------------------------------------------------------------------------------------------------------+ 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума Ответить с цитированиемОтветить с цитированием  
10.11.2015, 07:26
Аватар для bucknbard
bucknbard Интересующийся
Регистрация: 15.08.2011 / Сообщений: 5
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
уважаемые знатоки, подскажите пожалуйста алгоритм работы индикатора
Миниатюры:
Нажмите на изображение для увеличения
Название: eurusd-m1.png
Просмотров: 42
Размер:	39.4 Кб
ID:	225061  
Вложения:
Тип файла: mq4 Vertex alerts nmc 1.01.mq4 (4.4 Кб, 15 просмотров)
bucknbard вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Frolov (13.11.2015)
12.11.2015, 11:48
Аватар для Paragon
Paragon Местный знаток
Регистрация: 24.01.2010 / Адрес: Киев-мать городов руских / Сообщений: 358
Поблагодарили 583 раз(а) / Репутация: 585
Господа,приветствую Вас!
Подскажите мне,начинающему дилетанту, строчку кода, где:
при старте открываются два рыночных ордера по такому коду

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

for(i=1;i<=1;i++)//i<=n,где n=количество ордеров
{
if(i==1) {sizelot=Lot;} else {sizelot=sizelot;}
n=3;
Ticket=-1;
while(Ticket<0 && n>0)
{
while(IsTradeContextBusy()) Sleep(500);
Ticket=OrderSend(Symbol(),OP_BUY,sizelot,NormalizeDouble(Ask,Digits),3,0,0,"buy_stop_"+i,magic_buy,0,Blue);
n--;
}
n=3;
Ticket=-1;
while(Ticket<0 && n>0)
{
while(IsTradeContextBusy()) Sleep(500);
Ticket=OrderSend(Symbol(),OP_SELL,sizelot,NormalizeDouble(Bid,Digits),3,0,0,"sell_stop_"+i,magic_sell,0,Red);
n--;
}
}
}
[свернуть]


требуется вставить строчку кода, где при закрытии по профиту в % любого из двух ордеров,моментально повторить открытие новых рыночных ордеров бай и селл.
Такой сценарий работает постоянно,пока не закроется по общему профиту в % от депо.
Функции закрытия по профиту/просадка в % ордера и функции закрытия по общему профиту/просадка в % в боте имеется,как раздельные.
Тема или речь о якобы не целесообразности или бессмысленности данной стратегии не подымайте,наслышан и сам знаю, но у меня свои представления и взгляд под углом.
Для меня важен пост о отдельной строчки кода открытия рыночных ордеров в момент закрытия по профиту(не по общему профиту) одного из двух рыночных,еще лучше:
в момент когда нужно закрыть по профиту ордер в первую очередь открыть новые рыночные ордера,а потом моментально закрыть сам ордер .
Спасибо за внимание.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
"На Руси будет великая радость - возвращение короны и принятие под корону всего большого древа. Три ветви древа сольются воедино после бегства бесовского и единое древо будет"
================================================== ===============================================
Paragon вне форума Ответить с цитированиемОтветить с цитированием  
13.11.2015, 09:35
Аватар для Iskander24
Iskander24 Прохожий
Регистрация: 24.03.2014 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Подскажите пожалуйста жертве технического прогресса. Как заставить на Параболике (SAR), открывать ордера. На том месте где стоит белая точка, открыть ордер. Неважно какой, отложку или рынок...
Iskander24 вне форума Ответить с цитированиемОтветить с цитированием  
13.11.2015, 13:03
Аватар для Frolov
Frolov Новичок форума
Регистрация: 06.11.2010 / Сообщений: 43
Поблагодарили 23 раз(а) / Репутация: 24
Здравствуйте , уважаемые программисты.
Подскажите пожалуйста код функции на проверку типа последнего закрытого ордера ( не важно за какое время : за последний час , последние 24 часа или последние 48 часов). Нужно чтобы советник проверил тип последнего закрытого ордера и не открывался в туже сторону . Ордера должны быть Buy, Sell, Buy, Sell.
Спасибо
Frolov вне форума Ответить с цитированиемОтветить с цитированием  
13.11.2015, 14:17
Аватар для matro3
matro3 Почётный гражданин
Регистрация: 18.07.2013 / Сообщений: 349
Поблагодарили 340 раз(а) / Репутация: 344
Сообщение от Frolov Посмотреть сообщение
Здравствуйте , уважаемые программисты.
Подскажите пожалуйста код функции на проверку типа последнего закрытого ордера ( не важно за какое время : за последний час , последние 24 часа или последние 48 часов). Нужно чтобы советник проверил тип последнего закрытого ордера и не открывался в туже сторону . Ордера должны быть Buy, Sell, Buy, Sell.
Спасибо
_http://forum.mql4.com/ru/38949/page4#434227
matro3 вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Frolov (13.11.2015)
14.11.2015, 17:49
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от Iskander24 Посмотреть сообщение
Подскажите пожалуйста жертве технического прогресса. Как заставить на Параболике (SAR), открывать ордера. На том месте где стоит белая точка, открыть ордер. Неважно какой, отложку или рынок...

А "точка" у тебя сколько времени? (минута, час, день?)
Тут и в начале и в средине и в конце и по другому можно, по времени, или есть ещё критерии по цене?.
_SERG_ на форуме Ответить с цитированиемОтветить с цитированием  
15.11.2015, 16:26
Аватар для Iskander24
Iskander24 Прохожий
Регистрация: 24.03.2014 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Сообщение от _SERG_ Посмотреть сообщение
А "точка" у тебя сколько времени? (минута, час, день?)
Тут и в начале и в средине и в конце и по другому можно, по времени, или есть ещё критерии по цене?.
Мне нужно чтобы ордер стоял на последней появившейся точке. Допустим на часовом, или текущем графике, стоит отложка на текущем баре и если эта точка переносится, то следом идет и ордер. А если рыночный ордер, то он открывается когда текущая цена равна или пересекается с текущим показанием SAR.
Iskander24 вне форума Ответить с цитированиемОтветить с цитированием  
15.11.2015, 16:59
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от Iskander24 Посмотреть сообщение
Мне нужно чтобы ордер стоял на последней появившейся точке. Допустим на часовом, или текущем графике, стоит отложка на текущем баре и если эта точка переносится, то следом идет и ордер. А если рыночный ордер, то он открывается когда текущая цена равна или пересекается с текущим показанием SAR.
А в чём проблема-то??? -http://docs.mql4.com/ru/indicators/isar всё понятно описано. Получай значение индикатора и ставь туда ордер...
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
DomovenokBrest (15.11.2015)
17.11.2015, 00:11
Аватар для Dobryj
Dobryj Почётный гражданин
Регистрация: 07.06.2012 / Сообщений: 222
Поблагодарили 293 раз(а) / Репутация: 325

По умолчанию Help


Ситуация в следующем задался целью оформить одну из идей в коде , оказалось не так уж и просто для моего уровня знания языка Mql4 .
Cмысл функции в том что бы из даты в формате D'1980.07.19 12:30:27';
извлечь каждую цифру в отдельную переменную , на данном этапе написания остановился на этом :

extern datetime time=D'2015.11.16 00:00';
int init()
{
string www= TimeToString(time,TIME_DATE|TIME_MINUTES);//преобразование в переменную типа string
Comment(www);
return(0);

}
Подскажите пожалуйста как можно реализовать эту идею в код , заполнив 12 переменных нужными значениями типа int ?
q=2; t=1; a=0;
w=0; y=1; s=0;
e=1; u=1; d=0;
r=5; i= 6; f=0;

Последний раз редактировалось Dobryj; 17.11.2015 в 00:13.
Dobryj вне форума Ответить с цитированиемОтветить с цитированием  
17.11.2015, 05:46
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от Dobryj Посмотреть сообщение
Ситуация в следующем задался целью оформить одну из идей в коде , оказалось не так уж и просто для моего уровня знания языка Mql4 .
Cмысл функции в том что бы из даты в формате D'1980.07.19 12:30:27';
извлечь каждую цифру в отдельную переменную , на данном этапе написания остановился на этом :

extern datetime time=D'2015.11.16 00:00';
int init()
{
string www= TimeToString(time,TIME_DATE|TIME_MINUTES);//преобразование в переменную типа string
Comment(www);
return(0);

}
Подскажите пожалуйста как можно реализовать эту идею в код , заполнив 12 переменных нужными значениями типа int ?
q=2; t=1; a=0;
w=0; y=1; s=0;
e=1; u=1; d=0;
r=5; i= 6; f=0;
-http://docs.mql4.com/ru/strings/stringsubstr
Надеюсь сам всё поймёшь. Если нет задавай уточняющие вопросы.
Но на мой взгляд, лучше не 12 переменных, а массив.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (17.11.2015), DomovenokBrest (17.11.2015)
20.11.2015, 13:45
Аватар для samuil11
samuil11 Активный участник
Регистрация: 21.01.2010 / Сообщений: 55
Поблагодарили 47 раз(а) / Репутация: 48
День добрый !
Пожалуйста помогите написать функцию (для внедрения в код советника)
или простой Советник с УСЛОВИЕМ :

Если есть ДВА РАЗНОНАПРАВЛЕННЫХ Отложенных ордера и если один из ордеров выполняется (открывается позиция)--- то другой противоположный Отложенный ордер должен удалиться.

НАПРИМЕР --- установились ДВА : БайЛимит и СеллЛимит --- если открывается БайЛимит , тогда СеллЛимит должен удалиться.
и наоборот --- если СеллЛимит открывается --- то БайЛимит должен удалиться

Не получается сделать (не пойму) как можно программно проследить открытие ОТЛОЖЕННОГО ордера БайЛимит (или СеллЛимит) , чтобы сразу удалить другой противоположный Отложеник
Заранее большое СПАСИБО !
samuil11 вне форума Ответить с цитированиемОтветить с цитированием  
21.11.2015, 02:32
Аватар для ddima200
ddima200 Прохожий
Регистрация: 08.01.2015 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
  • Отправить сообщение для ddima200 с помощью Skype™
Подскажите как правильно открыть ОДИН ордер не текущей свече
ddima200 вне форума Ответить с цитированиемОтветить с цитированием  
21.11.2015, 10:20
Аватар для Pepelac
Pepelac Интересующийся
Регистрация: 18.10.2012 / Сообщений: 15
Поблагодарили 1 раз в 1 сообщении / Репутация: 2

По умолчанию Подскажите как сделать чтобы советник дожидался закрытия текущего бара


Подскажите пожалуйста как сделать чтобы советник брал показания индикаторов в момент закрытия текущего бара
Pepelac вне форума Ответить с цитированиемОтветить с цитированием  
21.11.2015, 11:54
Аватар для CastEt
CastEt Активный участник
Регистрация: 19.10.2012 / Адрес: мАсква-рИка, сердце упокоит на века :-) / Сообщений: 159
Поблагодарили 53 раз(а) / Репутация: 51
момент закрытия текущего бара = момент открытия нового

if(Time[0]>PrevTime)
{
PrevTime=Time[0];
и далее берём значение индюка с индексом 1, ибо 0 - это уже новый бар
CastEt вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Pepelac (21.11.2015)
21.11.2015, 19:06
Аватар для Pepelac
Pepelac Интересующийся
Регистрация: 18.10.2012 / Сообщений: 15
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
откуда берется PrevTime не понял
Pepelac вне форума Ответить с цитированиемОтветить с цитированием  
21.11.2015, 19:12
Аватар для CastEt
CastEt Активный участник
Регистрация: 19.10.2012 / Адрес: мАсква-рИка, сердце упокоит на века :-) / Сообщений: 159
Поблагодарили 53 раз(а) / Репутация: 51
Объявляется где-нибудь выше, желательно в самом начале, сразу после external-ов
например, напиши int PrevTime=0; и будет тебе благо...
CastEt вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Pepelac (22.11.2015)
22.11.2015, 06:37
Аватар для Pepelac
Pepelac Интересующийся
Регистрация: 18.10.2012 / Сообщений: 15
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Большое спасибо! Все работает )
Pepelac вне форума Ответить с цитированиемОтветить с цитированием  
22.11.2015, 15:18
Аватар для Andy200577
Andy200577 Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Уважаемые программисты.
Хочу задать вопрос по поводу расчеты тех или иных индикаторов на исторических данных.
Допустим мы вычисляем iRSI(..), можно ли вычислить индюк например на 3ей свече в тот момент, когда она была еще текущей, после закрытия свечи стала первой и т.д.?
Т.е. при движении цены значения rsi даже на предыдущих свечах меняются, можно ли как то эмулировать с помощью mql образование баров (пусть даже без учета тиков) и последовательно вычислять индикатор и отслеживать его изменение после образования следующих баров?
Спасибо.
Andy200577 вне форума Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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