Советник плохо работает коэффициент удваивания, во время работы постоянно слетает и возвращается к изначальному лоту торга т.е. 0.01 объема. И при компилировании вот такая ошибка вылазиет -> return value of 'OrderSend' should be checked
int X=0;
double S = 0.0000;
extern double lot=0.1;
extern double koef=1.5;
extern int SL=10;
extern int TP=10;
double dl;
double a;
int init()
{
a=lot;
return(0);
}
int deinit()
{
return(0);
}
int start()
{
S=Open[0];
Sleep(1000);
if(OrdersTotal() == 0 && X==1)
{
if (Close[0]>dl){lot=a;}
X=0;
}
if(OrdersTotal() == 0 && X==2)
{
if (Close[0]<dl){lot=a;}
X=0;
}
if (OrdersTotal() == 0 && Close[0]>S && Close[1]>Open[1])
{
dl=Close[0];
OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-SL*0.0001,Ask+TP*0.0001,"",14774,0,Blue);
lot=lot*koef;
X=1;
}
if(OrdersTotal() == 0 && Close[0]<S && Close[1]<Open[1])
{
dl=Close[0];
OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+SL*0.0001,Bid-TP*0.0001,"",14774,0,Red);
lot=lot*koef;
X=2;
}
return(0);
}
Лот нужно нормализовать, как минимум. тейки и стопы тоже. Слип можно выкинуть.
При новой инициализации он и будет постоянно слетать. Вам нужно каждый раз при открытии позиции увеличивать лот?
bool op_buy = OrderSend(Symbol(),OP_BUY,lot, NormalizeDouble(Ask,Digits()),3, NormalizeDouble(Ask-SL*Point(),Digits()), NormalizeDouble(Ask+TP*Point(),Digits()),"",14774,0,clrBlue);
Лот нужно нормализовать, как минимум. тейки и стопы тоже. Слип можно выкинуть.
При новой инициализации он и будет постоянно слетать. Вам нужно каждый раз при открытии позиции увеличивать лот?
У меня не получается, что я ни так сделал? Подскажите пожалуйста.
Подскажите пожалуйста. Как правельно воспользоваться вашим советом. Я не понимаю.
в редакторе нужно выделить не понятное слово и нажать клавишу F1
в редакторе нужно выделить не понятное слово и нажать клавишу F1
Благодарю за помощь, буду пробывать.
цены нужно нормализовать, и использовать размер пункта текущего инструмента в валюте котировки.
//+------------------------------------------------------------------+ //| ProjectName | //| Yuriy Tokman (YTG) | //| https://www.mql5.com/ru/users/satop/seller | //+------------------------------------------------------------------+ #property copyright "Yuriy Tokman (YTG)" #property link "https://www.mql5.com/ru/users/satop/seller" #property version "1.00" #property strict int X=0; double S = 0.0000; extern double lot=0.1; extern double koef=1.5; extern int SL=10; extern int TP=10; double dl; double a; bool op_pos = true; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { a=lot; return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { S=Open[0]; Sleep(1000); if(OrdersTotal() == 0 && X==1) { if(Close[0]>dl) { lot=a; } X=0; } if(OrdersTotal() == 0 && X==2) { if(Close[0]<dl) { lot=a; } X=0; } if(OrdersTotal() == 0 && Close[0]>S && Close[1]>Open[1]) { dl=Close[0]; op_pos = OrderSend(Symbol(),OP_BUY,lot, NormalizeDouble(Ask,Digits()),3, NormalizeDouble(Ask-SL*Point(),Digits()), NormalizeDouble(Ask+TP*Point(),Digits()),"",14774,0,clrBlue); if(!op_pos) Print((string(GetLastError()))); lot=lot*koef; X=1; } if(OrdersTotal() == 0 && Close[0]<S && Close[1]<Open[1]) { dl=Close[0]; op_pos = OrderSend(Symbol(),OP_BUY,lot, NormalizeDouble(Bid,Digits()),3, NormalizeDouble(Bid+SL*Point(),Digits()), NormalizeDouble(Bid-TP*Point(),Digits()),"",14774,0,clrBlue); if(!op_pos) Print((string(GetLastError()))); lot=lot*koef; X=2; } return(0); } //+------------------------------------------------------------------+
цены нужно нормализовать, и использовать размер пункта текущего инструмента в валюте котировки.
О боже, я попробую его в действие. Бесконечно вам благодарен!
вот это не правильно
lot=a;
lot=lot*koef;
lot - это внешняя переменная
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Советник плохо работает коэффициент удваивания, во время работы постоянно слетает и возвращается к изначальному лоту торга т.е. 0.01 объема. И при компилировании вот такая ошибка вылазиет -> return value of 'OrderSend' should be checked
int X=0;
double S = 0.0000;
extern double lot=0.1;
extern double koef=1.5;
extern int SL=10;
extern int TP=10;
double dl;
double a;
int init()
{
a=lot;
return(0);
}
int deinit()
{
return(0);
}
int start()
{
S=Open[0];
Sleep(1000);
if(OrdersTotal() == 0 && X==1)
{
if (Close[0]>dl){lot=a;}
X=0;
}
if(OrdersTotal() == 0 && X==2)
{
if (Close[0]<dl){lot=a;}
X=0;
}
if (OrdersTotal() == 0 && Close[0]>S && Close[1]>Open[1])
{
dl=Close[0];
OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-SL*0.0001,Ask+TP*0.0001,"",14774,0,Blue);
lot=lot*koef;
X=1;
}
if(OrdersTotal() == 0 && Close[0]<S && Close[1]<Open[1])
{
dl=Close[0];
OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+SL*0.0001,Bid-TP*0.0001,"",14774,0,Red);
lot=lot*koef;
X=2;
}
return(0);
}