Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Поправить советник

Андрей, добрый вечер!
Возможно внести изменения в ранее написанный вами советник, чтобы после закрытия ордера по tp либо sl, лот становился первоначальным, а остальное оставить без изменения.
Спасибо!!!
Mnogitel.mq4 (3 Kb)
  • +1
  • Просмотров: 2508
  • 1 сентября 2016, 22:14
  • PetrovMaxim
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник на индикаторах по ТЗ
Следующая запись в группе  
Добавить увеличение лота в советник
01 сентября 2016
02 сентября 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (8)

+
0
Не прикрепился.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 сентября 2016, 06:33
+
0
А как прикрепить, заново создать тему
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 2 сентября 2016, 08:44
+
0
Можно в базу залить или подождать когда поправят. Если я писал дайте ссылку в базе.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 сентября 2016, 08:56
+
0
www.opentraders.ru/downloads/1023/ я только разбил очередность открытия ордеров, мне важно чтобы не менять сам код.
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 2 сентября 2016, 09:11
+
0
Сделал:


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

//--- Inputs
extern int    StopLoss     = 15;
extern int    TakeProfit   = 60;
extern int    Step         = 10;
extern int    Slip         = 30;
extern int    Magic        = 123;
extern double Lots         = 0.1;
extern double KLot         = 5;
extern double MaxLot       = 5;

double Price=0,lot=Lots;
//+------------------------------------------------------------------+
//| 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=clrNONE;
   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);
     }

   if(AccountFreeMarginCheck(Symbol(),type,lot)<=0 || GetLastError()==134)
     {
      Print("Недостаточно средств!!!");
     }

   if(GetLastError()==131)
     {
      Print("Неправильный объем!!!");
     }

   if(lot>MaxLot) lot=Lots;
   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealResult()
  {
   int 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);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(LastDealResult()>0) lot=Lots;
//--- sell conditions
   if(Bid>Price+Step*Point)
     {
      PutOrder(0,Ask);
      Price=Bid;
      lot*=KLot;
     }

   if(Bid<Price-Step*Point)
     {
      PutOrder(1,Bid);
      Price=Bid;
      lot*=KLot;
     }
   Comment("\n Price: ",Price,"\n Lot: ",lot);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 сентября 2016, 09:54
+
0
Спасибо, Андрей, посмотрю!!!
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 2 сентября 2016, 10:01
+
0
Андрей, к сожалению советник работает не так как надо!
Мне нужно чтобы допустим открыт ордер на покупку с TP и SL. после закрытия его по TP открывается тот же ордер и тем же лотом. Если цена пошла против ордера через заданное количество ордеров открывается увеличенный ордер на продажу с заданным TP и SL и вот после закрытия двух ордеров один по SL второй по TP. Снова открывался ордер первоначальным лотом.
avatar

  7  PetrovMaxim Автор Сообщений: 119 - Максим

  • 6 сентября 2016, 21:36
+
0
чтобы после закрытия ордера по tp либо sl, лот становился первоначальным, а остальное оставить без изменения.

По первоначальному ТЗ все сделано, сейчас уже совсем другое ТЗ. Оформляйте новым топиком.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 7 сентября 2016, 08:00

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий