Группа "Стол заказов MQL"

Рейтинг 2089



РЕКОМЕНДУЮ



Информационный советник (доработка)

В общем ТЗ такое.
Начало берем zakaz.opentraders.ru/72832.html

3 глобальные переменные, которые можно менять в настройках советника.
1. переменная, начало дня, первой пары. (от нее считаем, разницу, в пунктах между текущей ценой и данным значением)
2. переменная, начало дня, второй пары. (от нее считаем, разницу, в пунктах между текущей ценой и данным значением)
3.В глобальной переменной прописываем кофицент. (необходим для расчета разницы цены двух пар, для вывода сигнала)

Расчеты для вывода на экран
1.Получили данные текущих цен.
2. Сравнили переменную начала дня, первой пары, с текущей ценой. (Значение может быть плюсовое или минусовое)
3. Сравнили переменную начала дня, второй пары, с текущей ценой. (Значение может быть плюсовое или минусовое)
4. Берем два полученных значения и рассчитываем разницу.

Пример: Первый инструмент результат 1, второй инструмент -1. Разница 2.
Второй пример: Первый инструмент результат -1, второй инструмент -2. Разница 1.
Разница может быть не в целых числах, это просто пример.

Для вывода на экран
Выводим текущую разницу обеих пар

TRXUSDT = 1 (Сравнили переменную начала дня, данной пары, с текущим значением цены, вывели на экран)
BNBUSDT = 2 (Сравнили переменную начала дня, данной пары, с текущим значением цены, вывели на экран)
Разница =1 (Вывели разницу двух пар)
Нет сигнала (Сравнили кофицент, с разницей двух пар, если значение разницы, ниже коэффициента, то сигнала нету. Если разница равна или больше коэффициента, то сигнал)

Выводим за место «нет сигнала», одну из строк которая ниже. Если разница больше коэффициента, то выводим сигнал.
TRXUSDT — BUY || BNBUSDT — SELL
TRXUSDT — SELL || BNBUSDT — BUY

Расчет вывода строк, сигнала

Если у одной пары минус, у другой плюс, значит у которой минус покупаем, у которой плюс продаем.
Может быть у обеих пар минус, или у обеих плюс.
Тогда смотрим, у какой пары больше плюс (минус)
Если обе пары плюсовые, продаем ту, у которой больший плюс, вторую покупаем.
Если обе пары в минус — покупаем ту, где больший минус, вторую продаем.
  • 0
  • Просмотров: 2314
  • 24 марта 2022, 12:04
  • Syte
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Информационный советник
Следующая запись в группе  
Доработка советника.
23 марта 2022
24 марта 2022

Комментарии (15)

+
0
у меня ответа сервера нет, ошибка идет. на основе 10 пар крипты у меня в терминале еще могу сделать
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 24 марта 2022, 22:44
+
0
Жаль. А превидущий код работал. Может, можно так написать, без проверки? Проверить я могу и у себя в терминале.
avatar

  14  Syte Автор Сообщений: 399

  • 25 марта 2022, 07:59
+
0
Впринципи как вариант могу VPS дать. Там можешь развернуть терминал, и проверить, либо прям там можешь писать. В общем, по желанию
avatar

  14  Syte Автор Сообщений: 399

  • 25 марта 2022, 08:06
+
0
Андрей, можешь сделать, только под МТ 5, для терминальных котировок. Крипта, которая есть в терминале. Устроит, я нашел как загрузить котировки, но это возможно, только для мт5.
avatar

  14  Syte Автор Сообщений: 399

  • 25 марта 2022, 19:49
+
0
о в мт5 работает. в понедельник посмотрю
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 25 марта 2022, 20:31
+
0
С Бинанса, конечно было бы лучше, получать котировки. :) 
avatar

  14  Syte Автор Сообщений: 399

  • 26 марта 2022, 10:34
+
0
:)  Спасибо.
avatar

  14  Syte Автор Сообщений: 399

  • 25 марта 2022, 20:33
+
0
болванка есть:


//+------------------------------------------------------------------+
//|                                                      Binance.mq5 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"

#include <Trade\Trade.mqh>   // Подключаем торговый класс CTrade
CTrade trade;

input string url="https://www.api.binance.com/api/v3/ticker/price?symbol=BNBUSDT";

input double lot=1;        // лот
input double cef=2;        // кэф
input double pro=10;       // профит
input string s1="EURUSD";
input string s2="USDJPY";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         trade.PositionClose(PositionGetTicket(i));
        }
     }
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double p=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
         p+=PositionGetDouble(POSITION_PROFIT);
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   string header;
   char post[],result[];
   int res;
