0
Если не получится, я попробую :) 
avatar

AM2

  • 24 февраля 2017, 19:00
0
Вот здесь кройте нужный ордер:

if(OrderSelect(1,SELECT_BY_POS,MODE_TRADES))
avatar

AM2

  • 24 февраля 2017, 12:48
0
Так пробовали?
input double Lots=0.01;
void  CloseOrder(double lot)
{
//...
}
if(CountTrades()>2) CloseOrder(Lots);
avatar

AM2

  • 24 февраля 2017, 11:23
0
Так примерно :) 



//+------------------------------------------------------------------+
//|                                                      DateLot.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

input int Days=15;
input double Lot=0.1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double DaysProfit(datetime date=0)
  {
   double profit=0;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderType()<2)
           {
            if(date<OrderCloseTime()) profit+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double dprofit=DaysProfit(TimeCurrent()-3600*24*Days);
   double pr=NormalizeDouble(dprofit*100/AccountBalance(),2);
   double lot=Lot+(pr*Lot)/100;

   Comment("\n Profit: ",dprofit,
           "\n Procent Profit: ",pr,
           "\n Lot: ",Lot,
           "\n New Lot: ",lot);
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 24 февраля 2017, 05:00
+1
И еще, для чего это нужно, не проще считать лот от баланса? Получится также примерно.
avatar

AM2

  • 23 февраля 2017, 22:12
0
С этим лотом советник торгует день (неделю, месяц выбирается пользователем)

В каком формате будете вводить дату?

Начал делать:

//+------------------------------------------------------------------+
//|                                                      DateLot.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

input string Date="12.01.2016";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetProfitFromDate(datetime date=0)
  {
   double profit=0;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderType()<2)
           {
            if(date<OrderCloseTime()) profit+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   Comment("\n Profit: ",GetProfitFromDate(StringToTime(Date)));
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 23 февраля 2017, 21:57
0
Сколько значений делать в диалоге?
avatar

AM2

  • 23 февраля 2017, 09:37
+1
Вот набросок, который удалит все линии кроме той цена которой введена в настройках:


//+------------------------------------------------------------------+
//|                                                   DeleteLine.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

input double Price=1.06282;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  double pr=0;
   for(int i=ObjectsTotal()-1;i>=0;i--)
     {
      pr=NormalizeDouble(ObjectGetDouble(0,ObjectName(i),OBJPROP_PRICE),Digits);
      if(pr!=Price) ObjectDelete(0,ObjectName(i));
     }

   Comment(NormalizeDouble(ObjectGetDouble(0,ObjectName(0),OBJPROP_PRICE),Digits));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 22 февраля 2017, 16:54
0
Какое количество линий нужно будет оставлять?
avatar

AM2

  • 22 февраля 2017, 16:31
+1
Вот эта версия уже показывает какой то результат:




//+------------------------------------------------------------------+
//|                                                   DeltaOrder.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

input int Delta=200;
input double KLot=2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct OrdersInfo
  {
   int               tick;                // тикет
   string            symb;                // символ
   int               cmd;                 // торговая операция
   double            oop;                 // цена открытия
   double            lot;                 // количество лотов
   bool              otl;                 // есть отложка
  };

OrdersInfo ord[1];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()<2)
           {
            ord[i].tick=OrderTicket();
            ord[i].symb=OrderSymbol();
            ord[i].cmd=OrderType();
            ord[i].oop=OrderOpenPrice();
            ord[i].lot=OrderLots();
            ord[0].otl=false;
           }
        }
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int r=0;
   ArrayResize(ord,OrdersTotal(),1);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()<2)
           {
            if(!ord[i].otl)
              {
               if(OrderType()==0)  r=OrderSend(NULL,5,OrderLots()*KLot,ord[0].oop-Delta*Point,3,0,0,"",0,0,Green);
               if(OrderType()==1)  r=OrderSend(NULL,4,OrderLots()*KLot,ord[0].oop+Delta*Point,3,0,0,"",0,0,Green);
               ord[i].otl=true;
              }
           }
        }
     }

   Comment("\n OOP: ",ord[0].oop,
           "\n Array Size: ",ArraySize(ord),
           "\n ORD: ",ord[0].otl);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 22 февраля 2017, 07:25
0
Завтра буду смотреть.
avatar

AM2

  • 21 февраля 2017, 20:31
+2
Я часа 2 с ним просидел. Даже простейший вариант реализовать не удалось. Обращайтесь к платному.

Вот мой набросок нерабочий:


//+------------------------------------------------------------------+
//|                                                   DeltaOrder.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

input int Delta=200;
input double KLot=2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct OrdersInfo
  {
   int               tick;                // тикет
   string            symb;                // символ
   int               cmd;                 // торговая операция
   double            oop;                 // цена открытия
   double            lot;                 // количество лотов
   bool              otl;                 // есть отложка
  };

OrdersInfo ord[1];
//+------------------------------------------------------------------+
//| 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;

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

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

   r=OrderSend(NULL,type,0.2,NormalizeDouble(price,Digits),0,0,0,"",0,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   ArrayResize(ord,OrdersTotal(),1);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()<2)
           {
            ord[i].tick=OrderTicket();
            ord[i].symb=OrderSymbol();
            ord[i].cmd=OrderType();
            ord[i].oop=OrderOpenPrice();
            ord[i].lot=OrderLots();
            ord[i].otl=false;
            if(!ord[i].otl)
              {
               //int r=OrderSend(NULL,OP_BUYSTOP,0.2,ord[0].oop+Delta*Point,3,0,0,"",0,0,Green);
               ord[0].otl=true;
              }
           }
        }
     }
     
   DelOrder();
   
   Comment("\n OOP: ",ord[0].oop,
           "\n Array Size: ",ArraySize(ord),
           "\n ORD: ",ord[0].otl);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 21 февраля 2017, 20:05
0
Сделал по следующему ТЗ:

Если цена прошла Prohod пунктов от экстремума предыдущего дня или текущего дня(параметр Shift), ставится отложка на пробой, на расстоянии от цены Delta.

www.opentraders.ru/downloads/1490/



avatar

AM2

  • 20 февраля 2017, 22:34
0
То что можно было быстро сделать сделал. Далее к платному.
avatar

AM2

  • 20 февраля 2017, 22:32
0
Платно не делаю.
avatar

AM2

  • 20 февраля 2017, 22:25
0
т.е. я должен составить? :) 
avatar

AM2

  • 20 февраля 2017, 20:21
0
Без четкого и понятного ТЗ никуда.
avatar

AM2

  • 20 февраля 2017, 19:22
0
avatar

AM2

  • 20 февраля 2017, 19:01