0
Нет стрелок почему то

Особенности ТЗ:

и если запустить график этого символа то видем стрелку (отметку) на точке, где произошло обновление.
avatar

AM2

  • 11 декабря 2016, 16:01
0
Править чужой код мало кто берется.
avatar

AM2

  • 11 декабря 2016, 10:07
0
Сделал все что вы просили: www.opentraders.ru/downloads/1417/

avatar

AM2

  • 11 декабря 2016, 09:57
+1
Реально сделать такую штуку. В понедельник начну делать.
avatar

AM2

  • 10 декабря 2016, 19:29
0
Изобразите на скрине все то что вы хотите?
avatar

AM2

  • 10 декабря 2016, 15:09
0
Завтра начну делать.
avatar

AM2

  • 10 декабря 2016, 15:06
0
Посмотрю вечером.
avatar

AM2

  • 9 декабря 2016, 07:06
+1
Чтобы сделать с нуля копировщик нужны наработки, а у меня их нет. Я полностью рабочий вариант на несколько терминалов никогда не делал. Исходников тоже нигде не встречал.
avatar

AM2

  • 8 декабря 2016, 20:30
+1
Вот первый блин. Есть входы по индикатору во и ма, закрытие по сигналу, бу: www.opentraders.ru/downloads/1416/



//+------------------------------------------------------------------+
//|                                                           WO.mq5 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.02"

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


//--- входные параметры эксперта
input int      TP        = 1111;      // Тейкпрофит
input int      SL        = 1111;      // Стоплосс
input int      BULevel   = 200;       // Уровень БУ
input int      BUPoint   = 20;        // Пункты БУ
input int      Slip      = 50;        // Проскальзывание
input double   Lot       = 1;         // Количество лотов для торговли 

//--- входные параметры индикатора MA
input int      MAPeriod=28;           // Период MA
//+-----------------------------------------------+
//|  ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА WO              |
//+-----------------------------------------------+
//---- Параметры RSI
input double RSIWeight=1.0;
input uint   RSIPeriod=14;
input ENUM_APPLIED_PRICE   RSIPrice=PRICE_CLOSE;
//---- Параметры MFI
input double MFIWeight=1.0;
input uint   MFIPeriod=14;
input ENUM_APPLIED_VOLUME MFIVolumeType=VOLUME_TICK;
//---- Параметры WPR
input double WPRWeight=1.0;
input uint   WPRPeriod=14;
//---- Параметры DeMarker
input double DeMarkerWeight=1.0;
input uint   DeMarkerPeriod=14;
//---- Включение сглаживания волны
input Smooth_Method bMA_Method=MODE_JJMA; //метод усреднения
input uint bLength=5; //глубина сглаживания                    
input int bPhase=100; //параметр сглаживания,
//---- для JJMA изменяющийся в пределах -100 ... +100, влияет на качество переходного процесса;
//---- Для VIDIA это период CMO, для AMA это период медленной скользящей
input uint HighLevel=70;         // уровень перезакупа
input uint LowLevel=30;          // уровень перепроданности

                                 //WOHandle=iCustom(NULL,0,"WeightOscillator",RSIWeight,RSIPeriod,RSIPrice,MFIWeight,MFIPeriod,WPRWeight,WPRPeriod,DeMarkerWeight,DeMarkerPeriod,bMA_Method,bLength,bPhase,HighLevel,LowLevel);

//--- глобальные переменные
int MAHandle;                         // Хэндл индикатора MA
int WOHandle;                         // Хэндл индикатора WO
double WO[3],MA[1];                   // Динамические массивы для хранения численных значений индикаторов

