Adjustable MA — экспертный советник

easyway

Trader
Jan 22, 2011
2
0
12
Скажите пожалуйста почему эксперт не торгует лотом 0,01 как это исправить?
 

SteelKnight84

Trader
Nov 4, 2013
1
0
12
Скажите пожалуйста что нужно изменить в коде, чтобы советник в режиме мани-менеджмента использовал лоты с шагом 0.01?
У меня открыт микро-счет, но применять ММ к такому лоту советник не дает.
Спасибо.
 

Sulten

Newbie
Jan 26, 2015
1
0
2
Здравствуйте, не подскажете как сделать так чтобы сделка закрылась по пересечению двух 2 машек а не по тейк-профиту?

extern string _1_ = "Настройки МА.";
extern int period1 = 4; //период МА быстрой
extern int ma_shift1 = 0;//сдвиг МА быстрой
extern int period2 = 12; //период МА медленной
extern int ma_shift2 = 0;//сдвиг МА медленной
extern string _4_ = "Начальный лот ордера .";
extern double lott =0.1;//лот ордера
extern string _13_ = "Общие параметры советника.";
extern int slippage=10; //уровень допустимого реквота
extern int Mag=4340; //магическое число .

int tiketS=0, OP,OP1, tiketB=0,i;
double MA_Fast, MA_Slow;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Digits == 3 || Digits == 5){slippage *= 10;}//определение количества знаков.
CheckOP();OP1=OP;//предварительная установка параметров.
for( i=0; i<=OrdersTotal(); i++){//ищем тикеты открытых ордеров.
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderType()==OP_BUY && OrderSymbol()== Symbol() && OrderMagicNumber() == Mag)tiketB = OrderTicket();
if(OrderType()==OP_SELL && OrderSymbol()== Symbol() && OrderMagicNumber() == Mag)tiketS = OrderTicket();
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start()
{
// если быстрая скользящая больше медленной скользящей
if (CheckOP()==0&&tiketB==0)//ордера бай не должно быть, условие по МА появилось для бай.
{ // открываем ордер на покупку и удаляем ордер на продажу.
tiketB = OrderSend(Symbol(),OP_BUY ,lott,NormalizeDouble(Ask,Digits),slippage,0,0,"",Mag,0);
if(tiketS > 0 && OrderClose(tiketS,lott,NormalizeDouble(Ask,Digits),slippage))tiketS = 0;
} // если быстрая скользящая меньше медленной скользящей
if (CheckOP()==1&&tiketS==0)//ордера сел не должно быть, условие по МА появилось для сел.
{ // открываем ордер на продажу и удаляем ордер на покупку.
tiketS = OrderSend(Symbol(),OP_SELL,lott,NormalizeDouble(Bid,Digits),slippage,0,0,"",Mag,0);
if(tiketB > 0 && OrderClose(tiketB,lott,NormalizeDouble(Bid,Digits),slippage))tiketB = 0;
}
OP1=OP;//запоминаем появившиеся условие.
return;
}
//+------------------------------------------------------------------+
int CheckOP(){
 

genfed

Trader
Nov 28, 2012
10
0
17
Объясните, пожалуйста, какую функцию в советнике выполняет переменная MinDiff?
 

Enivid

Administrator
Staff member
Nov 30, 2008
18,530
1,355
144
Odesa
www.earnforex.com
Минимальная разница между быстрой и медленной скользящими средними, при котором пересечение считается совершившимся.
 

genfed

Trader
Nov 28, 2012
10
0
17
Благодарю за быстрый ответ. Еще один вопрос. Если я правильно понял, сделка открывается в момент достижения разности цены между быстрой и медленной МА значения MinDiff. Когда начинается проверка советником этой разности, до или после фактического пересечения МА?