OSS5

 
Уровень 15


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

Рейтинг 2153



РЕКОМЕНДУЮ



Доработка треугольника.

Доброе утро.

Добавьте пожалуйста в эксперт «Mult.mq5» (http://www.opentraders.ru/downloads/3100/) индикатор ZigZag (ZZ). Увеличение лота.

Индикатор ZZ стоит на Symbol1.

Принцип работы:
На Symbol1 поступил сигнал с ZZ на покупку, ставим на Symbol1 (buy 0.1), а на Symbol2 (sell 0.1) и на Symbol3 (sell 0.1).
Цена развернулась и на Symbol1 поступил сигнал с ZZ на продажу, ставим на Symbol1 (sell 0.2), а на Symbol2 (buy 0.2) и на Symbol3 (buy 0.2), и так далее будем переворачиваться и увеличивать лот пока не достигнем профита в валюте или убытка в валюте.
После закрытия всех ордеров начинаем с начального лота 0.1.

Спасибо.
  • 0
  • Просмотров: 3224
  • 21 сентября 2021, 05:01
  • OSS5
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
сигнал покажите на скрине
avatar

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

  • 21 сентября 2021, 18:21
0




avatar

  15  OSS5 Автор Сообщений: 162

  • 21 сентября 2021, 23:01
0
на 27-е
avatar

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

  • 22 сентября 2021, 16:05
0
Окей.
avatar

  15  OSS5 Автор Сообщений: 162

  • 22 сентября 2021, 16:39
0
это все работает но ровно до тех пор пока зигзаг начнет выдавать неверный сигнал:




//+------------------------------------------------------------------+
//|                                                        Mult2.mq5 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

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

//--- входные параметры группы 1
input
double   Lots      = 0.1;       // лот
input
double   Loss      = 3000;      // Лось в валюте
input
double   Profit    = 100;       // Профит в валюте

input
string   Symb1     = "EURUSD";  // 1-й символ
input
string   Symb2     = "GBPUSD";  // 2-й символ
input
string   Symb3     = "EURGBP";  // 3-й символ

input
int      Slip      = 50;        // Проскальзывание

input
string IndName     = "Examples\\ZigZag";

int zz=0;
int bars=0;
double zi[];
bool b=1,s=1;
CTrade trade;                         // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
 
{
   zz
=iCustom(Symb1,0,IndName);
   
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),Slip);
       
}
     
}
 
}
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
double AllProfit()
 
{
   
double p=0;

   
for(int i=PositionsTotal()-1; i>=0; i--)
     
{
     
if(PositionSelectByTicket(PositionGetTicket(i)))
       
{
         p
+=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP);
       
}
     
}
   
return(p);
 
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string sm)
 
{
   
int count=0;

   
for(int i=PositionsTotal()-1; i>=0; i--)
     
{
     
if(PositionSelectByTicket(PositionGetTicket(i)))
       
{
         
if(PositionGetString(POSITION_SYMBOL)==sm)
           
{
           
if(OrderGetInteger(ORDER_TYPE)<2)
               count
++;
           
}
       
}
     
}
   
return(count);
 
}
//+------------------------------------------------------------------+
//| Лот                                                              |
//+------------------------------------------------------------------+
double Lot(string sm)
 
{
   
double lots=Lots;

   lots
=NormalizeDouble(Lots*MathPow(2,CountTrades(sm)),2);

   
if(lots>5)
      lots
=Lots;
   
if(lots<0.1)
      lots
=0.1;

   
return(lots);
 
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ZZPrice(int n=0)
 
{
   
int i=0,ke=0;

   
for(i=1; i<333; i++)
     
{
     
if(zi[i]!=0)
       
{
         ke
++;
         
if(ke>n)
           
return(zi[i]);
       
}
     
}
   
return(0);
 
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
 
{
   
double Ask1=SymbolInfoDouble(Symb1,SYMBOL_ASK);
   
double Ask2=SymbolInfoDouble(Symb2,SYMBOL_ASK);
   
double Ask3=SymbolInfoDouble(Symb3,SYMBOL_ASK);

   
double Bid1=SymbolInfoDouble(Symb1,SYMBOL_BID);
   
double Bid2=SymbolInfoDouble(Symb2,SYMBOL_BID);
   
double Bid3=SymbolInfoDouble(Symb3,SYMBOL_BID);

   
ArraySetAsSeries(zi,true);
   
CopyBuffer(zz,0,1,333,zi);

   
if(bars!=Bars(NULL,0))
     
{
     
if(AllProfit()>Profit || AllProfit()<-Loss)
         
CloseAll();

     
if(Symb1!="")
       
{
         
if(ZZPrice(0)>ZZPrice(1) && b)
           
{
            trade
.PositionOpen(Symb1,1,Lot(Symb1),Bid1,0,0);
            trade
.PositionOpen(Symb2,0,Lot(Symb2),Ask2,0,0);
            trade
.PositionOpen(Symb3,0,Lot(Symb3),Ask3,0,0);
            b
=0;
            s
=1;
           
}
         
if(ZZPrice(0)<ZZPrice(1) && s)
           
{
            trade
.PositionOpen(Symb1,0,Lot(Symb1),Ask1,0,0);
            trade
.PositionOpen(Symb2,1,Lot(Symb2),Bid2,0,0);
            trade
.PositionOpen(Symb3,1,Lot(Symb3),Bid3,0,0);
            s
=0;
            b
=1;
           
}
       
}
      bars
=Bars(NULL,0);
     
}

   
Comment("\n Profit : ",AllProfit(),
           
"\n ZZ1 : ",NormalizeDouble(ZZPrice(0),_Digits),
           
"\n ZZ2 : ",NormalizeDouble(ZZPrice(1),_Digits));
 
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+



avatar

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

  • 23 сентября 2021, 20:48
0
А почему так происходит.

Оставил только первый символ, менял сигналы zz на противоположные. Всё равно как-то рандомно ставит ордера.
avatar

  15  OSS5 Автор Сообщений: 162

  • 24 сентября 2021, 06:35
+
0
зигзаг дает неверный сигнал. я делал подобный на пересечении МА, нормально работает
avatar

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

  • 25 сентября 2021, 19:27
0
Андрей, если вам удобней на МА сделать, я не буду против. ZZ потом сам попробую добавить.
Редактирован: 26 сентября 2021, 19:17
avatar

  15  OSS5 Автор Сообщений: 162

  • 26 сентября 2021, 19:05
+
0
сделал на 2-х МА: www.opentraders.ru/downloads/3136/

avatar

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

  • 28 сентября 2021, 23:18
0
Спасибо Андрей, буду тестировать.
avatar

  15  OSS5 Автор Сообщений: 162

  • 29 сентября 2021, 05:18
0
Замечено, не выставление ордеров (стоит на демо), может какую проверку добавить при выставлении ордеров.





Редактирован: 29 сентября 2021, 12:43
avatar

  15  OSS5 Автор Сообщений: 162

  • 29 сентября 2021, 10:26
+
0
реквот
avatar

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

  • 29 сентября 2021, 17:46
0
Так понятно, что реквот. А как его победить? Надо снова и снова пытаться выставить ордер, пытаться до тех пор пока ордер не встанет. Иначе вся логика работы нарушается. Так?
avatar

  15  OSS5 Автор Сообщений: 162

  • 30 сентября 2021, 04:26
+
0
самый простой способ — увеличить проскальзывание
avatar

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

  • 30 сентября 2021, 20:41
0
Согласен.
avatar

  15  OSS5 Автор Сообщений: 162

  • 30 сентября 2021, 21:51

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