0
на завтра
avatar

AM2

  • 31 мая 2018, 17:32
0
тейк в настройках ставьте 0
avatar

AM2

  • 31 мая 2018, 17:27
0
у вас колоссальный опыт торговли, а тут 2 машки плюс не отличаете закрытие по тейку от закрытия по сигналу. что с вами?
avatar

AM2

  • 30 мая 2018, 21:20
0
нужен второй индикатор фибо аналогичный стандартному


если просто аналог то вот:
www.opentraders.ru/downloads/1917/
avatar

AM2

  • 30 мая 2018, 19:19
0
я уж думал что то оригинальное. тут же с двумя машками советников хоть пруд пруди


//+------------------------------------------------------------------+
//|                                                          2MA.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsyatems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots        = 0.1;      // лот
extern int StopLoss       = 0;        // лось
extern int TakeProfit     = 200;      // язь
extern int MA1Period      = 30;       // период МА1
extern int MA2Period      = 50;       // период МА2
extern ENUM_TIMEFRAMES TF = 60;       // период графика
extern int Slip           = 30;       // реквот
extern int Shift          = 1;        // на каком баре сигнал индикатора
extern int Magic          = 123;      // магик

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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;
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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 ma11=iMA(NULL,TF,MA1Period,0,0,0,Shift);
   double ma12=iMA(NULL,TF,MA1Period,0,0,0,Shift+1);
   double ma21=iMA(NULL,TF,MA2Period,0,0,0,Shift);
   double ma22=iMA(NULL,TF,MA2Period,0,0,0,Shift+1);

   if(CountTrades()<1)
     {
      if(ma11>ma21 && ma12<ma22)
        {
         PutOrder(0,Ask);
        }

      if(ma11<ma21 && ma12>ma22)
        {
         PutOrder(1,Bid);
        }
     }

   if(ma11>ma21 && ma12<ma22)
     {
      CloseAll(1);
     }

   if(ma11<ma21 && ma12>ma22)
     {
      CloseAll(0);
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 30 мая 2018, 19:02
0

//не знаю как написать правильно, хочу получить не 1.8.... а чтобы было без точки целое число, но мне кажется это глупо так умножать...
   PutLabel("ATR YEAR to 10YEARS:","ATR YEAR "+(string)((int)ATR_YEARSS),650,250);



а это:


   int shift1=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-1))));
   int shift2=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-2))));
   int shift3=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-3))));
   int shift4=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-4))));
   int shift5=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-5))));
   int shift6=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-6))));
   int shift7=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-7))));
   int shift8=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-8))));
   int shift9=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-9))));
   int shift10=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-10))));

   double lo1=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift1));
   double lo2=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift2));
   double lo3=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift3));
   double lo4=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift4));
   double lo5=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift5));
   double lo6=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift6));
   double lo7=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift7));
   double lo8=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift8));
   double lo9=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift9));
   double lo10=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift10));

   double hi1=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift1));
   double hi2=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift2));
   double hi3=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift3));
   double hi4=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift4));
   double hi5=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift5));
   double hi6=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift6));
   double hi7=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift7));
   double hi8=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift8));
   double hi9=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift9));
   double hi10=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift10));

   double ATR_YEARSS=(((hi1-lo1)+(hi2-lo2)+(hi3-lo3)+(hi4-lo4)+(hi5-lo5)+(hi6-lo6)+(hi7-lo7)+(hi8-lo8)+(hi9-lo9)+(hi10-lo10)/10));


можно так примерно записать:


   for(int i=1;i<11;i++)
     {
      double atr=0;
      int shift=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-i))));
      double lo=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift));
      double hi=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift));
      atr+=(hi-lo);
     }
avatar

AM2

  • 30 мая 2018, 18:45
0
Я сейчас обновил советник. В следующем месяце могу сделать еще одну попытку, а если уж нет тогда к платному.

www.opentraders.ru/downloads/1901/
avatar

AM2

  • 30 мая 2018, 18:27
0
В какком смысле просчет по барам?

вы же программируете. вот условие на вход:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double green1=iCustom(NULL,0,IndName2,Sensetive,DeadZonePip,ExplosionPower,TrendPower,0,Shift);
   double red1=iCustom(NULL,0,IndName2,Sensetive,DeadZonePip,ExplosionPower,TrendPower,1,Shift);
   double green2=iCustom(NULL,0,IndName2,Sensetive,DeadZonePip,ExplosionPower,TrendPower,0,Shift+1);
   double red2=iCustom(NULL,0,IndName2,Sensetive,DeadZonePip,ExplosionPower,TrendPower,1,Shift+1);

   if(green1>0 && red2>0 && Vert()==1)
     {
      PutOrder(0,Ask);
     }

   if(red1>0 && green2>0 && Vert()==2)
     {
      PutOrder(1,Bid);
     }
  }


вот функция проверки наличия условия:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Vert()
  {
   int vert=0;

   for(int i=0;i<15;i++)
     {
      if(iCustom(NULL,0,IndName,TrendPeriod,ForcePeriod,LineValue,VerticalShift,2,i)>=0.9) {vert=1;break;}//blu
      if(iCustom(NULL,0,IndName,TrendPeriod,ForcePeriod,LineValue,VerticalShift,1,i)>=0.9) {vert=2;break;}//red
     }
   return(vert);
  }
avatar

AM2

  • 30 мая 2018, 18:10
0
по барам тоже, это видно с Вашего скрина


почему по барам не подходит? там получается как надо.
avatar

AM2

  • 30 мая 2018, 17:39
0
на фибо больше времени надо. гляну в выходные
avatar

AM2

  • 30 мая 2018, 17:31
0
Пока единственное что пришло в голову делать просчет вертекс на ограниченное количество баров, тогда получаем нужную картинку:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Vert()
  {
   int vert=0;

   for(int i=0;i<15;i++)
     {
      if(iCustom(NULL,0,IndName,TrendPeriod,ForcePeriod,LineValue,VerticalShift,2,i)>=0.9) {vert=1;break;}//blu
      if(iCustom(NULL,0,IndName,TrendPeriod,ForcePeriod,LineValue,VerticalShift,1,i)>=0.9) {vert=2;break;}//red
     }
   return(vert);
  }


avatar

AM2

  • 29 мая 2018, 21:29
0
здесь могу сделать попеременно бай селл. как сделать на сигнал по одной сделке не сообразил пока, может завтра что придумаю. если есть соображения по алгоритму, выкладывайте.
avatar

AM2

  • 29 мая 2018, 21:19
0
Здесь удалось укоротить луч и отследить текущее направление последнего отрезка. Пробовал поймать смену направления луча по буферам, никак.
www.opentraders.ru/downloads/1914/

avatar

AM2

  • 29 мая 2018, 20:57
0
посмотрю в четверг
avatar

AM2

  • 29 мая 2018, 17:53
0
что и как меняется запоминается, посяните на скринах
avatar

AM2

  • 29 мая 2018, 17:49
0
на завтра
avatar

AM2

  • 29 мая 2018, 17:45
0
посмотрел индикатор. а что у вас является сигналом? покажите на скрине.
avatar

AM2

  • 28 мая 2018, 21:30