0
Андрей, а будет время, сделать тоже самое, только под мт5


функции одинаковые. посмотрите, если что то не работает подправлю
avatar

AM2

  • 22 июля 2022, 17:32
0
вот целиком скрипт:


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

#property show_inputs

input string FileName = "temp";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   if(!ChartSaveTemplate(0,FileName))
   Print(__FUNCTION__," Couldnot Save template : " + "Error = " + string(GetLastError()));
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 21 июля 2022, 21:39
0
если сохранять в другой паке получим ошибку 4001.


input string FileName = "papka\\temp";


ERR_INTERNAL_ERROR 4001 Неожиданная внутренняя ошибка


это к разрабам
avatar

AM2

  • 21 июля 2022, 20:00
0


#property show_inputs

input string FileName = "temp";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   if(!ChartSaveTemplate(0,FileName))
   Print(__FUNCTION__," Couldnot Save template : " + "Error = " + string(GetLastError()));
avatar

AM2

  • 21 июля 2022, 19:56
+1
подправил. на скрине видно что МА в комменте изменила значение с 40 до 42: www.opentraders.ru/downloads/3362/

avatar

AM2

  • 20 июля 2022, 18:39
0
мне на скрине нужно видеть входы, тогда доделаю
avatar

AM2

  • 19 июля 2022, 21:22
0
словами опишите входы
avatar

AM2

  • 19 июля 2022, 18:41
0
большую часть написал:


//+------------------------------------------------------------------+
//|                                                         Tema.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 trade;

input double Lots    = 0.1;   // лот
input double Risk    = 2;     // риск

input int StopLoss   = 5555;  // стоплосс
input int TakeProfit = 1111;  // тейкпрофит
input int Trail      = 250;   // шаг

input int MAPeriod   = 55;    // период МА

input int Fast       = 12;
input int Slow       = 24;
input int Signal     = 9;

input ulong Magic    = 123;   // магик

double macd[2],tema[2];

int th=0,mh=0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   trade.SetExpertMagicNumber(Magic);

   th=iTEMA(_Symbol,0,MAPeriod,0,PRICE_CLOSE);
   mh=iMACD(_Symbol,0,Fast,Slow,Signal,PRICE_CLOSE);

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   
   if(Risk>0) lot=AccountInfoDouble(ACCOUNT_BALANCE)*Risk/100000;

   return(NormalizeDouble(lot,2));
  }
  //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   double tp=0,sl=0;
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

   if(PositionSelect(_Symbol))
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         if(Bid-PositionGetDouble(POSITION_PRICE_OPEN)>Trail*_Point)
           {
            if(PositionGetDouble(POSITION_SL)<Bid-Trail*_Point)
              {
               sl = Bid-Trail*_Point;
               tp = PositionGetDouble(POSITION_PRICE_OPEN)+TakeProfit*_Point;
               trade.PositionModify(_Symbol,sl,tp);
              }
           }
        }

      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         if(PositionGetDouble(POSITION_PRICE_OPEN)-Ask>Trail*_Point)
           {
            if((PositionGetDouble(POSITION_SL)>(Ask+Trail*_Point)) || (PositionGetDouble(POSITION_SL)==0))
              {
               sl=Ask+Trail*_Point;
               tp=PositionGetDouble(POSITION_PRICE_OPEN)-TakeProfit*_Point;
               trade.PositionModify(_Symbol,sl,tp);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int type=-1)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetInteger(POSITION_MAGIC)==Magic)
           {
            if(PositionGetInteger(POSITION_TYPE)==type || type==-1)
              {
               trade.PositionClose(PositionGetTicket(i));
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CopyBuffer(th,0,0,2,tema);
   CopyBuffer(mh,0,0,2,macd);

   double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

   bool buy =  ask>tema[0] && macd[0]>0 && macd[1]<0;
   bool sell = bid<tema[0] &&  macd[0]<0 && macd[1]>0;
   
   if(Trail>0) Trailing();

   if(PositionsTotal()<1)
     {
      if(buy)
        {
         trade.Buy(Lot(),_Symbol,ask,NormalizeDouble(bid-StopLoss*_Point,_Digits),NormalizeDouble(bid+TakeProfit*_Point,_Digits));
        }

      if(sell)
        {
         trade.Sell(Lot(),_Symbol,bid,NormalizeDouble(ask+StopLoss*_Point,_Digits),NormalizeDouble(ask-TakeProfit*_Point,_Digits));
        }
     }

   Comment("\n Trades: ",PositionsTotal(),
           "\n TEMA: ",tema[0],
           "\n MACD1: ",macd[0],
           "\n MACD2: ",macd[1]);
  }
//+------------------------------------------------------------------+

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

avatar

AM2

  • 18 июля 2022, 22:15
0
сигнал покажите на скрине
avatar

AM2

  • 18 июля 2022, 21:55
0
посмотрю сегодня
avatar

AM2

  • 18 июля 2022, 17:15
0
о можно перенести буфер на следующую свечку после дожи


можно: www.opentraders.ru/downloads/3361/



avatar

AM2

  • 16 июля 2022, 06:38
0
какие параметры указать программе для нахождения дожи
avatar

AM2

  • 15 июля 2022, 17:01
0
по сигналам в целом нормально срабатывает, даже если много поз. а трал может некорректно работать. поставьте другой.
avatar

AM2

  • 14 июля 2022, 20:31