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

Рейтинг 2146



РЕКОМЕНДУЮ



Сигнальщик на основе индикатора силы валют.

Добрый день!
Ищу поручителя.
Просьба написать сигнальщик на основе данного индикатора силы валют.
Пример алгоритма на скриншоте. На Н1 мы видим сильную валюту EURUSD (0.84) и слабую валюту USDCHF(-1.28). Разница 2.12.
Хороший разбег между двумя валютами. В этой ситуации я открывался в sell на паре EURUSD. Ордер предсказуемо хорошо отработал.
Алгоритм следующий. Сигнальщик ищет сильную и слабую валюту на заданном в параметрах таймфрейме. В сигнальщике прописывается разница между силами валют. Если сигнальщик находит два инструмента с заданной разницей, он оповещает звуковым сигналом и оповещением в сплывающем окне, где это произошло. Сигнальщик возможно ставить на любой инструмент( не имеет значения). У меня индикатор стоял на AUDCHF, ордер я открывал на EURUSD.
В сигнальщике всего два параметра: таймфрейм и разница силы валют. Этого достаточно.

10.7 CSS.v3.8ps_withAlertsCross.mq4 (80 Kb)



При появлении сигнала, я смотрю находится ли цена в зонах поддержки или сопротивления. В ручном режиме отработка на ура.
Самое главное, вовремя обнаружить сигнал(необходимую разницу силы валют). Это задача сигнальщика. Все остальное делаю сам.
  • 0
  • Просмотров: 3501
  • 11 мая 2021, 02:03
  • marattmb
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
доработать сов
10 мая 2021
12 мая 2021

Брокер для ваших роботов, 15 лет на рынке

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

+
0
Извиняюсь, на скриншоте слабая валюта USD, сильная EUR.
avatar

  12  marattmb Автор Сообщений: 739

  • 11 мая 2021, 02:06
+
0
Буду поручителем;) 

avatar

  12  Slava78 Сообщений: 598

  • 11 мая 2021, 06:24
+
+1
Есть вот такой…УПС не могу его сюда добавить
Редактирован: 11 мая 2021, 18:29
avatar

  10  Shiva Сообщений: 148

  • 11 мая 2021, 18:27
+
0
Сигнальщик ищет сильную и слабую валюту на заданном в параметрах таймфрейме.


пока что не представляю как это буду объяснять машине
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 11 мая 2021, 20:02
+
0
Разница силы валюты в цифровом выражении. Мне казалось, алгоритм простой.
avatar

  12  marattmb Автор Сообщений: 739

  • 11 мая 2021, 21:37
+
0
Возможно, для машины будет проще, если в параметры сигнальщика прописывать непосредственно две валюты. И уже, непосредственно, машине легче будет смотреть разницу между прописанными в параметрах валютами. Правда, тогда придется ставить такой сигнальщик на каждый инструмент, прописывая в сигнальщике валюты инструмента. Получится громоздко. Но раз по другому ни как, то лучше уж так, чем вообще ни как.
avatar

  12  marattmb Автор Сообщений: 739

  • 11 мая 2021, 21:49
+
0
Самая примитивная реализация из советника Андрея bobsley.mq4.
//+------------------------------------------------------------------+
//|                 EA на индикатере 10.7 CSS.v3.8ps_withAlertsCross |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                      bobsley.mq4 |
//|                                     Copyright © 2010, AM2 Group. |
//|                                   http://www.crossmaker.narod.ru |
//+------------------------------------------------------------------+

#define MAGICMA  20101022

extern bool   EA                 = true;
extern string symb1              = "EURUSD";
extern double StopLoss1          = 0.0035;
extern double TakeProfit1        = 0.007;
extern double delta1             = 0.5; //Разница между выбранными символами для открытия позиций
extern bool   Revers1            = true;


extern double Risk               = 0.1;
input ENUM_TIMEFRAMES tf_trade   =  PERIOD_H1;
extern double MaxLots            = 1;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//-------------------
//======================================= 
   double usd = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",0,1);//
   double eur = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",1,1);// 
   double gbp = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",2,1);//
   double jpy = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",3,1);// 
   double aud = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",4,1);//
   double cad = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",5,1);// 
   double nzd = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",6,1);// 
   double chf = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",7,1);// 

