Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2166

 
Galim_V #:
Структура исторических данных

MqlRates

Структура для хранения информации о ценах, объемах и спреде.

2023.03.22 18:12:00.758 RatesCopy NZDJPY,M5: 9:2023.03.22 16:25 open = 82.395, high = 82.454, low = 82.376, close = 82.437, volume = 510, spread = 0.000000

Но спред у меня почему-то  0.00. Вообще задача избавиться от плавающего спреда.

В mql4 это невозможно.

 
Alexey Viktorov #:

В mql4 это невозможно.

Что именно невозможно, Алексей? Привести значение спреда к константе? Или ты о структуре?

 
Galim_V #:
Структура исторических данных

MqlRates

Структура для хранения информации о ценах, объемах и спреде.

2023.03.22 18:12:00.758 RatesCopy NZDJPY,M5: 9:2023.03.22 16:25 open = 82.395, high = 82.454, low = 82.376, close = 82.437, volume = 510, spread = 0.000000

Но спред у меня почему-то  0.00. Вообще задача избавиться от плавающего спреда.

Возможно MqlTick Вам поможет ask-bid даст Вам spread

 
Tretyakov Rostyslav #:

Возможно MqlTick Вам поможет ask-bid даст Вам spread

Да, Ростислав. Так и сделал. Спасибо!

//+------------------------------------------------------------------+
//|                                                    Tik_Spred.mq4 |
//|                        Copyright 2023, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
input int cou=0;
struct tik_price
  {
   void              ZeroMemory(tik_price&str_price);
   double            _ask;
   double            _bid;
  };
tik_price str_price[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
hisoriTicks(_Symbol, cou);
   
  }
//+------------------------------------------------------------------+

void hisoriTicks(string Sym,int count)
  {
   double _spred[];
   bool result=false;
   int static i=0;
   MqlTick fresh_tic;
   if(Sym!=_Symbol||count<=0)
   {
     return; 
   }
   else
   {
   double p=SymbolInfoDouble(Sym,SYMBOL_POINT);
   ArrayResize(str_price,count);
   SymbolInfoTick(_Symbol,fresh_tic);
   str_price[i]._ask=fresh_tic.ask;
   str_price[i]._bid=fresh_tic.bid;
   i++;
   if(i>count-1)
     {
      result=true;
      i=0;
     }
   if(result)
     {
      ArrayResize(_spred,count);
      for(int k=0; k<count; k++)
        {
         _spred[k]=(str_price[k]._ask-str_price[k]._bid)/p;
  //       Print("_spred[k] = ",_spred[k]);
        }
        ArraySort(_spred);
        ZeroMemory(str_price);
        for(int f=0; f<count; f++)
        Print("_spred[f] = ",_spred[f]); 
      }
    }
  }
 
 
Is there a way of calculating daily drawdown in a hedge condition.
 
Коллеги, возможно ли к фибо прикрутить ордера, фибо рисуется в ручную, на уровнях автоматом выставляются ордера(лимитки, стопы, тейки)?
 
Nikolay #:
Коллеги, возможно ли к фибо прикрутить ордера, фибо рисуется в ручную, на уровнях автоматом выставляются ордера(лимитки, стопы, тейки)?
Можно, находишь Фибо - определяешь точки 0 и 100 - высчитываешь цены уровней.
 

Всем доброго времени суток!

Мне нужно открыть ордер если Low[ ] отстоит от текущего бара на 2,или 3, или 4 свечи. Я оформил эту идею в следующий код.

if (Minute()!=D2){D2=Minute();a=Time[2];a1=Time[3];a2=Time[4];int TF[3]={a,a1,a2};}
for(int r=0;r<=2;r++)
{
if (Low[iBarShift(NULL ,0,TF[r])]>1.3456)OrderSend(Symbol(),OP_BUY,0.1,Ask, 3,Bid-150*Point,Bid+70*Point,"300",5);
}

Но меня постигла неудача, потому что в массив нужно класть только константы, тогда как я пытался положить в него переменные. Подскажите пожалуйста при помощи какой языковой конструкции можно реализовать мой вышеизложенный замысел. При этом элементов массива со значениями может быть намного больше 3.

Всем спасибо за помощь.

 
ANDREY #:

Всем доброго времени суток!

Мне нужно открыть ордер если Low[ ] отстоит от текущего бара на 2,или 3, или 4 свечи. Я оформил эту идею в следующий код.

Но меня постигла неудача, потому что в массив нужно класть только константы, тогда как я пытался положить в него переменные. Подскажите пожалуйста при помощи какой языковой конструкции можно реализовать мой вышеизложенный замысел. При этом элементов массива со значениями может быть намного больше 3.

Всем спасибо за помощь.

А если так

if (Minute()!=D2)
{
  D2=Minute();
  for(int r=2;r<=4;r++)
  {
    if (Low[r]>1.3456)OrderSend(Symbol(),OP_BUY,0.1,Ask, 3,Bid-150*Point,Bid+70*Point,"300",5);
  }
}
 
Tretyakov Rostyslav #:

А если так

Спасибо за совет. Это оптимальный для меня вариант!!!!

Причина обращения: