Лента последних комментариев


0
Юмор такой <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; Это реакция на своё незнание ( для меня код это манускрипт )
avatar

Jora1973

  • 20 апреля 2017, 17:37
0
Юноша, вы здоровы?*think* 
avatar

Kashtan

  • 20 апреля 2017, 17:28
Закрытая группа  Комментарий в закрытой группе / Апофория  
:: комментарий доступен только участникам закрытой группы "Апофория" - Читать ::
avatar

Oxy

  • 20 апреля 2017, 15:47
Закрытая группа  Комментарий в закрытой группе / Апофория  
:: комментарий доступен только участникам закрытой группы "Апофория" - Читать ::
avatar

Oxy

  • 20 апреля 2017, 14:49
Закрытая группа  Комментарий в закрытой группе / Апофория  
:: комментарий доступен только участникам закрытой группы "Апофория" - Читать ::
avatar

Oxy

  • 20 апреля 2017, 14:40
+3
Просто не надо пытаться перебегать дорогу и вести себя как безумец. Пешеходу для того, чтобы выжить, надо знать правила = идти по обочине в нужном направлении. Поток машин будет проноситься мимо (а я об этом давно говорил), но пешеход может продолжать себе идти.
avatar

Bishop

  • 20 апреля 2017, 11:56
0
Мне еще долго ждать, как ни как паска уже прошла?
Может кто-то в состоянии и в адеквате собрать сов который бы вставлял разнонаправленные ордера?
avatar

Names

  • 20 апреля 2017, 11:55
0
Понятно. extern double Start = 1.1; // старт
это цена старт ордера. Типа линии(уровня) срабатывания.
<code>extern double Start      = 1.1;      // цена старт ордера</code>

Не сразу понял. Искал прежде всего старт по времени свечи.
Основной старт, по существу, нужен именно по заданному времени на открытии свечи // час и мин. начала торговли,
закрытие — // час и мин. окончания торговли.
К нему — задание направления старт-ордера Бай или Селл.

В начальной версии сов. AllCandle.mq4 и было:
<code>extern int    Type         = 0;        // 0-Buy,1-Sell
extern int    Try          = 5;        // количество попыток выставить ордер</code>


Работа от уровней цены — это как доп. опция, для тестов по такому принципу.
Так, задав цену старта — работает и в Бай, и в Селл.

Дополнить бы, так же, старт по времени // в час и мин. начала торговли — на открытии свечи
с локом на закрытие — // час и мин. окончания торговли — на открытии свечи за крайней
И будет полный комплект, то, что надо.
*good* 

***
ЗЫ Видимо, как не программист, подумал, что будет легче дополнить тот советник.
М.б. лучше было давать ТЗ «с чистого листа»,
типа, как в комменте выше: zakaz.opentraders.ru/38438.html#comment130002
*???* 
avatar

preasto

  • 20 апреля 2017, 09:43
+1
Если вы внимательно почитаете последний комментарий от AM2, в котором код советника, то там написано, что такое «старт».
avatar

Oxy

  • 20 апреля 2017, 00:58
0
Благодарю.
Что значит 1.1 в extern double Start = 1.1; // старт? Какие ещё варианты?

LockLoss = 3000; // убыток когда ставим лок — по времени окончания работы Лок тоже ставится?

Сов. будет работать на ТФ который установлен в окне с ним?

Пока проверил только в тестере, почему-то открывает одни Селлы — при Start = 1.1;.
при Start = 0; — одни Баи
Причём и выше, и ниже старт. ордера. Проверял и на Н1 и на меньших ТФ.
avatar

preasto

  • 19 апреля 2017, 23:37
0
если не выйдет пойму)
avatar

cardon

  • 19 апреля 2017, 22:12
+1
что тут так сложно с точки зрения кодинга

Вы программист чтобы оценить сложность?

алгоритм весьма простой

На основе чего вы сделали такие выводы?

Отладил свой вариант. Цена старт ордера задается вручную, все остальное есть:




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

