Добрые люди, помогите советом. При тестировании советника не открываются сделки в журнале ошибка 3: неправильные параметры. Что я не так сделал с пользовательскими функциями?
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Prices_install(),3,0,0,NULL,MAGICNUMBER,0,clrGreen);
if(ticket>0)//проверка открытия позиции
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL ордер открыт:",OrderOpenPrice());
}
elsePrint("Ошибка открытия ордера SELL:",GetLastError());
}
return;
}
}
//+---------------------------------------------------------------------------+//| Условия модификации ордеров |//+---------------------------------------------------------------------------+if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
//--- длинная позиция открытаswitch(OrderType())
{
case OP_BUYSTOP:
if(NormalizeDouble(OrderOpenPrice()-Prices_install(),Digits)>0 && NormalizeDouble(Prices_install()-Bid,Digits)>0)
{
if(OrderModify(ticket,Prices_install(),0,0,0,clrBlue))
Print("Цена Price_BUY ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера BUYStop. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
case OP_SELLSTOP:
if(NormalizeDouble(Prices_install()-OrderOpenPrice(),Digits)>0 && NormalizeDouble(Ask-Prices_install(),Digits)>0)
{
if(OrderModify(ticket,Prices_install(),0,0,0,clrGreen))
Print("Цена Price_SELL ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера SELLStop. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
case OP_BUY:
if(NormalizeDouble(StopLosse_install()-OrderStopLoss(),Digits)>0 && NormalizeDouble(Ask-StopLosse_install(),Digits)>0)
{
if(OrderModify(ticket,OrderOpenPrice(),StopLosse_install(),0,0,clrBlue))
Print("Цена Price_BUY ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера BUY. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
case OP_SELL:
if(NormalizeDouble(OrderStopLoss()-StopLosse_install(),Digits)>0 && NormalizeDouble(StopLosse_install()-Bid,Digits)>0)
{
if(OrderModify(ticket,OrderOpenPrice(),StopLosse_install(),0,0,clrGreen))
Print("Цена Price_SELL ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера SELL. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
}
}
}
Sleep(5);
}
return;
}
//+------------------------------------------------------------------+double StopLosse_install()
{
double StopLoss=iSAR(NULL,PERIODs_short_term,Step,Maximum,1);
double StopLoss_install;
int StopLevel=(int)MarketInfo(Symbol(),MODE_STOPLEVEL); // Минимально допустимый уровень стоп-лосса/тейк-профита в пунктахint FreezeLevel=(int)MarketInfo(Symbol(),MODE_FREEZELEVEL);//Уровень заморозки ордеров в пунктахswitch(OrderType())
{
case0:
if(Bid-StopLoss>FreezeLevel)
{
if(Bid-StopLoss>=StopLevel)
StopLoss_install=NormalizeDouble(StopLoss,Digits);
if(Bid-StopLoss<StopLevel)
StopLoss_install=NormalizeDouble(StopLoss-StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
case1:
if(StopLoss-Ask>FreezeLevel)
{
if(StopLoss-Ask>=StopLevel)
StopLoss_install=NormalizeDouble(StopLoss,Digits);
if(StopLoss-Ask<StopLevel)
StopLoss_install=NormalizeDouble(StopLoss+StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
}
return(StopLoss_install);
}
//+------------------------------------------------------------------+double Prices_install()
{
double Price=iSAR(NULL,PERIODs_short_term,Step,Maximum,1);
double Price_install;
int StopLevel=(int)MarketInfo(Symbol(),MODE_STOPLEVEL); // Минимально допустимый уровень стоп-лосса/тейк-профита в пунктахint FreezeLevel=(int)MarketInfo(Symbol(),MODE_FREEZELEVEL);//Уровень заморозки ордеров в пунктахswitch(OrderType())
{
case4:
if(Price-Ask>FreezeLevel)
{
if(Price - Ask>=StopLevel)
Price_install=NormalizeDouble(Price,Digits);
if(Price - Ask<StopLevel)
Price_install=NormalizeDouble(Price+StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
case5:
if(Bid-Price>FreezeLevel)
{
if(Bid-Price>=StopLevel)
Price_install=NormalizeDouble(Price,Digits);
if(Bid-Price<StopLevel)
Price_install=NormalizeDouble(Price+StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
}
return(Price_install);
}
//+------------------------------------------------------------------+
Какие нюансы использования циклов в принятии торговых решений советником? Грубо говоря, если есть штук 20 уровней поддержки/сопротивления будет ли корректно работать советник если проверки на все уровни проводить через for ? Или лучше брать ближайшие и через if делать?
Доброго времени суток коллеги. подскажите пож. как сделать так что бы на мт4/5 барах не показывал открытия. Показывал только закрытия бара. типо как на скыне.
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность реализации...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Добрые люди, помогите советом. При тестировании советника не открываются сделки в журнале ошибка 3: неправильные параметры. Что я не так сделал с пользовательскими функциями?
Добрый день помогите по параболику пожалуйста! хочу с советнике сделать логику как изображена на картинке:
код пишу так:
посмотрите может я ошибок наделал каких? ибо он дает сбои....заранее благодарен!
Какой депозит должен быть чтобы снимать прибыль 100долларов в день?
100 баксов в день и чтобы просадка была 0 ?
Какой депозит должен быть чтобы снимать прибыль 100долларов в день?
Депозит 10 долларов! Получайте 1000% в день и снимайте прибыль 100 долларов в день!
Как на МТ4 открыть Демо счет по логину и паролю инвестора?
сервер еще нужен
Доброго времени суток коллеги. подскажите пож. как сделать так что бы на мт4/5 барах не показывал открытия. Показывал только закрытия бара. типо как на скыне.