kasparsvas16

 
Уровень 8

  Торгую в компаниях:


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

Рейтинг 2093



РЕКОМЕНДУЮ



Прошу исправить проблему в советнике.

Прошу исправить проблему в советнике.
В советнике проблема с Buy Stop Sell Stop

zakaz.opentraders.ru/72471.html

1) На живой торговле, советник открывает только Селл Стоп, Бай Стоп не открывает. В тестере такого нет.
2) На живой торговле советник на каждом тике тоскает за собой Селл Стоп, Таким образом некогда его не достигает


1) На живой торговле, советник открывает только Селл Стоп, Бай Стоп не открывает. В тестере такого нет.
2) На живой торговле советник на каждом тике тоскает за собой Селл Стоп, Таким образом некогда его не достигает

Надо исправить оба пункта.
1) Чтобы отрывал и селл стоп и бай стоп.
2) Чтобы советник не менял расположение селл стоп постаянно на каждом тике, а выставлял фиксированно или какимто другим образом
Он на каждом тике модифицирует, так он никогда не может достигнуть селл стоп, и получается что от стратегии смысла вобще нет.
Плюс у меня ДЦ заблокировали аккаунт из-за гиперактивности советника.
  • 0
  • Просмотров: 1109
  • 22 марта 2022, 14:12
  • kasparsvas16
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Индикатор разметки диапазона сетки
Следующая запись в группе  
Информационный советник
22 марта 2022
23 марта 2022

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

+
0
Вы с какими настройками запускаете советник на живой торговле?
avatar

  13  verta81 Сообщений: 357

  • 22 марта 2022, 14:48
+
0
extern double Lots = 0.00;
extern double MaxLot = 50;
extern double KLot = 1;
input int MM = 5; //MoneyMan
extern double Profit = 0;
extern double Procent = 0.1;
extern int StopLoss = 1550;
extern int TakeProfit = 850;
extern int TrailingStop = 1100;
extern int Step = 750;
extern int Delta = 550;
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 22 марта 2022, 14:51
+
0
В коде Андрея такого нет. Или я не тот файл смотрю?
Давайте весь Ваш код посмотрим
avatar

  13  verta81 Сообщений: 357

  • 22 марта 2022, 14:54
+
0
По Моему проблема в этой часте кода


void ModeOOP()
{
bool m;
double delta=0,oop=0,sl=0,tp=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_BUYSTOP)
{
delta=NormalizeDouble(OrderOpenPrice()-Bid,_Digits);
if(delta>Step*_Point)
{
oop=NormalizeDouble(Bid+Delta*_Point,_Digits);
//sl=NormalizeDouble(oop-StopLoss*_Point,_Digits);
//tp=NormalizeDouble(oop+TakeProfit*_Point,_Digits);
m=OrderModify(OrderTicket(),oop,sl,tp,0,Green);
return;
}
}

if(OrderType()==OP_SELLSTOP)
{
delta=NormalizeDouble(Bid-OrderOpenPrice(),_Digits);
if(delta>Step*_Point)
{
oop=NormalizeDouble(Bid-Delta*_Point,_Digits);
//sl=NormalizeDouble(oop+StopLoss*_Point,_Digits);
//tp=NormalizeDouble(oop-TakeProfit*_Point,_Digits);
m=OrderModify(OrderTicket(),oop,sl,tp,0,Tomato);
return;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1)
{
PutOrder(0,Ask);
PutOrder(1,Bid);
ModifyOrders();
}

if(FindLastBuyPrice()-Ask>=Step*_Point)
{
if(CountOrders(4)<1)
PutOrder(4,Bid+Delta*_Point);
ModifyOrders();
}

if(Bid-FindLastSellPrice()>=Step*_Point)
{
if(CountOrders(5)<1)
PutOrder(5,Bid-Delta*_Point);
ModifyOrders();
}

ModeOOP();

if(TrailingStop>0)
Trailing();

if(AllProfit()>Profit && Profit>0)
CloseAll();

double pro=NormalizeDouble(AllProfit()*100/AccountBalance(),2);

if(pro>Procent && Procent>0)
CloseAll();

Comment("\n Lot: ",Lot(),
"\n Trades: ",CountTrades(),
"\n Profit: ",AllProfit(),
"\n Procent: ",pro);
}
//+------------------------------------------------------------------+ 
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 22 марта 2022, 15:03
+
0

//+------------------------------------------------------------------+
//| XRay.mq4 |
//| Copyright 2018, AM2 |
//| <a href="http://www.forexsyatems.biz">www.forexsyatems.biz</a> |
//+------------------------------------------------------------------+
#property copyright «Copyright 2018, AM2»
#property link «<a href="http://www.forexsyatems.biz">www.forexsyatems.biz</a>»
#property version «1.00»
#property strict
//--- Inputs
extern double Lots = 0.1; // торговый объем ордера
extern double MaxLot = 50; // максимальный торговый объем
extern double Risk = 1; // риск
extern double Profit = 0; // профит
extern double Procent = 0.1; // процент
extern int StopLoss = 1550; // лось
extern int TakeProfit = 850; // язь
extern int TrailingStop = 1100; // трал
extern int Step = 750; // расстояние от последнего ордера
extern int Delta = 550; // расстояние от цены для установки ордера
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Trailing()
{
bool mod;
double all=0,count=0,sl=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)
{
all+=OrderOpenPrice()*OrderLots();
count+=OrderLots();
}
}
}
}

