Странное творится теперь с советником. несрабатывает заложенное закрытие позиций. может быть открыто и действовать одновременно несколько позиций однотипных. И результат: все сливает по той же самой проблеме, правда в видоизмененном варианте!!??
Исправил, попробуйте.
externdoubleLots = 0.1;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intstart(){doubleP_up0,P_down0,P_up1,P_down1;
doublest_m1, st_s1, st_m2, st_s2,Pivot,ma_s1;
inti, cnt, ticket, total;
boolflag=true;
if(Bars<100){Print("bars less than 100");
return(0);
}// Проверяем стоит ли открыватьсяcnt=OrdersHistoryTotal()-1;
for(i=cnt;i>=0;i--){if(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))continue;
if(OrderOpenTime()>=Time[0]){// Time[0] - если позиция открывается на нулевом баре текущего символаflag=false;
break;
}}cnt=OrdersTotal()-1;
for(i=cnt;i>=0;i--){if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
if(OrderOpenTime()>=Time[0]){// Time[0] - если позиция открывается на нулевом баре текущего символаflag=false;
break;
}}//-----------------------------------------------P_up0=iCustom(0,0,"Ценовой канал",11,0,0);
P_down0=iCustom(0,0,"Ценовой канал",11,1,0);
P_up1=iCustom(0,0,"Ценовой канал",11,0,1);
P_down1=iCustom(0,0,"Ценовой канал",11,1,1);
st_m1=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_MAIN,1);
st_s1=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,1);
st_m2=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_MAIN,2);
st_s2=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,2);
Pivot=iCustom(0,0,"Pivot",0,1);
ma_s1=iMA(0,0,4,0,MODE_SMA,PRICE_CLOSE,1);
//задали все данные // Проверка свободной маржиif(AccountFreeMargin()<(1000*Lots)){Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}total=OrdersTotal();
// Условие открытие позиции BUYif(st_m2>st_s2&&st_m1>st_s1&&st_m2<25&&Pivot<ma_s1){if((total>0) || (!flag))return(0);
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Green);
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Alert("Покупка: ",OrderOpenPrice());
}elseAlert("ошибка:по цене ",OrderOpenPrice());
return(0);
}// Условие открытие позиции SELLif(st_m2<st_s2&&st_m1<st_s1&&st_m2>75&&Pivot>ma_s1){if((total>0) || (!flag))return(0);
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red);
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Alert("Покупка: ",OrderOpenPrice());
}elseAlert("ошибка:по цене ",OrderOpenPrice());
return(0);
}for(i=cnt;i>=0;i--){OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()){if(OrderType()==OP_BUY){// длинная позиция открыта// условие закрытие длинной позицииif(P_down1>P_down0){OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}}else{// условие закрытия короткой позицииif(P_up1<P_up0){OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}}}}return(0);
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Я тут нашел вариант кода.
как его можно вставить в мой советник????????????
Странное творится теперь с советником. несрабатывает заложенное закрытие позиций. может быть открыто и действовать одновременно несколько позиций однотипных. И результат: все сливает по той же самой проблеме, правда в видоизмененном варианте!!??
Исправил, попробуйте.
Здравствуйте.
При программирование нейронной сети столкнулся со следующей проблемой.
Имеется массив:
При тестирование заместо 4 я получаю 0, такая же штука и в двумерном массиве, что делать?
И пользуясь случаем задам второй вопрос: как я понял в mql4 нельзя задать конкретный диапазон присваиванию переменной случайных чисел ?
В Delphi это выглядит так
Randomize;
i:=Random(10); // тот самый диапозон от 0 до 10
..Имеется массив:
При тестирование заместо 4 я получаю 0, такая же штука и в двумерном массиве, что делать?
С массивом все просто, Вы определили размерность [3], а вызываете четвертую, отсутствующую ячейку.
напишите double X[4]; и все заработает.
С массивом все просто, Вы определили размерность [3], а вызываете четвертую, отсутствующую ячейку.
напишите double X[4]; и все заработает.
Спасибо попробую, а как на счёт рандом ?
А если будет двумерный массив, матрица 4 на 9 и каждому элементу присвоить значение 0.1, это будет примерно так?
А если будет двумерный массив, матрица 4 на 9 и каждому элементу присвоить значение 0.1, это будет примерно так?
Должно работать. Если не полениться и вывести в коммент всю матрицу построчно, то наглядно увидите результат.
Кстати, можно коммент сделать функцией и пользоваться для проверки содержания массива.
А насчет рандома - пас. Я вообще, просто мимо проходил и ошибку увидел. :))
Спасибо попробую, а как на счёт рандом ?
А если будет двумерный массив, матрица 4 на 9 и каждому элементу присвоить значение 0.1, это будет примерно так?
Можно использовать
А если будет двумерный массив, матрица 4 на 9 и каждому элементу присвоить значение 0.1, это будет примерно так?
Работать будет, но правильнее писать так: