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

AlexeyVik

Программист mql4 mql5
Так, щипачам нужно "сейчас" и по текущей цене. Сама ф-ция установки позиции находится в цикле. Если отмена установки позиции была вызвана изменением текущей цены на стороне брокера, не дожидаемся нового тика, рефрешим, возможна короткая пауза и отправляем запрос по новому.
Так вот эти «если» решают надо обновлять цены или в этом нет необходимости.
В моём тексте одно «если», в твоём другое… Никаких противоречий…
 

AlexeyVik

Программист mql4 mql5
Код:
double LOT()//Функция по расчету лота
  {
   if(GetLastError()==0)
     {
      switch(Lot)
        {
         case 0:
            _Lot1=Lot0;
            break;
         case 1:
            _Lot1=NormalizeDouble(MathCeil(AccountBalance()/100)/100,2);
            break;
         case 2:
            _Lot1=NormalizeDouble(MathCeil(AccountEquity()/100)/100,2);
            break;
         case 3:
            _Lot1=NormalizeDouble(MathSin(AccountBalance())/100,2);
            break;
         case 4:
            _Lot1=NormalizeDouble(MathSin(AccountEquity())/100,2);
            break;
         case 5:
            _Lot1=NormalizeDouble((AccountFreeMargin()*RISK)/1000,2);
            break;
        }
     };
   if(GetLastError()==131)
      _Lot1=Lot0;
   return(_Lot1);
  };
При такой записи вернется _Lot1? К примеру если кейс 4.
Вернёт, если из этого кода выкинуть GetLastError() и попытаться получить не синус, а какое-то число более приближённое к реальному…
 

AlexeyVik

Программист mql4 mql5
Через свитч я слышалкак то быстро работать функция будет быстрее. Я предполагаю что скорость увеличивается что после броейк дальше не пойдет перебирать.
В случае
Код:
if()
else if()
else if()
если выполнено одно из условий, все следующие не выполняются.
Но вот в свиче есть така фишка
Код:
switch(Lot)
 {
  case 1:
  case 2:
  // что-то выполнили
  break;
  case 3:
  break;
 }
 

megapont

VIP-участник
А как в сову не имеющую параметра NewCycle вставить код из другой совы которая такой параметр имеет?
То есть, если мы возьмем сову Ilan 1.6_PipStep и запихаем внутрь (куда) код из не рабочей совы, типа такого:
}
}
if (NewCycle) {
ChekAmountTrades_2();
if (FlagStartTrade && amountTrades < 1) {
l_iclose_8 = iMA(NULL,0,PerMA,0,MODE_LWMA,PRICE_WEIGHTED,3);//первичное определение..
l_iclose_16 = iMA(NULL,0,PerMA,0,MODE_LWMA,PRICE_WEIGHTED,1);//..направления тренда
if (!FlagStartSell && !FlagStartBuy) {
N_for_Opening = amountTrades;
LotSizeForOpen = NormalizeDouble(Lots * MathPow(LotExponent, N_for_Opening), lotdecimal);
if (l_iclose_8 != l_iclose_16) // не входим, если нет движения цены
{
if (l_iclose_8 > l_iclose_16)// если есть движение, определяем направление...
{
if ((FlagStartBuy_2 || !FlagMarketOrders_2) && (iCCI(NULL,timefr1,Per1,applied_price,0)<(-Drop1))&&(iCCI(NULL,timefr2,Per2,applied_price,0)<(-Drop2)))//...и ждём подтверждение на 2-х ТФ по уровням ССИ
{
TiketOpened = OpenPendingOrder(OP_SELL, LotSizeForOpen, gs_ilan_272 + "-" + N_for_Opening, g_magic_176, 0, HotPink);
if (TiketOpened < 0)
{
Print("Error: ", GetLastError());
return (0);
}
LastBuyPrice = FindLastBuyPrice(g_magic_176);
FlagStartModifyOrders = START;
}
} else
{if ((FlagStartSell_2 || !FlagMarketOrders_2) && (iCCI(NULL,timefr1,Per1,applied_price,0)>(Drop1))&&(iCCI(NULL,timefr2,Per2,applied_price,0)>(Drop2)))
{ TiketOpened = OpenPendingOrder(OP_BUY, LotSizeForOpen, gs_ilan_272 + "-" + N_for_Opening, g_magic_176, 0, Lime);
if (TiketOpened < 0)
{
Print("Error: ", GetLastError());
return (0);
}
LastSellPrice = FindLastSellPrice(g_magic_176);
FlagStartModifyOrders = START;
}
}
}
//if (TiketOpened > 0) TimeOut = TimeCurrent() + 60.0 * (60.0 * MaxTradeOpenHours);
FlagStartTrade = STOP;
}

Так вообще можно делать?
Адрес разработчика Илана к сожалению указан f4u. Тот сайт давно сдох.
 
Последнее редактирование модератором:

Milord

Местный знаток
Всем привет!
на днях смотрел код разных советников,вдруг на глаза попалась какая то неясная фигня,привожу её ниже,помогите понять,что это такое и какой у неё функционал?
Screenshot - 26.09.jpg
 

MakarFX

Элитный участник
Всем привет!
на днях смотрел код разных советников,вдруг на глаза попалась какая то неясная фигня,привожу её ниже,помогите понять,что это такое и какой у неё функционал?
Посмотреть вложение 485233
Это внешняя переменная, а ее функционал надо смотреть в коде.
 

Milord

Местный знаток
что хочешь, то и пишешь - зависит от функционала.
А если пусто везде,а таких"пусек" много?
Хотел посмотреть функционал,выделил слово,скопировал в поиск,он не фига не нашел,стал скролом листать,а слова есть ниже,странно что в редакторе поиск не работает как раньше было?
 

MakarFX

Элитный участник
А если пусто везде,а таких"пусек" много?
Хотел посмотреть функционал,выделил слово,скопировал в поиск,он не фига не нашел,стал скролом листать,а слова есть ниже,странно что в редакторе поиск не работает как раньше было?
Вам бы справку почитать...для общего развития.
 
Последнее редактирование модератором:

Milord

Местный знаток
Вам бы справку почитать...для общего развития.
В том и дело,что общее понимание что такое переменные я имею,но никаких пусек с пустыми кавычками в советниках не видел раньше,а сейчас зачем то все их стали писать,будто сговорились..:) причем во внешних переменных обычно пишут 2 вида переменных,точнее 3 вида:
extern double Risk = 0.1;
extern int MagicNumber = 888;
extern bool Friday_Trade = TRUE;
Тут всё понятно даже для начинающего как я,а вот зачем писать пуськи с пустыми кавычками ума не приложу...
 
Последнее редактирование модератором:

MakarFX

Элитный участник
В том и дело,что общее понимание что такое переменные я имею,но никаких пусек с пустыми кавычками в советниках не видел раньше,а сейчас зачем то все их стали писать,будто сговорились..:)
Еще раз...
функционал надо смотреть в коде.
 

