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

 
Ihor Herasko:

Написать свои тики и подставить в тестер стратегий.

а что нибудь более юзер-френдли?

 
Andrey Sokolov:

а что нибудь более юзер-френдли?

а нельзя написать, что самостоятельно  делать не будете? тогда https://www.mql5.com/ru/job

вот статья https://www.mql5.com/ru/articles/4566

читаете, делаете по своим законам распределения котировки

если под МТ4 нужны свои графики, тики, то прочитав статью, экспортируйте котировки из МТ5 и  импортируйте в МТ4

проще уже никак

если можете программировать под МТ4, откройте в метаэтидоре скрипт PeriodConverter из поставки МТ4, там код понятный и довольно компактный по обьему, разобраться с ним не составит труда, затем создадите свой график и протестируете

ЗЫ: вспомнил, вот выкладывал на форум скрипт для создания графиков по ф-ции Веерштрасса, под МТ4 делал

https://www.mql5.com/ru/forum/86386/page988#comment_7843056 

 

Здравствуйте. Функция Возвращает флаг существования позиции или ордера около рынка (функция найдена на форуме). Для теста код, он должен открывать позицию если в районе 200 пунктов выше и ниже текущей цены, нет позиций. Почему открывает позиции на каждом тике практически по одной цене?

//+------------------------------------------------------------------+
//|                                                    testprpos.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!ExistOPNearMarket(Symbol(),-1,200))
     {
      int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,300,0,0,"_",16384,0,clrGreen);
      if(ticket<0)
        {
         Print("OrderSend завершилась с ошибкой #",GetLastError());
        }
      else
         Print("Функция OrderSend успешно выполнена");
      //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="",int op=-1,int mn=-1,int ds=1000000) 
  {
   int i,k=OrdersTotal(),ot;

   if(sy=="" || sy=="0") sy=Symbol();
   double p=MarketInfo(sy,MODE_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         ot=OrderType();
         if((OrderSymbol()==sy) && (op<0 || ot==op)) 
           {
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) 
                 {
                  if(MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
                 }
               if(ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) 
                 {
                  if(MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//+------------------------------------------------------------------+
 
Мужики, проблема с миграцией советников. кнопки стали не активны, не могу произвести миграцию, кто нибудь сталкивался?
 
Aleksei Petrenko:
Мужики, проблема с миграцией советников. кнопки стали не активны, не могу произвести миграцию, кто нибудь сталкивался?
 
Aleksei Petrenko:


 
Ghabo:

Здравствуйте. Функция Возвращает флаг существования позиции или ордера около рынка (функция найдена на форуме). Для теста код, он должен открывать позицию если в районе 200 пунктов выше и ниже текущей цены, нет позиций. Почему открывает позиции на каждом тике практически по одной цене?

Проверьте количество параметров при вызове 

ExistOPNearMarket(Symbol(),-1,200)

и ее описании

 
Galim_V:

Проверьте количество параметров при вызове 

и ее описании

Спасибо.
 
Есть бот для бинарок на пайтоне, вопрос: как ему передать сигнал с робота из терминала без костылей?
 

Подскажите, как рассчитать залог по сделке?


Пробовал два подхода 

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


И вот такой 

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



Первый дает странные результаты на EURJPY  если валюта депозита  USD. Нужно что то добавить в формулу? 

Второй тоже работает через раз, то верные значения дает, то какую-то ерунду (это зависит от депозита)  

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