0
реквот
avatar

AM2

  • 29 сентября 2021, 17:46
0
покажите все операции пошагово на скринах, т.к. у вас совершенно другая логика
avatar

AM2

  • 28 сентября 2021, 23:20
0
вы дали ссылку на нерабочий советник
avatar

AM2

  • 28 сентября 2021, 22:36
0
В настоящее время он работает с этим кодом.
кто?
avatar

AM2

  • 28 сентября 2021, 17:45
+1
как то уже переделывал. вот код:


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

input double Lots       = 0.1;  // лот
input int    StopLoss   = 200;  // стоплосс
input int    TakeProfit = 3000; // тейкпрофит
input int    Slip       = 100;  // проскальзывание
input int    Magic      = 123;  // магик

input string S1="S1"; // отбой от сопротивления
input string S2="S2"; // пробой сопротивления

input string P1="P1"; // отбой от поддержки
input string P2="P2"; // пробой поддержки

input int delta=50;   // диапазон

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double sl=0,tp=0;

   double s1=ObjectGetValueByTime(0,"S1",iTime(NULL,0,0));
   double p1=ObjectGetValueByTime(0,"P1",iTime(NULL,0,0));

   double s2=ObjectGetValueByTime(0,"S2",iTime(NULL,0,0));
   double p2=ObjectGetValueByTime(0,"P2",iTime(NULL,0,0));

// отбой от сопротивления

   if(s1>0 && Bid<s1 && Bid>s1-delta*_Point)
     {
      if(CountTrades()<1)
        {
         PutOrder(1,Bid);
        }
     }

// отбой от поддержки

   if(p1>0 && Bid>p1 && Bid<p1+delta*_Point)
     {
      if(CountTrades()<1)
        {
         PutOrder(0,Ask);
        }
     }

// пробой сопротивления

   if(s2>0 && Bid>s2 && Bid<s2+delta*_Point)
     {
      if(CountTrades()<1)
        {
         PutOrder(0,Ask);
        }
     }

// пробой поддержки

   if(p2>0 && Bid<p2 && Bid>p2+delta*_Point)
     {
      if(CountTrades()<1)
        {
         PutOrder(1,Bid);
        }
     }

   Comment("\n S1: ",s1,
           "\n P1: ",p1,
           "\n S2: ",s2,
           "\n P2: ",p2);
  }
//+------------------------------------------------------------------+

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

avatar

AM2

  • 28 сентября 2021, 01:01
0
добавить одновременное выставление стоповых ордеров
этот момент подробнее пожалуйста.
avatar

AM2

  • 28 сентября 2021, 00:49
0
на 28-е
avatar

AM2

  • 25 сентября 2021, 19:37
0
можно определять тренд по МА и брать сигнал от стрелочника. устроит?
avatar

AM2

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

AM2

  • 25 сентября 2021, 19:27
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

AM2

  • 23 сентября 2021, 20:48
+1
покажите на скрине когда сигналить?
avatar

AM2

  • 23 сентября 2021, 18:42
0
а где бегинер мк5?
avatar

AM2

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

AM2

  • 22 сентября 2021, 16:05