mobidik

-----
Всем привет!
на днях смотрел код разных советников,вдруг на глаза попалась какая то неясная фигня,привожу её ниже,помогите понять,что это такое и какой у неё функционал?
Посмотреть вложение 485233
Вот, например, т.к., назначение переменной pus1 нам не известно, вместо pus1 напишем Symbols. Пусть это будет индюк, который может одновременно работать по нескольким парам, а в переменной Symbols задаются те самые пары. Т.е., какой перечень пар пользователь задаст - по тем парам и будут вычисления индикатора. Но, в таком случае, пары с именем: "" не существует, значит должна быть проверка: если пусто, тогда: Symbols = Symbol(). Или, как в советнике, например, комент к ордеру: можно задать, а можно и не задавать, в любом случае будет верно.
 

star603

Новичок форума
Вернёт, если из этого кода выкинуть GetLastError() и попытаться получить не синус, а какое-то число более приближённое к реальному…
при не которых кейсах выдавала ошибку поэтому я думал целесообразно предусмотреть этот вариант. Если ошибка то вернет лот по умолчанию. Код же работоспособный? или как его доработать(советы). ?Спасибо заранее.
 

star603

Новичок форума
Код:
void OnTick()
  {
    Print(iFractals(Symbol(),PERIOD_CURRENT,MODE_UPPER,0));
  }//

2022.09.28 22:32:38.116 2009.09.07 06:15:54 Sova EURUSD,Daily: 0.0


Почему выдает 0.0?
 
Последнее редактирование:

megakosmo

Интересующийся
Здравствуйте! Подскажите пожалуйста, как научить советника торговать только один раз за одну свечу? Сделал трейлинг, а на длинных свечах при сохранении условий он может 10 раз открыть сделку.
Пример такой: iOpen выше чем линия индикатора, он ее пересекает вниз и открывает вход на продажу по условиям if. и когда на длинных свечах первый трал закрывает вплюс, свеча еще не закрылась, он считывает условия if и опять открывает вход в рынок. как ему это запретить делать второй и последующие разы на одной свече? Благодарю
 

Вложения

  • 244.png
    244.png
    10,4 КБ · Просмотры: 24

777biznesdance

Прохожий
Подскажите пожалуйста в каком месте кода добавляется сигнал?
Хочу добавить в этот индикатор показания стохастика.
Заранее благодарю.
 

Вложения

  • Signals.mq4
    24,9 КБ · Просмотры: 20

star603

Новичок форума
Здравствуйте! Подскажите пожалуйста, как научить советника торговать только один раз за одну свечу? Сделал трейлинг, а на длинных свечах при сохранении условий он может 10 раз открыть сделку.
Пример такой: iOpen выше чем линия индикатора, он ее пересекает вниз и открывает вход на продажу по условиям if. и когда на длинных свечах первый трал закрывает вплюс, свеча еще не закрылась, он считывает условия if и опять открывает вход в рынок. как ему это запретить делать второй и последующие разы на одной свече? Благодарю
Открытие на новом баре.
 
Верх