CTrade trade;                         // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Получаем хэндл индикаторов  Bollinger Bands 
   MAHandle=iMA(NULL,0,MAPeriod,0,0,0);
   WOHandle=iCustom(NULL,0,"WeightOscillator");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- освобождаем хэндл индикатора
   IndicatorRelease(MAHandle);
   IndicatorRelease(WOHandle);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double sl=0,tp=0;

   for(int i=PositionsTotal()-1;i>=0;i--)
     {
      if(PositionSelect(_Symbol))
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            if(PositionGetDouble(POSITION_PRICE_OPEN)<=Bid-(BULevel+BUPoint)*_Point)
              {
               if(PositionGetDouble(POSITION_PRICE_OPEN)>PositionGetDouble(POSITION_SL))
                 {
                  sl=PositionGetDouble(POSITION_PRICE_OPEN)+BUPoint*_Point;
                  tp=PositionGetDouble(POSITION_TP);
                  trade.PositionModify(_Symbol,sl,tp);
                 }
              }
           }

         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            if(PositionGetDouble(POSITION_PRICE_OPEN)>=Ask+(BULevel+BUPoint)*_Point)
              {
               if(PositionGetDouble(POSITION_PRICE_OPEN)<PositionGetDouble(POSITION_SL) || PositionGetDouble(POSITION_SL)==0)
                 {
                  sl=PositionGetDouble(POSITION_PRICE_OPEN)-BUPoint*_Point;
                  tp=PositionGetDouble(POSITION_TP);
                  trade.PositionModify(_Symbol,sl,tp);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- Копируем значения индикаторов
   CopyBuffer(WOHandle,0,0,3,WO);
   CopyBuffer(MAHandle,0,0,1,MA);

// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

//--- Стопы
   double stop=0,take=0;

//--- объявляем переменные типа boolean, они будут использоваться при проверке условий для покупки и продажи

   bool Buy=WO[2]>50 && WO[1]<50 && Ask>MA[0];
   bool Sell=WO[2]<50 && WO[1]>50 && Ask<MA[0];

   if(BULevel>0) BU();
//Нет позиции и сигнал на покупку
   if(PositionsTotal()<1 && Buy)
     {
      //--- Вычисляем стопы
      if(SL==0)stop=0; else stop=NormalizeDouble(Ask-SL*_Point,_Digits);
      if(TP==0)take=0; else take=NormalizeDouble(Ask+TP*_Point,_Digits);
      //--- Открываем ордер на покупку
      trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lot,Ask,stop,take);
      //--- Ставим виртуальные стопы
     }

//Нет позиции и сигнал на продажу
   if(PositionsTotal()<1 && Sell)
     {
      //--- Вычисляем стопы
      if(SL==0)stop=0; else stop=NormalizeDouble(Bid+SL*_Point,_Digits);
      if(TP==0)take=0; else take=NormalizeDouble(Bid-TP*_Point,_Digits);
      //--- Открываем ордер на продажу
      trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lot,Bid,stop,take);
     }

// Закрытие по сигналу
   if(PositionSelect(_Symbol))
     {
      // Открыта покупка
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         // Закрываем позицию бай
         if(Sell)trade.PositionClose(_Symbol);
        }

      // Открыта продажа
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         // Закрываем позицию селл
         if(Buy)trade.PositionClose(_Symbol);
        }
     }

   Comment("\n WO1: ",WO[1],"\n WO2: ",WO[2]);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 8 декабря 2016, 19:57
0
А где библиотека от индикатора?
#include <SmoothAlgorithms.mqh> 
avatar

AM2

  • 8 декабря 2016, 18:00
0
В статейке основа: mql.opentraders.ru/33787.html
Симлики здесь: mql.opentraders.ru/27577.html
avatar

AM2

  • 8 декабря 2016, 12:01
0
За копировщик я не возьмусь.
avatar

AM2

  • 8 декабря 2016, 07:38
0
Связь между папками с помощью симлинков делали?
avatar

AM2

  • 8 декабря 2016, 07:32
0
Сделаю чтобы трал работал только когда одна поза. Если 0 то трал отключен.
avatar

AM2

  • 8 декабря 2016, 07:30
0
Что то вроде:

Функция закрытия

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double lime= iCustom(NULL,0,IndName,2,Shift);
   double red = iCustom(NULL,0,IndName,3,Shift);
//---
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(red<1000)
                 {
                  CloseAll(0);
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(lime<1000)
                 {
                  CloseAll(1);
                 }
              }
           }
        }
     }
  }


Применение функции:
if(CountTrades()>0) ClosePos();


И плюс закрытие по типу ордера:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
avatar

AM2

  • 7 декабря 2016, 20:44
0
Если трал 300, начинает тянуть стоп при выходе в прибыль на это количество пунктов.
avatar

AM2

  • 7 декабря 2016, 20:36
0
Если заказ еще в силе начну делать.
avatar

AM2

  • 7 декабря 2016, 19:59