if(count>0)
all=NormalizeDouble(all/count,_Digits);

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(Bid-all>TrailingStop*_Point)
{
if(OrderStopLoss()<Bid-TrailingStop*_Point)
{
sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
if(OrderStopLoss()!=sl)
mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
}
}
}

if(OrderType()==OP_SELL)
{
if(all-Ask>TrailingStop*_Point)
{
if((OrderStopLoss()>(Ask+TrailingStop*_Point)) || (OrderStopLoss()==0))
{
sl=NormalizeDouble(Bid+TrailingStop*_Point,_Digits);
if(OrderStopLoss()!=sl)
mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double FindLastBuyPrice()
{
int oticket,ticketNumber=0;
double oprice=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
oticket=OrderTicket();
if(oticket>ticketNumber)
{
ticketNumber=oticket;
oprice=OrderOpenPrice();
}
}
}
}
return(oprice);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double FindLastSellPrice()
{
int oticket,ticketNumber=0;
double oprice=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
oticket=OrderTicket();
if(oticket>ticketNumber)
{
ticketNumber=oticket;
oprice=OrderOpenPrice();
}
}
}
}
return(oprice);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ModifyOrders()
{
double all=0,count=0,sl=0,tp=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)
{
all+=OrderOpenPrice()*OrderLots();
count+=OrderLots();
}
}
}
}
if(count>0)
all=NormalizeDouble(all/count,_Digits);

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)
{
tp=NormalizeDouble(all+TakeProfit*_Point,_Digits);
sl=NormalizeDouble(all-StopLoss*_Point,_Digits);
if(OrderTakeProfit()!=tp || OrderStopLoss()!=sl)
bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);

}
else
if(OrderType()==OP_SELL)
{
tp=NormalizeDouble(all-TakeProfit*_Point,_Digits);
sl=NormalizeDouble(all+StopLoss*_Point,_Digits);
if(OrderTakeProfit()!=tp || OrderStopLoss()!=sl)
bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

Редактирован: 22 марта 2022, 15:01
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 22 марта 2022, 14:58
+
0

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot()
{
double lot=NormalizeDouble(AccountBalance()*Risk/100000,2);

if(lot>MaxLot)
lot=Lots;

return(lot);
}
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера |
//+------------------------------------------------------------------+
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 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);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу |
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ModeOOP()
{
bool m;
double delta=0,oop=0,sl=0,tp=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_BUYSTOP)
{
delta=NormalizeDouble(OrderOpenPrice()-Bid,_Digits);
if(delta>Step*_Point)
{
oop=NormalizeDouble(Bid+Delta*_Point,_Digits);
//sl=NormalizeDouble(oop-StopLoss*_Point,_Digits);
//tp=NormalizeDouble(oop+TakeProfit*_Point,_Digits);
m=OrderModify(OrderTicket(),oop,sl,tp,0,Green);
return;
}
}

if(OrderType()==OP_SELLSTOP)
{
delta=NormalizeDouble(Bid-OrderOpenPrice(),_Digits);
if(delta>Step*_Point)
{
oop=NormalizeDouble(Bid-Delta*_Point,_Digits);
//sl=NormalizeDouble(oop+StopLoss*_Point,_Digits);
//tp=NormalizeDouble(oop-TakeProfit*_Point,_Digits);
m=OrderModify(OrderTicket(),oop,sl,tp,0,Tomato);
return;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1)
{
PutOrder(0,Ask);
PutOrder(1,Bid);
ModifyOrders();
}

if(FindLastBuyPrice()-Ask>=Step*_Point)
{
if(CountOrders(4)<1)
PutOrder(4,Bid+Delta*_Point);
ModifyOrders();
}

if(Bid-FindLastSellPrice()>=Step*_Point)
{
if(CountOrders(5)<1)
PutOrder(5,Bid-Delta*_Point);
ModifyOrders();
}

ModeOOP();

if(TrailingStop>0)
Trailing();

if(AllProfit()>Profit && Profit>0)
CloseAll();

double pro=NormalizeDouble(AllProfit()*100/AccountBalance(),2);

if(pro>Procent && Procent>0)
CloseAll();

Comment("\n Lot: ",Lot(),
"\n Trades: ",CountTrades(),
"\n Profit: ",AllProfit(),
"\n Procent: ",pro);
}
//+------------------------------------------------------------------+

Редактирован: 22 марта 2022, 15:01
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 22 марта 2022, 14:59
+
0
на 25-е
avatar

  34  AM2 Сообщений: 15906 - Андрей

  • 22 марта 2022, 20:28
+
0
И ещё советник когда закрывает ордера по проценту профита, не удаляет сделки Стоп Селл и Стоп Бай
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 24 марта 2022, 17:37

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