//=======================================

   eur = NormalizeDouble(eur,2);
   usd = NormalizeDouble(usd,2);
   jpy = NormalizeDouble(jpy,2);
   cad = NormalizeDouble(cad,2);
   aud = NormalizeDouble(aud,2);
   nzd = NormalizeDouble(nzd,2);
   gbp = NormalizeDouble(gbp,2);
   chf = NormalizeDouble(chf,2);

 Comment("\n\n\n\n\n\n\n\nEUR: "+DoubleToStr(eur,2)+"\nUSD: "+DoubleToStr(usd,2)+"\nJPY: "+DoubleToStr(jpy,2)+"\nCAD: "+DoubleToStr(cad,2)+"\nAUD: "+DoubleToStr(aud,2)+"\nNZD: "+DoubleToStr(nzd,2)+"\nGBP: "+DoubleToStr(gbp,2)+"\nCHF: "+DoubleToStr(chf,2));

//-------------------
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(symb1)==0) CheckForOpenEU();
  }
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int pos=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==symbol && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)  pos++;
        }
     }
//---- return orders volume
   if(pos>0) return(pos);
   return(pos);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpenEU()
  {
   int    res;
   int dig=(int)SymbolInfoInteger(symb1,SYMBOL_DIGITS); 
   double ask = NormalizeDouble(MarketInfo(symb1,MODE_ASK),dig);
   double bid = NormalizeDouble(MarketInfo(symb1,MODE_BID),dig);
//---- 
  
   double usd = iCustom(symb1,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",0,1);//
   double eur = iCustom(symb1,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",1,1);// 
 /*  
   double gbp = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",2,1);//
   double jpy = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",3,1);// 
   double aud = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",4,1);//
   double cad = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",5,1);// 
   double nzd = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",6,1);// 
   double chf = iCustom(NULL,tf_trade,"10.7 CSS.v3.8ps_withAlertsCross",7,1);// 
*/
//-------------------------
 if(Revers1){
//---- sell   
   if(usd-eur>delta1)  
     {
      res=OrderSend(symb1,OP_BUY,Lots(),ask,3,bid-StopLoss1,ask+TakeProfit1,"",MAGICMA,0,Blue);
      return;
     }
//---- buy 
   if(eur-usd>delta1)  
     {
      res=OrderSend(symb1,OP_SELL,Lots(),bid,3,ask+StopLoss1,bid-TakeProfit1,"",MAGICMA,0,Red);
      return;
     } 
    }
   else{
   //---- sell   
   if(usd-eur>delta1)  
     {
      res=OrderSend(symb1,OP_SELL,Lots(),bid,3,ask+StopLoss1,bid-TakeProfit1,"",MAGICMA,0,Red);
      return;
     }
//---- buy 
   if(eur-usd>delta1)  
     {
      res=OrderSend(symb1,OP_BUY,Lots(),ask,3,bid-StopLoss1,ask+TakeProfit1,"",MAGICMA,0,Blue);
      return;
     }
   }      
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lots()
  {
   double Lots;
   Lots=AccountFreeMargin()/10000*5;
   Lots=MathMin(15,MathMax(0.01,Lots));
   if(Lots<0.01) 
     Lots=NormalizeDouble(Lots,2);
   else
     {
     if(Lots<1) Lots=NormalizeDouble(Lots,1);
     else       Lots=NormalizeDouble(Lots,0);
     }
     if(Lots>MaxLots)Lots=MaxLots;
     return(Lots);
  }
//+------------------------------------------------------------------+  

По аналогии можно вписать любое кол-во пар, как отдельная функция
void CheckForOpenUСhf()
а затем передать в void OnTick() как
if(CalculateCurrentOrders(symb2)==0) CheckForOpenUChf();
avatar

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

  • 13 мая 2021, 19:54
+
0
Не пойму логики. А почему продал, а не купил? Что всегда нужно продавать?
avatar

  14  Syte Сообщений: 399

  • 14 мая 2021, 13:33
+
0
Сила валюты не может быть постоянно сильной или постоянно слабой. Рано или поздно произойдет выравнивание сил. Ордер открывается в ожидании такого выравнивания.
avatar

  12  marattmb Автор Сообщений: 739

  • 14 мая 2021, 15:26
+
0
Все равно не понятно. Почему sell, а не buy. И что считать сильным? Какое минимальное значение можно считать сильным?
avatar

  14  Syte Сообщений: 399

  • 14 мая 2021, 18:06
+
0
сейчас на скрине доллар ниже -0.7 а кенгуру выше 0.7. можно сделать сигнал когда валюта выйдет за уровень

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 14 мая 2021, 19:07
+
0
Я сделал ему сигнал на 28 пар, но как рассчитать разбег?
if((arrUSD[1] <= -Alert_Level2 && arrNZD[1] >= Alert_Level) ||
            (arrUSD[1] >= Alert_Level2 && arrNZD[1] <= -Alert_Level) ||
            (arrUSD[1] >= Alert_Level && arrNZD[1] <= -Alert_Level2) ||
            (arrUSD[1] <= -Alert_Level && arrNZD[1] >= Alert_Level2))
            {
             Alert(Symbol6); 
            }
avatar

  12  Slava78 Сообщений: 598

  • 14 мая 2021, 19:44
+
0
Я сделал ему сигнал на 28 пар, но как рассчитать разбег?


1. занести валюты в массив.
2. отсортировать по возрастанию убыванию
3. взять по первому элементу
4. запомнить максимум минимум
5. получить разницу
6. пробежать по массивам и определить валюту сравнивая с макс и мин
7. выдать сигнал *music* 

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 14 мая 2021, 20:20
+
0
*shock* *shock* *shock* 
avatar

  12  Slava78 Сообщений: 598

  • 14 мая 2021, 20:27
+
0
Возможно. Разбег = 1.48 NZD=0.76, USD= -0.72. Но еще лучше, когда разбег будет в районе 2. Чем больше разбег, тем надежнее сигнал и отработка быстрее. Если войти при меньшем разбеге, то иногда приходится усредняться, т.к. цена какое-то время может идти против Вас. Но профит Вы получите в любом случае.Чем больше разбег, тем меньше усреднений и быстрее отработка. Чем меньше разбег, тем больше усреднений и дольше отработка. Но иногда и сразу отрабатывает. По-разному бывает.
avatar

  12  marattmb Автор Сообщений: 739

  • 14 мая 2021, 19:24
+
0
В этом случаи, эту пару следует продать или купить? Я просто не пойму в каком случаи пару продаем или покупаем. Можно как то описать это по подробнее?
avatar

  14  Syte Сообщений: 399

  • 16 мая 2021, 09:38
+
0
Мне казалось, по ранним постам все понятно. Вы не расстраивайтесь. У нас с Вами восприятия разные.Это не Ваш грааль.
avatar

  12  marattmb Автор Сообщений: 739

  • 16 мая 2021, 10:08
+
0
Хм… Я и не расстраиваюсь. Я просто понять хочу. Если показатель скажем по евро больше, чем по баксу, то продавать? Или если по баксу больше чем по евро, то покупать? Все, что хочу понять. Или скажем по nzd больше чем по usd то продаем?
avatar

  14  Syte Сообщений: 399

  • 16 мая 2021, 11:17
+
0
Больше или меньше, это не важно. Важна разница между силами валют. Чем больше разница, тем быстрее произойдет отработка ордера. Обратите внимание на самый первый мой скриншот. Там есть сильная валюта( EUR + 0.84 ) и слабая ( USD — 1.28 ). Разница = 2.12 Разбег очень хороший для открытия ордера. Работа идет по инструменту EURUSD в сторону ослабления EUR и усиления USD, а значит ордер открывается в sell.
avatar

  12  marattmb Автор Сообщений: 739

  • 16 мая 2021, 11:31
+
0
Другими словами, если будет на оборот. Скажем usd +0.84, а eur -1.28 то покупаем? Ну теперь понятно. Покупка или продажа, идет от сильной к слабой валюте. Показатель должен быть больше 2. Судя по описанию. В общем теперь въехал. Спасибо.
Редактирован: 16 мая 2021, 12:02
avatar

  14  Syte Сообщений: 399

  • 16 мая 2021, 11:59
+
0
Назрел вопрос про стопы. Какие их ставишь? Просто интересно.
avatar

  14  Syte Сообщений: 399

  • 17 мая 2021, 11:25
+
0
Я их не ставлю. Входы на столько точные, что в этом нет необходимости. В крайнем случае, усредняюсь. Но нужно терпение, чтобы войти точно. Не спешить со входом, дождаться хорошей разницы сил валют.
avatar

  12  marattmb Автор Сообщений: 739

  • 17 мая 2021, 11:28
+
0
А если можно уточните средний показатель закрытия сделки? Я имею ввиду от открытия позиции, когда закрываете? Что служит сигналом для закрытия позиции? На 500 пунктов на 1000? Сколько среднее забираете в пунктах прибыль? И про усреднение, в каком случаи ставите дополнительный ордер? Какое расстояние, или какое условие для открытия второй сделки?
avatar

  14  Syte Сообщений: 399

  • 17 мая 2021, 13:23
+
0
А профит, когда сила валют достигнет 0? Или как-то по другому профит выставлять?
avatar

  20  nonych Сообщений: 125 - Евгеша

  • 17 мая 2021, 12:28
+
0
По своему усмотрению.
avatar

  12  marattmb Автор Сообщений: 739

  • 17 мая 2021, 12:44
+
+1
Я же говорю, от степени жадности. Зависит от многих факторов. Ну например таких, как зоны поддержки и сопротивления.
avatar

  12  marattmb Автор Сообщений: 739

  • 17 мая 2021, 13:28
+
0
Мутная стратегия. Но жутко интересная :) ;) )
avatar

  14  Syte Сообщений: 399

  • 17 мая 2021, 13:31