//--- Inputs
extern double Start      = 1.1;      // старт
extern double Lots       = 0.1;      // лот
extern double LockLoss   = 3000;     // убыток когда ставим лок
extern double Loss       = 3000;     // лось в рублях
extern double Profit     = 1000;     // язь в рублях
extern int StopLoss      = 2222;     // лось 
extern int TakeProfit    = 150;      // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;
bool trade=true;
//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   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()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CountLots(int type)
  {
   double lots=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) lots+=OrderLots();
           }
        }
     }
   return(lots);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   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))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   if(Bid<Start)
     {
      PutOrder(1,Bid);
     }

   if(Ask>Start)
     {
      PutOrder(0,Ask);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLockOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double lot=MathAbs(CountLots(0)-CountLots(1));

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0] && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin) && trade)
     {
      OpenPos();
      if((AllProfit()>=Profit && Profit>0) || (AllProfit()<-Loss && Loss>0)) CloseAll();
      t=Time[0];
     }
     
   if(!isTradeTimeInt(StartHour,StartMin,EndHour,EndMin) && trade)
     {
      if(AllProfit()<-LockLoss && LockLoss>0 && CountOrders(0)<CountOrders(1)) {PutLockOrder(0,Ask); trade=false;}
      if(AllProfit()<-LockLoss && LockLoss>0 && CountOrders(1)<CountOrders(0)) {PutLockOrder(1,Bid); trade=false;}
     }
     
   Comment("\n All Profit: ",AllProfit(),
           "\n Count Trades: ",CountTrades(),
           "\n Count Buy: ",CountOrders(0),
           "\n Count Sell: ",CountOrders(1),
           "\n Count Buy Lots: ",CountLots(0),
           "\n Count Sell Lots: ",CountLots(1));
  }
//+------------------------------------------------------------------+



avatar

AM2

  • 19 апреля 2017, 18:26
0
бишап, конкурс быки мегмеди собираетесь возобновлять?
Халявы охото)
avatar

Drughemp

  • 19 апреля 2017, 16:31
0
EUR/SGD: фундаментальный обзор и прогноз на ближайшее время.

Котировки по EUR/SGD продолжаются в рамках нисходящего тренда. ожидалось, что волатильность на рынке будет снижаться до получения результатов выборов во Франции, однако вчера премьер-министр Великобритании неожиданно заявила о проведении досрочных парламентских выборов. рынок отреагировал укреплением Фунта, что повлияло также и на стоимость EUR. Решение о досрочных выборах воспринято рынком позитивно т.к это позволит снять неопределенность в вопросе о выходе Британии из ЕС. По результатам выборов, Британия будет уверенно двигаться по направлению к выходу из ЕС или, в случае победы противников Brexit, окончательно оставит этот вопрос. Таким образом, инвесторы ожидают от нового парламента более четкий политический и экономический курс.
Сингапурский доллар оказался под значительным давлением со вчерашнего дня. Стабильная макроэкономическая статистика не смогла ничего изменить на фоне значительных политических новостей, которые прямо влияют на будущее ЕС.
На данный момент осцилляторы Stochastics и MACD единогласны в решении открывать сделки на продажу. После значительного скачка цен под влиянием сильного новостного фона, котировки могут продолжится в рамках нисходящего тренда. Уже сейчас котировки консолидируются и могут пойти вниз. Поэтому при ведении краткосрочной торговли, короткие сделки — лучшее решение. При среднесрочной торговле, лучше подождать несколько дней до начала выборов во Франции, по результатам которых, мы можем получить совсем другую стоимость Евро, в случае победы М. Ле Пен или наоборот, укрепить его на определенное время.

avatar

SuperForex

  • 19 апреля 2017, 14:55
0
Ну, и по логике… не думал, что тут так сложно с точки зрения кодинга,
алгоритм весьма простой:

1. В указанное время открывается старт-ордер указанной лотности и направления (Бай или Селл).
Допустим — Селл (как в тестере сейчас).
Советником фиксируется(«запоминается») цена открытия этого старт-ордера.

2. На открытии каждой новой свече открывается новый ордер:
— если рыночная цена при этом БОЛЬШЕ чем цена старт-ордера — то открывается БАЙ,
— если рыночная цена при этом МЕНЬШЕ чем цена старт-ордера — то открывается СЕЛЛ.

3. В заданное время (час и мин.окончания торговли)- ставится общий ЛОК.
т.е. ордер лотностью равной разнице лотностей всех БАЙ и СЕЛЛ ордеров открытых до этого, того направления, где этих ордеров меньше.
Независимо: лок положительный(в прибыли), или отрицательный (фиксирует убыток).
===
Всё.

avatar

preasto

  • 19 апреля 2017, 09:37
0
Андрей, а возможно сделать лок сразу тут, независимо от прибыли, просто по времени:
<code>extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли</code>

На этой свече, или на следующей после неё?

Независимо, какой результат по прибыли — поставить ордер балансирующий по лотности суммы всех Бай и Селл ордеров, лотностью равной разнице их всех лотностей.
avatar

preasto

  • 19 апреля 2017, 09:15
Начать торговлю с Альпари