0
Из индикатора нельзя получить значения. Сделал расчет уровней в теле советника самостоятельно. Совпадает.



Сейчас можно добавить пару пунктов из ТЗ.
avatar

AM2

  • 12 октября 2015, 16:12
0
Основные параметры написания экспертов, общие для MQL4. Ключевым, для торговли Бинарными опционами, является параметр BO exp:60

ticket=OrderSend("EURUSDab",OP_BUY,1.00,Bid,3,0,0,"BO exp:900");


Данная строка указывает на то, что заключается контракт на Американский UP опцион, сумма инвестиции 1 USD, экспирация 15 минут (900 секунд).


У вас свои особенности при выставлении коммента. Нужна более подробная информация. Но по тому что дано по ссылке можно записать в коммент в настройки:

extern string Expiration = "BO exp:900"; 
avatar

AM2

  • 12 октября 2015, 15:50
0
Есть подобный индикатор. Разделяет сессии: www.opentraders.ru/downloads/835/
avatar

AM2

  • 12 октября 2015, 14:17
+1
В предоставленной ссылке только поисковый запрос, а я уже в который раз прошу ссылку на конкретный индикатор с которым мне предстоит работать.
avatar

AM2

  • 12 октября 2015, 10:23
0
Посмотрю завтра. Если с индикатора можно получить значения, сделаю сначала упрощенный вариант.
avatar

AM2

  • 11 октября 2015, 18:21
0
Мне было бы интересно сделать такой гридер-мультивалютник. Когда у вас будет такая возможность, разместите заказ в Столе заказов MQL. Я возьмусь сначала за усеченый вариант, часть ТЗ, потом можно будет что то добавить. Платно подобный советник будет стоить от 50$.
avatar

AM2

  • 11 октября 2015, 17:13
0
В этой связке предусмотрена автоторговля советником?
avatar

AM2

  • 11 октября 2015, 16:55
0
Дайте ссылку на терминал который качаете? И на описание торговых условий и подробностей выставления ордеров в МТ4 этого брокера?
avatar

AM2

  • 11 октября 2015, 13:51
+1
Думаю здесь получается равноценный обмен, идея заказчика и работа программиста.


Вот что «думают» по этому поводу "Библия" и "Коран"

если Ветхий Завет неуплату наемнику приравнивал убиению ближнего, Новый Завет тот же поступок приравнивает убиению Господа
avatar

AM2

  • 9 октября 2015, 17:07
+1
Шпильки пускаешь? :D 
avatar

AM2

  • 9 октября 2015, 14:26
0
В какую сторону обозначать пробой, сверху вниз или снизу вверх? И на какой свече считать значения на первой и текущей или на первой и второй?
avatar

AM2

  • 9 октября 2015, 12:29
0
Если в базе: www.opentraders.ru/downloads/ ничего не найдете похожего сделаю.
avatar

AM2

  • 8 октября 2015, 18:57
0
Надо будет посмотреть на досуге, что можно сделать или сама берись за вебмани :) 
avatar

AM2

  • 8 октября 2015, 18:51
0
Можно поставить 0 или сделать побольше пунктов.
avatar

AM2

  • 8 октября 2015, 12:25
0
Вот это условие не срабатывает чтобы я ни пытался:

if(CountTrades()==2)


Так работает удаляет тейк:
if(DelTP==1) DellTP();


А так ни в какую:


   if(CountTrades()==2)
     {
      if(DelTP==1) DellTP();
     }


Смотрите может у вас получится:


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

//--- Inputs
extern int    StopLoss       = 300;       // лось 
extern int    TakeProfit     = 500;       // язь
extern int    Delta          = 200;       // дельта
extern int    DelTP          = 1;         // 0-тейк не убирается 1-убирается
extern double Profit         = 100;       // профит в валюте
extern double Lots           = 0.1;       // лот
extern int    Slip           = 30;        // проскальзывание
extern int    Count          = 1;         // количество открываемых ордеров
extern int    Magic          = 123;       // магик

double Lot[10]={0.01,0.02,0.03,0.06,0.12,0.24,0.48,0.96,1.92,3.84};
double BuyStopPrice=0,SellStopPrice=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+  
int LastOrderType()
  {
   int type=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY)  type=1; //sell
         if(OrderType()==OP_SELL) type=2; //buy
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+  
void CloseAll()
  {
   bool cl=true;
   double pBid,pAsk;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            pBid=MarketInfo(OrderSymbol(),MODE_BID);
            pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
            if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),fND(pBid),Slip,Blue);
            if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),fND(pAsk),Slip,Red);
           }
        }
     }
  }
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
  {
   if(n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool sel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         if(OrderType()==OP_BUY || OrderType()==OP_SELL) profit+=OrderProfit();
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
        {
         if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
           {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
            if(OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket());
            if(OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealResult()
  {
   int result=0;
   if(OrdersHistoryTotal()==0)
     {
      result=0;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()>0)
        {
         result=1;//tp  
        }
      if(OrderProfit()<0)
        {
         result=2;//sl  
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DellTP()
  {
   bool mod;
   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(OrderTakeProfit()>0) mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,Yellow);
               return;
              }
            if(OrderType()==OP_SELL)
              {
               if(OrderTakeProfit()>0) mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,Yellow);
               return;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// торгуем
   int res=0,i=0;
   double tp=0,bid=0,ask=0,pr=0;

   bid=MarketInfo(Symbol(),MODE_BID);
   ask=MarketInfo(Symbol(),MODE_ASK);

   i=CountTrades();
// открытие первого ордера по условию
   if(CountTrades()<1)
     {
      //---- buy 
      if(Open[1]<Close[1] && Open[0]>Close[1])
        {
         tp=NormalizeDouble(ask+TakeProfit*Point,Digits);
         res=OrderSend(Symbol(),OP_BUY,Lot[i],NormalizeDouble(ask,Digits),Slip,0,tp,"",Magic,0,Blue);
         BuyStopPrice=ask;
         SellStopPrice=ask-Delta*Point;
         i++;
         return;
        }

      //---- sell   
      if(Open[1]>Close[1] && Open[0]<Close[1])
        {
         tp=NormalizeDouble(bid-TakeProfit*Point,Digits);
         res=OrderSend(Symbol(),OP_SELL,Lot[i],NormalizeDouble(bid,Digits),Slip,0,tp,"",Magic,0,Red);
         SellStopPrice=bid;
         BuyStopPrice=pr=bid+Delta*Point;
         i++;
         return;
        }
     }

// открытие последующих ордеров
   if(CountTrades()>0)
     {
      if(LastOrderType()==1)
        {
         pr=SellStopPrice;
         res=OrderSend(Symbol(),OP_SELLSTOP,Lot[i],NormalizeDouble(pr,Digits),Slip,0,0,"",Magic,0,Red);
         i++;
         return;
        }

      if(LastOrderType()==2)
        {
         pr=BuyStopPrice;
         res=OrderSend(Symbol(),OP_BUYSTOP,Lot[i],NormalizeDouble(pr,Digits),Slip,0,0,"",Magic,0,Blue);
         i++;
         return;
        }
     }
     
   if(CountTrades()==2)
     {
      if(DelTP==1) DellTP();
     }
     
   if(LastDealResult()==1)DelOrder();
   if(AllProfit()>=Profit) {CloseAll();DelOrder();}


   Comment("\n Profit: ",AllProfit(),
           "\n Last Order Type: ",LastOrderType(),
           "\n Count Trades: ",CountTrades());
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 8 октября 2015, 11:09
0
Результат за этот год интересный получился.
www.opentraders.ru/downloads/892/

avatar

AM2

  • 8 октября 2015, 10:14