+
0
Зависит от Вашего восприятия.
avatar

  12  marattmb Автор Сообщений: 739

  • 17 мая 2021, 13:32
+
0
Согласен. По этому и хотелось бы узнать об этом по подробнее. Есть более менее четкий вход, а выход зависит уже от жадности. Но уровень жадности у каждого свой. Вот это уже напрягает. Может есть более менее доступный выход из сделки? Я не говорю о четких стопах. Уже понял, что их нету, но какой то показатель на выход из сделки ве таки должен быть?!
avatar

  14  Syte Сообщений: 399

  • 17 мая 2021, 13:35
+
+1
Вы, как я понимаю, уже продолжительное время торгуете по этой стратегии. А сколько сделок в неделю или в день? Хотя бы примерно!
avatar

  20  nonych Сообщений: 125 - Евгеша

  • 17 мая 2021, 13:39
+
0
Он есть, и я Вам указал на него. Вы не восприняли. Думаю, этот сайт не для обсуждения стратегии. У Вас есть тестер, демо-счет.
Удачи!
avatar

  12  marattmb Автор Сообщений: 739

  • 17 мая 2021, 13:39
+
+1
И еще вопрос, вот сейчас на Н4 японец далеко в плюсе, а на Н1 далеко в минусе. Вопрос на какой таймфрем ориентироваться?
Т.е. по Н4 японца относительно новозеландца надо продавать. А по Н1 выходит наоборот. На что ориентироваться?
Редактирован: 17 мая 2021, 13:47
avatar

  20  nonych Сообщений: 125 - Евгеша

  • 17 мая 2021, 13:42
