[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 75
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Неподскажите какой код нужно прописать, чтобы при закрытии сделки, следующая сделка могла открываться только на следующем баре??
Так, значит, вопрос вот какой: как зделка закрывается?? Стопом (это сложнее), или сами закрываем. Если сами закрываем, то намного проще.
Подскажите пожалуйста, как сделать так, чтобы свечи на графике цены окрашивались в зеленый, когда Awesome Oscillator и Acceleration/Deceleration Oscillator имеют зеленый цвет, в красный когда Awesome Oscillator и Acceleration/Deceleration Oscillator - красный цвет, а когда индикаторы разного цвета, чтобы свечи были серыми?
Свечки ни разу не красил, но ЭТОТ индюк ТОЧНО видел в базе. Правда месяца 4 назад. Поищи.
Так, значит, вопрос вот какой: как зделка закрывается?? Стопом (это сложнее), или сами закрываем. Если сами закрываем, то намного проще.
Сдеки закрываются по тейкпрофиту или стоплосу!!!
Вопрос.
у меня индюк прописывает котировку по инструменту примерно так - 2321.50000000
Как избавиться от лишних нулей?
Очень хорошо про написание экспертов здеся. http://www.vedikhin.ru/2006/06/expert-advisors-overview.html
И да простят меня боги Форекса, это же в вордовском формате .
Мну плз тоже подскажите .
Ограничения компилятора . Очень хочется зна об ограничениях по массивам ( кол-во массивов или общее кол-во элементов, или исчо что то например выделяемая память ), и по кол-ву глобальных переменных в смысле суперглобальных .
Всем привет
Решил я написать эксперт. Взял для него Стох. Пусть, думаю, только один ордер, только продает выше 80, а закрывает ниже 50. Вписал еще StopLoss, чтоб терять поменьше. Погонял, потестил. Эксперт вроде работает, только бывает, подряд StopLossОВ несколько берет. Решил я тогда после первого Lossа продажные условия менять, чтобы они ощутимо от первоначальных отличались. Для этого ввел польз функцию isCloseLastPosByStop, у Кima взял, понравилась. Если сработал Loss она сигналит и в журнал пишет, а после ее if(SSL==true) сигнала я задаю новые продажные условия. Написал, откомпилировал, запустил – работает, но также в некоторых местах берет подряд несколько LossО, чтоб он Стох. В силу своей малой грамотности в MQL4 не могу понять что не так. Поможите кто чем может….. сами мы не здешние…… А может кто то подскажет как идею реализовать другим способом. Заранее благодарю, место здесь хорошее, я ни разу без дельного совета еще не уходил….
#property copyright "Alex"
#property link "http://www.сайта.net"//---- input parameters
extern int MagicNamber=88881;
extern int K_per=30;
extern int D_per=8;
extern int Slow=10;
extern double Lots=1.0;
extern double StopLoss=300;
extern double SSL=0;
//+------------------------------------------------------------------+
int start(){
int
cnt=0,
ticket,
total;
double
StochK_0, // Значен. лнии К
StochD_1, // Значен. лнии D
SL=StopLoss;
isCloseLastPosByStop();
if (Bars<100)
{
Print("bars less than 100");
return(0);
}
StochK_0=iStochastic(NULL, 0, K_per,D_per,Slow,MODE_SMA,0,MODE_MAIN, 0); // K
StochD_1=iStochastic(NULL, 0, K_per,D_per,Slow,MODE_SMA,0,MODE_MAIN, 2); //D
total=OrdersTotal();
if(total<1)
if ((StochK_0>StochD_1) && StochD_1 > 80) // условие продажи
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_SELL) // открыта кор позиция
SSL=isCloseLastPosByStop();
if(SSL==true)
{
Print("StopLoss");
}
total=OrdersTotal();
if(total<1)
if ((StochK_0<StochD_1) && StochK_0 < 50) // условие продажи если сработал стопЛосс
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_SELL) // открыта кор позиция
{
if(StochK_0>StochD_1 && StochD_1 < 50) // условие закрытия
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрываем позицию
return(0); // выходим
}}}}}}}
//___пользовательская фу-я
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, osl;
int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}}}}}}}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
osl=NormalizeDouble(OrderStopLoss(), dg);
if (ocp==osl) return(True);
}
return(False);
}
Вопрос.
у меня индюк прописывает котировку по инструменту примерно так - 2321.50000000
Как избавиться от лишних нулей?
Оператор DoubleToStr() поможет тебе.