Ваши вопросы по языку MQL4

Viko2000

Почетный гражданин
одинаковых???? Просто в одной сове все настройки умножь на 2 :D

А ты по пробуй сам так сделать. Будет красотища.))) :laugh:
Я уже писал это целая наука. На пальцах не объяснить. )));) Будет код, будет результат. И все в итоге увидят, как это можно сделать. :embrace:А не будет кода. Можно дальше придумывать теории мироздания.))*hi*
 
  • Like
Реакции: gush

gush

бродяга
я так с одной совой запарился..
подскажите как лучше сделать..
сова страховщик, сама не торгуют, а следит за открываемыми позами и если таковые появляются, - выставляет к ним страховку в виде отложек..

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

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

void open_positions(int signal, double lot, double price=0.0, string symb="NONE", string comm="NONE") {
  //signal=0 -> сигнал на открытие покупки
  //signal=1 -> сигнал на открытие продажи
  /* extern */ int Count_Of_Trade_Try=5, Pause_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")
//|                                              функция открытия ордеров                                             |
//+-------------------------------------------------------------------------------------------------------------------+
 

bucknbard

Прохожий
уважаемые знатоки, подскажите пожалуйста алгоритм работы индикатора
 

Вложения

  • Vertex alerts nmc 1.01.mq4
    4,4 КБ · Просмотры: 34
  • eurusd-m1.png
    eurusd-m1.png
    39,4 КБ · Просмотры: 57

Paragon

Местный знаток
Господа,приветствую Вас!
Подскажите мне,начинающему дилетанту, строчку кода, где:
при старте открываются два рыночных ордера по такому коду
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--;
}
}
}

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

Iskander24

Прохожий
:facepalm:Подскажите пожалуйста жертве технического прогресса. Как заставить на Параболике (SAR), открывать ордера. На том месте где стоит белая точка, открыть ордер. Неважно какой, отложку или рынок...
 

Frolov

Новичок форума
Здравствуйте , уважаемые программисты.
Подскажите пожалуйста код функции на проверку типа последнего закрытого ордера ( не важно за какое время : за последний час , последние 24 часа или последние 48 часов). Нужно чтобы советник проверил тип последнего закрытого ордера и не открывался в туже сторону . Ордера должны быть Buy, Sell, Buy, Sell.
Спасибо
 

matro3

Почетный гражданин
Здравствуйте , уважаемые программисты.
Подскажите пожалуйста код функции на проверку типа последнего закрытого ордера ( не важно за какое время : за последний час , последние 24 часа или последние 48 часов). Нужно чтобы советник проверил тип последнего закрытого ордера и не открывался в туже сторону . Ордера должны быть Buy, Sell, Buy, Sell.
Спасибо

_http://forum.mql4.com/ru/38949/page4#434227
 

_SERG_

Активный участник
:facepalm:Подскажите пожалуйста жертве технического прогресса. Как заставить на Параболике (SAR), открывать ордера. На том месте где стоит белая точка, открыть ордер. Неважно какой, отложку или рынок...


А "точка" у тебя сколько времени? (минута, час, день?)
Тут и в начале и в средине и в конце и по другому можно, по времени, или есть ещё критерии по цене?.
 

Iskander24

Прохожий
А "точка" у тебя сколько времени? (минута, час, день?)
Тут и в начале и в средине и в конце и по другому можно, по времени, или есть ещё критерии по цене?.

Мне нужно чтобы ордер стоял на последней появившейся точке. Допустим на часовом, или текущем графике, стоит отложка на текущем баре и если эта точка переносится, то следом идет и ордер. А если рыночный ордер, то он открывается когда текущая цена равна или пересекается с текущим показанием SAR.
 

AlexeyVik

Программист mql4 mql5
Мне нужно чтобы ордер стоял на последней появившейся точке. Допустим на часовом, или текущем графике, стоит отложка на текущем баре и если эта точка переносится, то следом идет и ордер. А если рыночный ордер, то он открывается когда текущая цена равна или пересекается с текущим показанием SAR.
А в чём проблема-то??? -http://docs.mql4.com/ru/indicators/isar всё понятно описано. Получай значение индикатора и ставь туда ордер...
 

Dobryj

Почетный гражданин
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;
:question:
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Ситуация в следующем задался целью оформить одну из идей в коде , оказалось не так уж и просто для моего уровня знания языка 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;
:question:
-http://docs.mql4.com/ru/strings/stringsubstr
Надеюсь сам всё поймёшь. Если нет задавай уточняющие вопросы.
Но на мой взгляд, лучше не 12 переменных, а массив.
 

samuil11

Активный участник
День добрый !
Пожалуйста помогите написать функцию (для внедрения в код советника)
или простой Советник с УСЛОВИЕМ :

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

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

Не получается сделать (не пойму) как можно программно проследить открытие ОТЛОЖЕННОГО ордера БайЛимит (или СеллЛимит) , чтобы сразу удалить другой противоположный Отложеник
Заранее большое СПАСИБО !
 

ddima200

Прохожий
Подскажите как правильно открыть ОДИН ордер не текущей свече
 

Pepelac

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

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

CastEt

Активный участник
момент закрытия текущего бара = момент открытия нового

if(Time[0]>PrevTime)
{
PrevTime=Time[0];
и далее берём значение индюка с индексом 1, ибо 0 - это уже новый бар
 

CastEt

Активный участник
Объявляется где-нибудь :) выше, желательно в самом начале, сразу после external-ов
например, напиши int PrevTime=0; и будет тебе благо...
 

Andy200577

Новичок форума
Уважаемые программисты.
Хочу задать вопрос по поводу расчеты тех или иных индикаторов на исторических данных.
Допустим мы вычисляем iRSI(..), можно ли вычислить индюк например на 3ей свече в тот момент, когда она была еще текущей, после закрытия свечи стала первой и т.д.?
Т.е. при движении цены значения rsi даже на предыдущих свечах меняются, можно ли как то эмулировать с помощью mql образование баров (пусть даже без учета тиков) и последовательно вычислять индикатор и отслеживать его изменение после образования следующих баров?
Спасибо.
 
Верх