+
0
Я чувствую, что нас уже послали. И более мене внятного чего то уже вряд ли услышим. :) ;) ))
avatar

  14  Syte Сообщений: 399

  • 17 мая 2021, 13:47
+
0
Все обсуждения моих стратегий( а у меня их много) здесь
forexsystemsru.com/threads/sistema-na-osnove-korreljacii-ot-marattmb-iz-graalej-sovetnik-abram.86194/page-396#post-1673160
avatar

  12  marattmb Автор Сообщений: 739

  • 17 мая 2021, 13:53
+
0
Да, лучше так сделать «Возможно, для машины будет проще, если в параметры сигнальщика прописывать непосредственно две валюты. И уже, непосредственно, машине легче будет смотреть разницу между прописанными в параметрах валютами. Правда, тогда придется ставить такой сигнальщик на каждый инструмент, прописывая в сигнальщике валюты инструмента. Получится громоздко. Но раз по другому ни как, то лучше уж так, чем вообще ни как» И валюты в паре прописывать не надо. На какой паре стоит, те валюты и считает!!!!!!!!!!!!!!!!!!!!!*budenov* 
avatar

  20  nonych Сообщений: 125 - Евгеша

  • 17 мая 2021, 16:02
+
0
Проще тогда мультивалютную сову сразу написать.
avatar

  14  Syte Сообщений: 399

  • 17 мая 2021, 16:57
+
0
В верху есть код советника для одной пары.Тестируйте.У советника есть особенность (зависит от индикатора) — работает только при включенной визуализации.Закрытие позиции или по стопу или по тейку.
Советник для пары EURUSD. Но вы сами можете переписать его под любую пару.
avatar

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

  • 17 мая 2021, 16:59
+
0
Т.е. в тестере он работать не будет?
avatar

  20  nonych Сообщений: 125 - Евгеша

  • 17 мая 2021, 17:51
+
0
А как разобраться с этими значениями — StopLoss1 = 0.0035; (это сколько для пятизнака)
TakeProfit1 = 0.007; (а это)?
avatar

  20  nonych Сообщений: 125 - Евгеша

  • 17 мая 2021, 17:55
+
0
В тестере работает.
Для пятизнака: 700*Point=0.007
avatar

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

  • 17 мая 2021, 19:02

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