Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Зачем только вы сделали закрытие вперемежку с трейлингом. Неудобно же...
Разделите трал и блок закрытия
Попробуйте вот так .
А если ретурн отменили он же вроде будет адекватно закрывать ? ( если 2 ордера надо закрыть одновременно ).
как я понял.
писал на скорую руку.
а хороших советников с понятным кодом мало ((((
а этот (1й вариант) болие мение понимаю и над ним и эксперементирую.
а вот из-за этого ретурна похоже и встрял в депрес на 2 дня.
Зачем только вы сделали закрытие вперемежку с трейлингом. Неудобно же...
Разделите трал и блок закрытия. В трейлинге return(0); нужно оставить.
Зачем только вы сделали закрытие вперемежку с трейлингом. Неудобно же...
Разделите трал и блок закрытия. В трейлинге return(0); нужно оставить.
тогда где эт ретурн нужно в коже вырубать ( в первом коде ) ?
ё маё. ну прям маленькое дитё ((((((((((((((((((((((((((((((((((((((((((((
#property copyright "****"
#property link "****"
//---- input parameters
extern int TakeProfit = 1300;
extern int StopLoss = 30;
extern int TrailingStop = 270;
extern double Lots = 0.1;
extern int JawsPeriod=13;
extern int JawsShift=8;
extern int TeethPeriod=8;
extern int TeethShift=5;
extern int LipsPeriod=5;
extern int LipsShift=3;
extern int Спим=36000000;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (Volume[0] > 1) return(0);
//----
// Объявляем переменные
int total, cnt;
double MA1,MA2,MA3,MA4,MA5,MA6;
int err;
// Вычисляем начальные параметры индикаторов для поиска условий входа
MA1 = iAlligator(NULL, 0, JawsPeriod, JawsShift, TeethPeriod, TeethShift, LipsPeriod, LipsShift, MODE_SMMA, PRICE_CLOSE, MODE_GATORLIPS, 1); // зелёная
MA2 = iAlligator(NULL, 0, JawsPeriod, JawsShift, TeethPeriod, TeethShift, LipsPeriod, LipsShift, MODE_SMMA, PRICE_CLOSE, MODE_GATORTEETH, 1); // красная линия
MA3 = iAlligator(NULL, 0, JawsPeriod, JawsShift, TeethPeriod, TeethShift, LipsPeriod, LipsShift, MODE_SMMA, PRICE_CLOSE, MODE_GATORTEETH, 2); // красная
MA4 = iAlligator(NULL, 0, JawsPeriod, JawsShift, TeethPeriod, TeethShift, LipsPeriod, LipsShift, MODE_SMMA, PRICE_CLOSE, MODE_GATORLIPS, 2); // зелёная
MA5 = iAlligator(NULL, 0, JawsPeriod, JawsShift, TeethPeriod, TeethShift, LipsPeriod, LipsShift, MODE_SMMA, PRICE_CLOSE, MODE_GATORJAW, 1); /// синия линия.
MA6 = iAlligator(NULL, 0, JawsPeriod, JawsShift, TeethPeriod, TeethShift, LipsPeriod, LipsShift, MODE_SMMA, PRICE_CLOSE, MODE_GATORJAW, 2); /// синия линия.
total=OrdersTotal();
// Проверка средств
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// Проверка условий для совершения сделки бай
if(MA1>MA5&&MA4<MA6)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Покупаем",16384,0,Green);
}
Sleep(Спим);
if(MA1<MA5&&MA4>MA6 )
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продаем",16385,0,Red);
}
Sleep(Спим);
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY)
{
if((MA1<MA2&&MA4>MA3&& OrderProfit( ) >=0))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
}
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop) // Bid - цена покупки
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
if(OrderType()==OP_SELL)
{
if(MA1>MA2&&MA4<MA3&& OrderProfit( ) >=0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // Ask - цена продажи
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
//---- return(0);
}
//+------------------------------------------------------------------+
Ткни пальцем в мою ошибку плиз
Трейлинг и выкинуть можно вообще.
Зачем только вы сделали закрытие вперемежку с трейлингом. Неудобно же...
Разделите трал и блок закрытия. В трейлинге return(0); нужно оставить.
Заменил код на вот так:
Sleep(Спим);
for ( int v = OrdersTotal() - 1; v >= 0; v -- ) {
if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() ) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY) {
if((MA1<MA2&&MA4>MA3&& OrderProfit( ) >=0)) {
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
// return(0); // выходим
if (OrderType() == OP_SELL) {
if(MA1>MA2&&MA4<MA3&& OrderProfit( ) >=0) {
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
// return(0); // выходим
} }
return(0);
}
}
}
}
}
Незнаю правильно или нет получилось но вроде компельнулось :-)
Пойду попробую на демосе.
СПАСИБО ОГРОМНОЕ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:-)
Перекачай. Исправил ошибку.
Уже твой вариант поставил на демо.
Надеюсь будет закрывать правильно.
Panzer, вот тебе более-менее корректно сделанная версия твоего эксперта. С закрытием. С тралом.
По ней можно нормально работать одновременно по нескольким парам (графикам).
Только для каждой пары в СВОЙСТВАХ НУЖНО ЗАДАТЬ СВОЙ Magic
Параметр Orders ограничивает число одновременно открытых позиций. (по умолч. =5)
Его и ставь на демо.