OSS5

 
Уровень 13


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

Рейтинг 2087



РЕКОМЕНДУЮ



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

Доброе утро.

Добавьте пожалуйста в эксперт «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
  • Просмотров: 2990
  • 21 сентября 2021, 05:01
  • OSS5
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

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

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




avatar

  13  OSS5 Автор Сообщений: 128

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

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

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

  13  OSS5 Автор Сообщений: 128

  • 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

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

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

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

  13  OSS5 Автор Сообщений: 128

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

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

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

  13  OSS5 Автор Сообщений: 128

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

avatar

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

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

  13  OSS5 Автор Сообщений: 128

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





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

  13  OSS5 Автор Сообщений: 128

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

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

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

  13  OSS5 Автор Сообщений: 128

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

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

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

  13  OSS5 Автор Сообщений: 128

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

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