//--- для работы с сервером необходимо добавить URL "https://www.google.com/finance"
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
//--- обнуляем код последней ошибки
   ResetLastError();
//--- загрузка html-страницы с Google Finance
   int timeout=5000; //--- timeout менее 1000 (1 сек.) недостаточен при низкой скорости Интернета
   res=WebRequest("GET",url,NULL,NULL,30000,post,0,result,header);

   double bid1=SymbolInfoDouble(s1,SYMBOL_BID);
   double bid2=SymbolInfoDouble(s2,SYMBOL_BID);

   double ask1=SymbolInfoDouble(s1,SYMBOL_ASK);
   double ask2=SymbolInfoDouble(s2,SYMBOL_ASK);

   double op1=iOpen(s1,PERIOD_D1,0);
   double op2=iOpen(s2,PERIOD_D1,0);

   double delta1=(op1-bid1)/_Point;
   double delta2=(op2-bid2)/_Point;
   double delta=MathAbs(delta1-delta2);
   
   if(AllProfit()>pro && pro>0) CloseAll();

   if(delta>cef && PositionsTotal()<1)
     {
      if(delta1<0)
        {
         trade.Buy(lot,s1,ask1,0,0,"");
         trade.Sell(lot,s2,bid2,0,0,"");
        }
      if(delta1>0)
        {
         trade.Buy(lot,s2,ask2,0,0,"");
         trade.Sell(lot,s1,bid1,0,0,"");
        }
     }

   Comment("\n Symbol: ",CharArrayToString(result,0,333),
           "\n Profit: ",AllProfit(),
           "\n Delta1: ",delta1,
           "\n Delta2: ",delta2,
           "\n Delta: ",delta);
  }
//+------------------------------------------------------------------+



теперь все условия надо прописывать и данные с бинанса
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 27 марта 2022, 08:02
+
0
От меня, что то требуется? Могу чем то помочь?
avatar

  14  Syte Автор Сообщений: 399

  • 27 марта 2022, 12:35
+
0
завтра доделывать буду
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 27 марта 2022, 13:50
+
0
Может быть есть смысл добавить проверку на корреляцию между парами?
avatar

  16  ssg Сообщений: 817

  • 27 марта 2022, 14:37
+
0
По моему там и так все добавлено. Есть другие предложения?
avatar

  14  Syte Автор Сообщений: 399

  • 27 марта 2022, 15:09
+
0
Анализа корреляции нет. Если добавить такой анализ и ввести минимальное значение корреляции тогда можно организовать автоторговлю двумя символами исходя из корреляции:
-если корр.>0 и корр.> минимума — купить А и продать В (продать А и купить В);
-если корр.<0 и корр.> минимума — купить А и купить В (продать А и продать В);
Пользователю будет проще торговать разными символами, так как в помощь ему приходит какая никакая статистика.Плюс случайный резкий скачок котировки одного символа будет игнорироваться.
Ну и в плане «другие предложения» — классическое усреднение убыточной позиции.
avatar

  16  ssg Сообщений: 817

  • 27 марта 2022, 19:54
+
0
А формула корреляции? Мне нужно, так как есть. Тепловая карта называется. Но ваша идея, если есть формула корреляции, возможно будет интересна.
Редактирован: 27 марта 2022, 20:13
avatar

  14  Syte Автор Сообщений: 399

  • 27 марта 2022, 20:13
+
0
Любой индикатор или функция корреляции из базы.
В своих советниках обычно использую такой вариант:


extern ENUM_TIMEFRAMES Tf = PERIOD_H1; // таймфрейм 
extern int    Correl_Period  = 14; 
extern double MinCor         = 0.50;  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 double Correl(string base,string hedge,int shift)
   {
   shift=0;
   double u1=0,l1=0,s_1=0;
   int base_bn=iBarShift(base,0,Time[shift],false);
   int hedge_bn=iBarShift(hedge,0,Time[shift],false);   
   
      for(int i = Correl_Period - 1; i >= 0; i--){
         u1 +=(iClose(base,Tf,base_bn+i)-iMA(base,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,base_bn+i))* 
              (iClose(hedge,Tf,hedge_bn+i)-iMA(hedge,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,hedge_bn+i));
         l1 += MathPow(iClose(base,Tf,base_bn+i)-iMA(base,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,base_bn+i),2);
         s_1 += MathPow(iClose(hedge,Tf,hedge_bn+i)-iMA(hedge,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,hedge_bn+i),2);
      }
   double dMathSqrt = MathSqrt(l1*s_1);
   if(dMathSqrt > 0) 
       return(u1 / dMathSqrt);
    return(0);   
  }
//+------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 27 марта 2022, 21:23

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари